Skip to content

Commit 5701a9a

Browse files
committed
Preliminary support for SystemVerilog logic,always_ff,always_comb
1 parent 07c7f0a commit 5701a9a

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

pyverilog/vparser/ast.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,12 @@ def children(self):
458458
if self.statement: nodelist.append(self.statement)
459459
return tuple(nodelist)
460460

461+
class AlwaysFF(Always):
462+
pass
463+
464+
class AlwaysComb(Always):
465+
pass
466+
461467
class SensList(Node):
462468
attr_names = ()
463469
def __init__(self, list, lineno=0):

pyverilog/vparser/lexer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ def token(self):
4343
keywords = (
4444
'MODULE', 'ENDMODULE', 'BEGIN', 'END', 'GENERATE', 'ENDGENERATE', 'GENVAR',
4545
'FUNCTION', 'ENDFUNCTION', 'TASK', 'ENDTASK',
46-
'INPUT', 'INOUT', 'OUTPUT', 'TRI', 'REG', 'WIRE', 'INTEGER', 'REAL', 'SIGNED',
46+
'INPUT', 'INOUT', 'OUTPUT', 'TRI', 'REG', 'LOGIC', 'WIRE', 'INTEGER', 'REAL', 'SIGNED',
4747
'PARAMETER', 'LOCALPARAM', 'SUPPLY0', 'SUPPLY1',
48-
'ASSIGN', 'ALWAYS', 'SENS_OR', 'POSEDGE', 'NEGEDGE', 'INITIAL',
48+
'ASSIGN', 'ALWAYS', 'ALWAYS_FF', 'ALWAYS_COMB', 'SENS_OR', 'POSEDGE', 'NEGEDGE', 'INITIAL',
4949
'IF', 'ELSE', 'FOR', 'WHILE', 'CASE', 'CASEX', 'ENDCASE', 'DEFAULT',
5050
'WAIT', 'FOREVER', 'DISABLE', 'FORK', 'JOIN',
5151
)

pyverilog/vparser/parser.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,11 @@ def p_sigtype_reg(self, p):
299299
p[0] = p[1]
300300
p.set_lineno(0, p.lineno(1))
301301

302+
def p_sigtype_logic(self, p):
303+
'sigtype : LOGIC'
304+
p[0] = p[1]
305+
p.set_lineno(0, p.lineno(1))
306+
302307
def p_sigtype_wire(self, p):
303308
'sigtype : WIRE'
304309
p[0] = p[1]
@@ -458,6 +463,8 @@ def p_standard_item(self, p):
458463
| genvardecl
459464
| assignment
460465
| always
466+
| always_ff
467+
| always_comb
461468
| initial
462469
| instance
463470
| function
@@ -1255,6 +1262,14 @@ def p_always(self, p):
12551262
p[0] = Always(p[2], p[3], lineno=p.lineno(1))
12561263
p.set_lineno(0, p.lineno(1))
12571264

1265+
def p_always_ff(self, p):
1266+
'always_ff : ALWAYS_FF senslist always_statement'
1267+
p[0] = AlwaysFF(p[2], p[3], lineno=p.lineno(1))
1268+
1269+
def p_always_comb(self, p):
1270+
'always_comb : ALWAYS_COMB senslist always_statement'
1271+
p[0] = AlwaysComb(p[2], p[3], lineno=p.lineno(1))
1272+
12581273
def p_sens_egde_paren(self, p):
12591274
'senslist : AT LPAREN edgesigs RPAREN'
12601275
p[0] = SensList(p[3], lineno=p.lineno(1))

0 commit comments

Comments
 (0)