1 """simple core test, runs instructions from a TestMemory
5 * https://bugs.libre-soc.org/show_bug.cgi?id=363
8 # NOTE: to use cxxsim, export NMIGEN_SIM_MODE=cxxsim from the shell
9 # Also, check out the cxxsim nmigen branch, and latest yosys from git
14 # here is the logic which takes test cases and "executes" them.
15 # in this instance (TestRunner) its job is to instantiate both
16 # a Libre-SOC nmigen-based HDL instance and an ISACaller python
17 # simulator. it's also responsible for performing the single
18 # step and comparison.
19 from soc
.simple
.test
.test_runner
import TestRunner
21 # test with ALU data and Logical data
22 from openpower
.test
.alu
.alu_cases
import ALUTestCase
23 from openpower
.test
.general
.overlap_hazards
import HazardTestCase
24 from openpower
.test
.div
.div_cases
import DivTestCases
25 from openpower
.test
.mul
.mul_cases
import MulTestCases2Arg
26 from openpower
.test
.logical
.logical_cases
import LogicalTestCase
27 from openpower
.test
.shift_rot
.shift_rot_cases
import ShiftRotTestCase
28 from openpower
.test
.shift_rot
.shift_rot_cases2
import ShiftRotTestCase2
29 from openpower
.test
.cr
.cr_cases
import CRTestCase
30 from openpower
.test
.branch
.branch_cases
import BranchTestCase
31 from soc
.fu
.spr
.test
.test_pipe_caller
import SPRTestCase
32 from openpower
.test
.ldst
.ldst_cases
import LDSTTestCase
33 from openpower
.simulator
.test_sim
import (GeneralTestCases
, AttnTestCase
)
34 from openpower
.simulator
.test_helloworld_sim
import HelloTestCases
37 if __name__
== "__main__":
39 if sys
.argv
[1] == 'nosvp64':
45 if len(sys
.argv
) >= 2 and sys
.argv
[1] == '--allow-overlap':
49 # allow list of testing to be selected by command-line
50 testing
= sys
.argv
[1:]
51 sys
.argv
= sys
.argv
[:1]
54 testing
= ['general', 'ldst', 'cr', 'shiftrot', 'shiftrot2',
56 'branch', 'div', 'mul', 'hazard']
58 print ("SVP64 test mode enabled", svp64
, "overlap",
59 allow_overlap
, "testing", testing
)
61 unittest
.main(exit
=False)
62 suite
= unittest
.TestSuite()
64 # dictionary of data for tests
65 tests
= {'hello': HelloTestCases
.test_data
,
66 'div': DivTestCases().test_data
,
67 'mul': MulTestCases2Arg().test_data
,
68 'attn': AttnTestCase
.test_data
,
69 'general': GeneralTestCases
.test_data
,
70 'ldst': LDSTTestCase().test_data
,
71 'cr': CRTestCase().test_data
,
72 'shiftrot': ShiftRotTestCase().test_data
,
73 'shiftrot2': ShiftRotTestCase2().test_data
,
74 'logical': LogicalTestCase().test_data
,
75 'hazard': HazardTestCase().test_data
,
76 'alu': ALUTestCase().test_data
,
77 'branch': BranchTestCase().test_data
,
78 'spr': SPRTestCase().test_data
81 # walk through all tests, those requested get added
82 for tname
, data
in tests
.items():
84 suite
.addTest(TestRunner(data
, svp64
=svp64
,
85 allow_overlap
=allow_overlap
))
87 runner
= unittest
.TextTestRunner()