check NIA on trap fu test
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 5 Jul 2020 10:52:20 +0000 (11:52 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 5 Jul 2020 10:52:20 +0000 (11:52 +0100)
src/soc/fu/test/common.py
src/soc/fu/trap/test/test_pipe_caller.py

index 1143e8958fc642ebbd7de80299b3c7f9f149e9ba..85ad2e14216a67705991c9f1cf0c7f7347b05d10 100644 (file)
@@ -37,6 +37,10 @@ class ALUHelpers:
     def get_sim_cia(res, sim, dec2):
         res['cia'] = sim.pc.CIA.value
 
+    # use this *after* the simulation has run a step (it returns CIA)
+    def get_sim_nia(res, sim, dec2):
+        res['nia'] = sim.pc.CIA.value
+
     def get_sim_msr(res, sim, dec2):
         res['msr'] = sim.msr.value
 
@@ -317,6 +321,13 @@ class ALUHelpers:
             print(f"expected {expected:x}, actual: {alu_out:x}")
             dut.assertEqual(expected, alu_out, msg)
 
+    def check_nia(dut, res, sim_o, msg):
+        if 'nia' in res:
+            expected = sim_o['nia']
+            alu_out = res['nia']
+            print(f"expected {expected:x}, actual: {alu_out:x}")
+            dut.assertEqual(expected, alu_out, msg)
+
     def check_cr_a(dut, res, sim_o, msg):
         if 'cr_a' in res:
             cr_expected = sim_o['cr_a']
index bc7d3c38f0d8e368348fb87f64d9fcbbc9f0bbc3..bfb19499f2267ec68505b3a895f9d70914599d8a 100644 (file)
@@ -213,7 +213,7 @@ class TestRunner(FHDLTestCase):
         yield from ALUHelpers.get_sim_int_o(sim_o, sim, dec2)
         yield from ALUHelpers.get_wr_fast_spr1(sim_o, sim, dec2)
         yield from ALUHelpers.get_wr_fast_spr2(sim_o, sim, dec2)
-        ALUHelpers.get_sim_cia(sim_o, sim, dec2)
+        ALUHelpers.get_sim_nia(sim_o, sim, dec2)
         ALUHelpers.get_sim_msr(sim_o, sim, dec2)
 
         print ("sim output", sim_o)
@@ -221,6 +221,7 @@ class TestRunner(FHDLTestCase):
         ALUHelpers.check_int_o(self, res, sim_o, code)
         ALUHelpers.check_fast_spr1(self, res, sim_o, code)
         ALUHelpers.check_fast_spr2(self, res, sim_o, code)
+        ALUHelpers.check_nia(self, res, sim_o, code)
 
 
 if __name__ == "__main__":