Skip to content

Commit 58eb19c

Browse files
committed
to_verilog is updated: Rvalue and Lvalue are used for correct code generation by using Pyverilog/ast_code_generator.
1 parent 5ccdafd commit 58eb19c

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

veriloggen/to_verilog.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -542,14 +542,15 @@ def visit_Module(self, node):
542542
def visit_Parameter(self, node):
543543
name = node.name
544544
value = self.bind_visitor.visit(node.value)
545+
value = vast.Rvalue(value)
545546
width = None if node.width is None else self.visit(node.width)
546547
signed = node.signed
547548
return vast.Parameter(name, value, width, signed)
548549

549550
def visit_Localparam(self, node):
550551
name = node.name
551-
552552
value = self.bind_visitor.visit(node.value)
553+
value = vast.Rvalue(value)
553554
width = None if node.width is None else self.visit(node.width)
554555
signed = node.signed
555556
return vast.Localparam(name, value, width, signed)
@@ -642,7 +643,9 @@ def visit_Assign(self, node):
642643
raise TypeError("Assign expects Subst object.")
643644
left = self.bind_visitor.visit(node.statement.left)
644645
right = self.bind_visitor.visit(node.statement.right)
645-
return vast.Assign(left, right)
646+
lvalue = vast.Lvalue(left)
647+
rvalue = vast.Rvalue(right)
648+
return vast.Assign(lvalue, rvalue)
646649

647650
#---------------------------------------------------------------------------
648651
def visit_Initial(self, node):
@@ -728,8 +731,10 @@ def visit_Subst(self, node):
728731
right = self.visit(node.right)
729732
ldelay = self.visit(node.ldelay) if node.ldelay else None
730733
rdelay = self.visit(node.rdelay) if node.rdelay else None
731-
if node.blk: vast.BlockingSubstitution(left, right, ldelay, rdelay)
732-
return vast.NonblockingSubstitution(left, right, ldelay, rdelay)
734+
lvalue = vast.Lvalue(left)
735+
rvalue = vast.Rvalue(right)
736+
if node.blk: vast.BlockingSubstitution(lvalue, rvalue, ldelay, rdelay)
737+
return vast.NonblockingSubstitution(lvalue, rvalue, ldelay, rdelay)
733738

734739
#-------------------------------------------------------------------------------
735740
class VerilogBlockingVisitor(VerilogCommonVisitor):
@@ -738,7 +743,9 @@ def visit_Subst(self, node):
738743
right = self.visit(node.right)
739744
ldelay = vast.DelayStatement(self.visit(node.ldelay)) if node.ldelay else None
740745
rdelay = vast.DelayStatement(self.visit(node.rdelay)) if node.rdelay else None
741-
return vast.BlockingSubstitution(left, right, ldelay, rdelay)
746+
lvalue = vast.Lvalue(left)
747+
rvalue = vast.Rvalue(right)
748+
return vast.BlockingSubstitution(lvalue, rvalue, ldelay, rdelay)
742749

743750
def visit_Forever(self, node):
744751
statement = self._optimize_block(

0 commit comments

Comments
 (0)