breakout of register collection and compare
authorklehman <klehman9@comcast.net>
Tue, 7 Sep 2021 21:15:42 +0000 (17:15 -0400)
committerklehman <klehman9@comcast.net>
Tue, 7 Sep 2021 21:15:42 +0000 (17:15 -0400)
src/soc/simple/test/test_core.py

index 0b0f3a3624feabdf9900502ef25b587222925280..f7da3df123a7e52c4d06de0ac3da208588a27bde 100644 (file)
@@ -149,29 +149,12 @@ def setup_regs(pdecode2, core, test):
 
 
 def check_regs(dut, sim, core, test, code):
-    # int regs
-    # TODO, split this out into "core-register-getter" function
-    intregs = []
-    for i in range(32):
-        if core.regs.int.unary:
-            rval = yield core.regs.int.regs[i].reg
-        else:
-            rval = yield core.regs.int.memory._array[i]
-        intregs.append(rval)
-    print("core int regs", list(map(hex, intregs)))
 
-    # TODO, split this out into "sim-register-getter" function
-    simregs = []
-    for i in range(32):
-        simregs.append(sim.gpr[i].asint())
-    print("sim int regs", list(map(hex, simregs)))
+    # Get regs and compare
+    intregs = get_core_hdl_regs(dut, sim, core, test, code)
+    simregs = get_sim_regs(dut, sim, core, test, code)
+    compare_core_sim_regs(dut,simregs,intregs,code)
 
-    # TODO, split this out into "compare-sim-regs-against-core-regs" function
-    for i in range(32):
-        simregval = simregs[i]
-        dut.assertEqual(simregval, intregs[i],
-                        "int reg %d not equal %s. got %x expected %x" % \
-                            (i, repr(code), simregval, intregs[i]))
 
     # TODO: exactly the same thing as above, except with CRs
 
@@ -224,6 +207,34 @@ def check_regs(dut, sim, core, test, code):
 
     # TODO: exactly the same thing with SPRs (later)
 
+def get_core_hdl_regs(dut, sim, core, test, code):
+    # int regs
+    # TODO, split this out into "core-register-getter" function
+    intregs = []
+    for i in range(32):
+        if core.regs.int.unary:
+            rval = yield core.regs.int.regs[i].reg
+        else:
+            rval = yield core.regs.int.memory._array[i]
+        intregs.append(rval)
+    print("core int regs", list(map(hex, intregs)))
+    return intregs
+
+def get_sim_regs(dut, sim, core, test, code):
+    # int regs
+    # TODO, split this out into "core-register-getter" function
+    simregs = []
+    for i in range(32):
+        simregval = sim.gpr[i].asint()
+        simregs.append(simregval)
+    print("sim int regs", list(map(hex, simregs)))
+    return simregs
+
+def compare_core_sim_regs(dut,regsim,regcore, code):
+    for i, (regsim, regcore) in enumerate(zip(regsim, regcore)):
+        dut.assertEqual(regsim, regcore,
+                        "int reg %d not equal %s. got %x expected %x" % \
+                            (i, repr(code), regsim, regcore))
 
 def wait_for_busy_hi(cu):
     while True: