Skip to content

Commit d732dc0

Browse files
committed
Merge branch '1.1.4-rc'
2 parents a9b255f + 4556605 commit d732dc0

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

pyverilog/vparser/ast.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def show(self, buf=sys.stdout, offset=0, attrnames=False, showlineno=True):
3333
if self.attr_names:
3434
if attrnames:
3535
nvlist = [(n, getattr(self, n)) for n in self.attr_names]
36-
attrstr = ', '.join('%s=%s' & nv for nv in nvlist)
36+
attrstr = ', '.join('%s=%s' % (n, v) for (n, v) in nvlist)
3737
else:
3838
vlist = [getattr(self, n) for n in self.attr_names]
3939
attrstr = ', '.join('%s' % v for v in vlist)
@@ -734,6 +734,14 @@ def children(self):
734734
return tuple(nodelist)
735735

736736

737+
class AlwaysFF(Always):
738+
pass
739+
740+
741+
class AlwaysComb(Always):
742+
pass
743+
744+
737745
class SensList(Node):
738746
attr_names = ()
739747

@@ -875,6 +883,10 @@ class CasexStatement(CaseStatement):
875883
pass
876884

877885

886+
class UniqueCaseStatement(CaseStatement):
887+
pass
888+
889+
878890
class Case(Node):
879891
attr_names = ()
880892

pyverilog/vparser/lexer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ def token(self):
5353
keywords = (
5454
'MODULE', 'ENDMODULE', 'BEGIN', 'END', 'GENERATE', 'ENDGENERATE', 'GENVAR',
5555
'FUNCTION', 'ENDFUNCTION', 'TASK', 'ENDTASK',
56-
'INPUT', 'INOUT', 'OUTPUT', 'TRI', 'REG', 'WIRE', 'INTEGER', 'REAL', 'SIGNED',
56+
'INPUT', 'INOUT', 'OUTPUT', 'TRI', 'REG', 'LOGIC', 'WIRE', 'INTEGER', 'REAL', 'SIGNED',
5757
'PARAMETER', 'LOCALPARAM', 'SUPPLY0', 'SUPPLY1',
58-
'ASSIGN', 'ALWAYS', 'SENS_OR', 'POSEDGE', 'NEGEDGE', 'INITIAL',
59-
'IF', 'ELSE', 'FOR', 'WHILE', 'CASE', 'CASEX', 'ENDCASE', 'DEFAULT',
58+
'ASSIGN', 'ALWAYS', 'ALWAYS_FF', 'ALWAYS_COMB', 'SENS_OR', 'POSEDGE', 'NEGEDGE', 'INITIAL',
59+
'IF', 'ELSE', 'FOR', 'WHILE', 'CASE', 'CASEX', 'UNIQUE', 'ENDCASE', 'DEFAULT',
6060
'WAIT', 'FOREVER', 'DISABLE', 'FORK', 'JOIN',
6161
)
6262

pyverilog/vparser/parser.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ def p_moduledef(self, p):
122122
p[0] = ModuleDef(name=p[2], paramlist=p[3], portlist=p[4], items=p[5],
123123
default_nettype=self.get_default_nettype(), lineno=p.lineno(1))
124124
p.set_lineno(0, p.lineno(1))
125+
p[0].end_lineno = p.lineno(6)
125126

126127
def p_modulename(self, p):
127128
'modulename : ID'
@@ -306,6 +307,11 @@ def p_sigtype_reg(self, p):
306307
p[0] = p[1]
307308
p.set_lineno(0, p.lineno(1))
308309

310+
def p_sigtype_logic(self, p):
311+
'sigtype : LOGIC'
312+
p[0] = p[1]
313+
p.set_lineno(0, p.lineno(1))
314+
309315
def p_sigtype_wire(self, p):
310316
'sigtype : WIRE'
311317
p[0] = p[1]
@@ -465,6 +471,8 @@ def p_standard_item(self, p):
465471
| genvardecl
466472
| assignment
467473
| always
474+
| always_ff
475+
| always_comb
468476
| initial
469477
| instance
470478
| function
@@ -1262,6 +1270,14 @@ def p_always(self, p):
12621270
p[0] = Always(p[2], p[3], lineno=p.lineno(1))
12631271
p.set_lineno(0, p.lineno(1))
12641272

1273+
def p_always_ff(self, p):
1274+
'always_ff : ALWAYS_FF senslist always_statement'
1275+
p[0] = AlwaysFF(p[2], p[3], lineno=p.lineno(1))
1276+
1277+
def p_always_comb(self, p):
1278+
'always_comb : ALWAYS_COMB senslist always_statement'
1279+
p[0] = AlwaysComb(p[2], p[3], lineno=p.lineno(1))
1280+
12651281
def p_sens_egde_paren(self, p):
12661282
'senslist : AT LPAREN edgesigs RPAREN'
12671283
p[0] = SensList(p[3], lineno=p.lineno(1))
@@ -1364,6 +1380,7 @@ def p_basic_statement(self, p):
13641380
"""basic_statement : if_statement
13651381
| case_statement
13661382
| casex_statement
1383+
| unique_case_statement
13671384
| for_statement
13681385
| while_statement
13691386
| event_statement
@@ -1606,6 +1623,12 @@ def p_casex_statement(self, p):
16061623
p[0] = CasexStatement(p[3], p[5], lineno=p.lineno(1))
16071624
p.set_lineno(0, p.lineno(1))
16081625

1626+
def p_unique_case_statement(self, p):
1627+
'unique_case_statement : UNIQUE CASE LPAREN case_comp RPAREN casecontent_statements ENDCASE'
1628+
p[0] = UniqueCaseStatement(p[3], p[5], lineno=p.lineno(1))
1629+
p.set_lineno(0, p.lineno(1))
1630+
1631+
16091632
def p_case_comp(self, p):
16101633
'case_comp : expression'
16111634
p[0] = p[1]

0 commit comments

Comments
 (0)