split out sim_util.write_il from sim_util.do_sim
authorJacob Lifshay <programmerjake@gmail.com>
Thu, 4 Aug 2022 05:40:52 +0000 (22:40 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Thu, 4 Aug 2022 05:40:52 +0000 (22:40 -0700)
src/nmutil/sim_util.py

index 373f4b9ca656d27de32bd2d9abf87d3db6d5b6e5..d5678c2475a1730f437aa3c5c64838e92470fcaf 100644 (file)
@@ -20,21 +20,26 @@ def hash_256(v):
     )
 
 
-@contextmanager
-def do_sim(test_case, dut, traces=(), ports=None):
+def write_il(test_case, dut, ports=()):
     # only elaborate once, cuz users' stupid code breaks if elaborating twice
     dut = Fragment.get(dut, platform=None)
     if "sync" not in dut.domains:
         dut.add_domains(ClockDomain("sync"))
-    sim = Simulator(dut)
     path = get_test_path(test_case, "sim_test_out")
     path.parent.mkdir(parents=True, exist_ok=True)
-    vcd_path = path.with_suffix(".vcd")
-    gtkw_path = path.with_suffix(".gtkw")
     il_path = path.with_suffix(".il")
+    il_path.write_text(convert(dut, ports=ports), encoding="utf-8")
+    return dut, path
+
+
+@contextmanager
+def do_sim(test_case, dut, traces=(), ports=None):
     if ports is None:
         ports = traces
-    il_path.write_text(convert(dut, ports=ports), encoding="utf-8")
+    dut, path = write_il(test_case, dut, ports)
+    sim = Simulator(dut)
+    vcd_path = path.with_suffix(".vcd")
+    gtkw_path = path.with_suffix(".gtkw")
     with sim.write_vcd(vcd_path.open("wt", encoding="utf-8"),
                        gtkw_path.open("wt", encoding="utf-8"),
                        traces=traces):