gen/fhdl: add simulation Display, Finish support.
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Sun, 9 Dec 2018 08:45:17 +0000 (09:45 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Sun, 9 Dec 2018 08:45:17 +0000 (09:45 +0100)
In some simulation cases, it's easier to add debug traces directly in the code
than in the verilog/Migen testbench. This adds support for verilog $display in
Migen code.

Being able to terminate a simulation from the code is also useful, this also
add support for verilog $finish.

litex/gen/fhdl/verilog.py

index 9f3d1b6723212c1002bd47294b4c33a893e26f9d..773c763f14b78c7722fd9fc4fb410f5aa926552c 100644 (file)
@@ -155,6 +155,17 @@ def _printnode(ns, at, level, node, target_filter=None):
             return r
         else:
             return ""
+    elif isinstance(node, Display):
+        s = "\"" + node.s + "\""
+        for arg in node.args:
+            s += ", "
+            if isinstance(arg, Signal):
+                s += ns.get_name(arg)
+            else:
+                s += str(arg)
+        return "\t"*level + "$display(" + s + ");\n"
+    elif isinstance(node, Finish):
+        return "\t"*level + "$finish;\n"
     else:
         raise TypeError("Node of unrecognized type: "+str(type(node)))