Commit Graph

228 Commits

Author SHA1 Message Date
Luke Wren b1be56fe94 Clean up rvcpp file structure 2024-03-21 23:27:01 +00:00
Luke Wren b473575b7e rvcpp: correctly model memory access faults. relevant sw_testcases now pass.
Also, grab the special-case core RAM change from the Sv32 fork, for better performance
2024-03-21 00:33:54 +00:00
Luke Wren fd584ea24b Add Xh3bextm instructions to rvcpp, and rename xh3b test to xh3bextm 2024-03-20 23:45:30 +00:00
Luke Wren 8cbf5fceee rvcpp: fix busted RMW CSR logic, fix ordering of CSR write vs update, csr_mcycle testcase now passes 2024-03-20 01:37:04 +00:00
Luke Wren 55504fa8f3 Add support for Zba, Zbb, Zbc, Zbs, Zbkb to rvcpp. Passes tests 2024-03-20 01:06:13 +00:00
Luke Wren e1bb341876 Add support for testcase return code propagation to rvcpp.
Hook up mtvec in bitmanip testcases to exit sim when exception taken.
2024-03-20 01:05:24 +00:00
Luke Wren 32f65fb142 Expand rvcpp counter CSR implementation 2024-03-19 08:44:24 +00:00
Luke Wren 9bb6ed4a3e Update tb for new cxxrtl debug_info API 2024-03-17 05:32:47 +00:00
Luke Wren 404aeead92 Additional assertions for cm.mvsa01/mva01s IRQ testcase 2024-03-17 05:04:59 +00:00
Luke Wren a693cdd632 Fix up cxxrtl include paths for new yosys 2023-12-12 19:00:26 +00:00
Luke Wren d4212f8976 Limit multilib-gen-gen to more-useful ISA combinations 2023-11-30 05:32:39 +00:00
Luke Wren e8b4578b40 Add test for cm.mvsa01/cm.mva01s tearing on IRQs 2023-11-04 14:08:07 +00:00
Luke Wren 10a6c2616a Add utility script for generating long multilib configure lines when building riscv-gnu-toolchain 2023-11-04 12:27:31 +00:00
Luke Wren 514ab0bb32 Typo in zcmp_irq_kill tests 2023-11-04 12:24:45 +00:00
Luke Wren 9955807520 Check in missing xoroshiro header from amo_ops testcase 2023-11-04 12:17:04 +00:00
Luke Wren 817a1ddfcb Update src_only_app.mk to make overriding TB executable path easier
(e.g. for running tests against rvcpp or an external simulator
2023-11-04 12:16:39 +00:00
Luke Wren 2f6e98335f Add two new tests for IRQs-over-Zcmp, and fix a bug they found:
Interrupting the PC-setting step of a cm.popret (only) can sample the return target
as the exception return PC, which will cause the stack pointer adjust to be skipped
when returning from the IRQ. Fix this by making the PC-setting step uninterruptible

(note the PC-setting step is the instruction we execute first out of the group
of instructions specified in the Zc spec as being atomic wrt interrupts. This
does not itself imply that the PC-setting step is uninterruptible, it just
requires that when the PC-setting step retires, all following steps also retire.
However this is not sufficient given the special case logic that allows the jr
ra PC-setting step to execute before the final stack adjust as an optimisation.)
2023-11-03 21:12:21 +00:00
Luke Wren ef386f43c6 Disable zbs in sw_testcases compilation as a workaround for regression in GCC 12.3 2023-11-03 20:09:27 +00:00
Luke Wren 8b301c5692 Silence useless linker rwx warning 2023-11-03 20:09:02 +00:00
Luke Wren 31642b6d4a Add amo_ops testcase 2023-04-01 08:47:29 +01:00
Luke Wren a536e3baa7 rvcpp sim: add A extension and M-mode traps
(now passes a lot of the Hazard3 tests)
2023-04-01 08:21:43 +01:00
Luke Wren 26d699e18c rvcpp simulator: fix bad regnum decode for c.slli outside of x8..x15 2023-04-01 06:02:45 +01:00
Luke Wren 54f0a593c8 Fix +x permission of riscv-compliance/clean_all script 2023-04-01 04:42:15 +01:00
Luke Wren d8cc132a49 tb_cxxrtl Makefile: make synthesis depend on config headers 2023-04-01 04:41:39 +01:00
Luke Wren 86fc4e3f2d Update embench config and readme 2023-03-31 03:02:06 +01:00
Luke Wren ca40c077be Capture JTAG bitbang log from most recent SMP debug test.
Regarding intermittent failure of SMP debug MemorySampleSingle test:
https://twitter.com/wren6991/status/1640153934445543426

Seems to be an OpenOCD issue, not a Hazard3 issue.
2023-03-31 02:16:23 +01:00
Luke Wren e89ab0d095 tb_cxxrtl: explicitly use set<bool> when there is only one timer IRQ
(i.e. single-core testbench). Avoids some odd behaviour with wide
assignment to single-bit wire from the CXXRTL harness.
2023-03-31 02:11:52 +01:00
Luke Wren 5aee830ac0 Restore SW Makefiles to use whatever riscv32-unknown-elf toolchain is in PATH
(clean up fallout from Zc implementation -- ensure Readme instructions will get you to hello world)
2023-03-31 01:53:28 +01:00
Luke Wren a861a110c1 Update to the latest riscv-arch-test. This uses the new test
framework -- scripts are a little janky for now.

Note there is one test failure (cebreak-01) -- analysis shows
this is due to the reference vector expecting mtval to be set
informatively, whereas our implementation (legally) ties it
to zero. Non-mtval-related signature for that test is correct
so I'm saying this is fine.
2023-03-31 01:39:48 +01:00
Luke Wren 18d3b03cc8 Fix rm of build directory in tb_cxxrtl/Makefile 2023-03-30 22:43:48 +01:00
Luke Wren 97121afa91 Extend testbench to allow dumping/replaying JTAG to text file.
This allows debugging of tests that behave differently when VCD dumping
is enabled, due to the difference in execution speed.
(A couple of the SMP debug tests fail intermittently.)
2023-03-27 00:17:11 +01:00
Luke Wren c41fe0609b Add a second mtimecmp comparator to TB IO, for dual-core InterruptTest from RISC-V debug tests.
Fix a couple of minor test script issues.
2023-03-26 23:00:18 +01:00
Luke Wren 94bd965e4e Add script for running SMP debug tests 2023-03-24 18:45:11 +00:00
Luke Wren 97509f548a tb_cxxrtl Makefile: better support for building multiple tb configurations 2023-03-24 18:44:37 +00:00
Luke Wren cbb490da6a Bump riscv-tests for hazard3 SMP debug test config changes 2023-03-24 18:11:08 +00:00
Luke Wren 0dd6be181d Fix up HwbpManual test in riscv-tests fork, and update debug test list 2023-03-24 00:28:02 +00:00
Luke Wren 532e27dbc9 Bump riscv-tests for new debug and ISA tests. (Rebase of Hazard3 patches) 2023-03-23 23:32:28 +00:00
Luke Wren 56586def8d List Zcb/Zcmp in docs, and rebuild PDF 2023-03-22 03:04:16 +00:00
Luke Wren 95faab6f2c Add zcmp_irq_kill test 2023-03-22 02:44:03 +00:00
Luke Wren e98d7b41ea Hook up power control signals on dual-core tb 2023-03-22 00:34:19 +00:00
Luke Wren 8f461b63b4 Fix mvsa01/mva01s in rvcpp 2023-03-21 21:54:04 +00:00
Luke Wren 410d002372 First pass at adding Zcmp to rvcpp 2023-03-21 21:28:49 +00:00
Luke Wren 8e7e8f4008 Extend rvcpp ISA sim to cover RVC. Passes RV32IC compliance. 2023-03-21 19:38:46 +00:00
Luke Wren f702fe5352 Add test covering all pop instructions 2023-03-20 18:26:29 +00:00
Luke Wren d2adc6aad7 Add tests for mva01s/mvsa01 2023-03-20 16:05:07 +00:00
Luke Wren 142b3a81ff Add spike-extracted output to zcmp_push 2023-03-20 15:37:38 +00:00
Luke Wren ee6e03e0e6 Add beginnings of Spike-able zcmp_push test 2023-03-20 14:26:53 +00:00
Luke Wren 3b2ddee06b Fix push/pop frame format, fix source regnums for mvsa01/mva01s 2023-03-20 02:35:18 +00:00
Luke Wren 7702c44288 Handle timeout in runtests 2023-03-20 01:32:16 +00:00
Luke Wren e966e832d2 First attempt at Zcmp 2023-03-20 00:19:23 +00:00