get trap compunit test working, adding bigendian and msr
[soc.git] / src / soc / fu / compunits / test / test_trap_compunit.py
1 import unittest
2 from soc.decoder.power_enums import (XER_bits, Function)
3
4 from soc.fu.trap.test.test_pipe_caller import get_cu_inputs
5 from soc.fu.trap.test.test_pipe_caller import TrapTestCase # creates the tests
6
7 from soc.fu.test.common import ALUHelpers
8 from soc.fu.compunits.compunits import TrapFunctionUnit
9 from soc.fu.compunits.test.test_compunit import TestRunner
10 from soc.config.endian import bigendian
11
12 class TrapTestRunner(TestRunner):
13 def __init__(self, test_data):
14 super().__init__(test_data, TrapFunctionUnit, self,
15 Function.TRAP, bigendian)
16
17 def get_cu_inputs(self, dec2, sim):
18 """naming (res) must conform to TrapFunctionUnit input regspec
19 """
20 res = yield from get_cu_inputs(dec2, sim)
21 return res
22
23 def check_cu_outputs(self, res, dec2, sim, alu, code):
24 """naming (res) must conform to TrapFunctionUnit output regspec
25 """
26
27 sim_o = {}
28
29 yield from ALUHelpers.get_sim_int_o(sim_o, sim, dec2)
30 yield from ALUHelpers.get_wr_fast_spr1(sim_o, sim, dec2)
31 yield from ALUHelpers.get_wr_fast_spr2(sim_o, sim, dec2)
32 ALUHelpers.get_sim_nia(sim_o, sim, dec2)
33 ALUHelpers.get_sim_msr(sim_o, sim, dec2)
34
35 print ("sim output", sim_o)
36
37 ALUHelpers.check_int_o(self, res, sim_o, code)
38 ALUHelpers.check_fast_spr1(self, res, sim_o, code)
39 ALUHelpers.check_fast_spr2(self, res, sim_o, code)
40 ALUHelpers.check_nia(self, res, sim_o, code)
41 ALUHelpers.check_msr(self, res, sim_o, code)
42
43
44 if __name__ == "__main__":
45 unittest.main(exit=False)
46 suite = unittest.TestSuite()
47 suite.addTest(TrapTestRunner(TrapTestCase.test_data))
48
49 runner = unittest.TextTestRunner()
50 runner.run(suite)