Commit Graph

396 Commits

Author SHA1 Message Date
Luke Wren de9b51b787 Remove default zeroing of fetch address when no fetch is asserted -- this puts LUTs on a critical path and arguably causes more toggling than asserting the sequentially next address by default. 2022-06-11 14:26:40 +01:00
Luke Wren d31b1708db Make rvpy cycle-accurate enough to get the correct Dhrystone score 2022-06-09 01:34:37 +01:00
Luke Wren 11596a5bd7 Remove unused/untested RISC-V timer implementation 2022-06-09 00:12:26 +01:00
Luke Wren ea2b8888a4 Update copyright years 2022-06-09 00:12:01 +01:00
Luke Wren 02b303b385 Remove stray old expected output file from sw_testcases dir 2022-06-03 17:20:49 +01:00
Luke Wren ae2784d0ea PMP config: separate granularity config from hardwired region config. Give correct read value for G > 1. 2022-06-03 17:09:43 +01:00
Luke Wren e0a9fb7312 Add option to hardwire PMP regions, or reduce their granularity 2022-06-03 01:19:03 +01:00
Luke Wren b823132a6e Remove experimental description from U-mode and PMP. Add list of specifications. 2022-05-31 01:24:36 +01:00
Luke Wren e2c9901701 Update readme for runtests 2022-05-30 01:12:16 +01:00
Luke Wren 2cfe6aa90e Add test to check MPRV/MPP behaviour when executing an MRET 2022-05-29 19:51:19 +01:00
Luke Wren f96a0ffb75 Add test for MPRV vs PMP 2022-05-29 19:06:04 +01:00
Luke Wren 71eff7649d Add PMP U-mode read/write permission test 2022-05-29 18:42:44 +01:00
Luke Wren c8afcdbb8f Extend umode_wfi test to check U-mode WFI doesn't stall the processor if TW=0 or PMP X check fails 2022-05-29 17:42:15 +01:00
Luke Wren 460fa0bb4a Fix run-isa-tests.sh to fail on first failed test. Fix bad environment trap routing causing ecall ISA test to hang. Make breakpoint test instant-pass when triggers aren't implemented. 2022-05-28 17:22:28 +01:00
Luke Wren 66965ac073 Fix inverted sc return code (argh) and lr/sc tests which also assumed the sc code was inverted 2022-05-28 15:36:21 +01:00
Luke Wren 4090f4eb24 Initial bringup of riscv-tests. Pass 63 out of 66 applicable tests.gstat 2022-05-28 15:01:27 +01:00
Luke Wren 9e2f5df00a Add testbench flag to propagate CPU return code to testbench return 2022-05-28 15:00:28 +01:00
Luke Wren 81aec325bb ecall from U-mode has a different mcause value than ecall from M-mode 2022-05-28 12:07:29 +01:00
Luke Wren 632c61daba Rebase debug tests, pick up two new tests (both pass) 2022-05-28 11:34:41 +01:00
Luke Wren f2876eb51f Fix bad mepc reported after branching to a branch in a no-X address range 2022-05-27 22:47:04 +01:00
Luke Wren cd3125b6e5 Add new bus signals on instruction_fetch_match/tb.v 2022-05-27 21:48:45 +01:00
Luke Wren b655148148 Bump riscv-tests for better PMP disable fix 2022-05-27 21:36:54 +01:00
Luke Wren 0e462574b2 Move declaration of x_exec_pmp_fail to before its first use 2022-05-27 15:04:43 +01:00
Luke Wren e208652ad7 Fix misa value in csr_id test 2022-05-26 00:48:12 +01:00
Luke Wren d7787942e9 Add two new tests to debug test list. Remainder are still non-applicable 2022-05-26 00:47:08 +01:00
Luke Wren 156fbcd019 Update behaviour of mstatus.mpp and mprv on mret to match priv-1.12 spec 2022-05-26 00:42:50 +01:00
Luke Wren a17b941e38 Add U bit to misa, and fix some broken debug tests (no hazard3 bugs) 2022-05-25 23:46:23 +01:00
Luke Wren 37f7588bad Fix hazard3 reset vector check value in debug tests 2022-05-25 21:45:36 +01:00
Luke Wren 0efcf53fe5 Fix X PMP fail not suppressing load/store address phase.
Fix PMP-failed load/store still passing on a data phase tag to stage 3.
Fix WFI still pausing the core after a PMP X fail.
2022-05-25 16:18:03 +01:00
Luke Wren 5be8835365 Add missing output to pmp_write_and_lock test 2022-05-25 15:34:28 +01:00
Luke Wren 399dcf2cb9 Add test for U-mode X permissions 2022-05-25 13:47:16 +01:00
Luke Wren e2b9a3b2f9 Fix two PMP-related bugs:
1. Generating PMP load/store exceptions when the instruction is not a load/store
2. Passing a PMP exec permission exception into M whilst the frontend is still
   starved, causing early taking of the exception and a bad mepc value.
2022-05-25 13:23:44 +01:00
Luke Wren 7340765699 Add simple test to read, write and lock PMP registers 2022-05-25 02:05:24 +01:00
Luke Wren 456810b09e Make vcd generation optional in runtests 2022-05-24 22:56:13 +01:00
Luke Wren 64d9f4a111 Add tests for execution of mret and wfi in U mode 2022-05-24 22:14:20 +01:00
Luke Wren 51750eb81d Add mstatus.tw to control U-mode WFI, and prevent mret execution in U-mode. 2022-05-24 21:12:44 +01:00
Luke Wren 10ca3aec80 Add U-mode and PMP to readme 2022-05-24 20:41:25 +01:00
Luke Wren 20f06c4a02 Build tb with 4 PMP regions by default 2022-05-24 20:06:57 +01:00
Luke Wren 7cfc976ef2 Set U RWX permission on all of memory in the U CSR readability test 2022-05-24 19:58:12 +01:00
Luke Wren c93228d13e Integrate PMP, and fix a couple of PMP bugs 2022-05-24 19:57:45 +01:00
Luke Wren 4878a752d6 Plumb privilege state through to the bus ports 2022-05-24 18:24:34 +01:00
Luke Wren cfed35b3da Fix the stupid printf warning on x86-64 as well as arm64 2022-05-24 18:22:25 +01:00
Luke Wren f033cde874 Add test for readability of CSRs in U mode. Fix readback value of mstatus.mpp 2022-05-24 17:30:24 +01:00
Luke Wren ba81b533d2 Build core with U mode support for tb 2022-05-24 16:44:22 +01:00
Luke Wren 0199f48087 Add read-only counter CSRs to readability/writability tests, and fix cycleh being unreadable when U mode is not implemented 2022-05-24 16:44:03 +01:00
Luke Wren d62861159f First pass at U-mode CSR support. Bizarrely causes CXXRTL tb to not write to stdout when invoked by subprocess.run from Python. 2022-05-24 16:17:54 +01:00
Luke Wren 4ba3f7ceb9 Fix format warning in tb.cpp on arm64 2022-05-24 16:17:54 +01:00
Luke Wren ef35dc859d Add zicsr to march in makefiles 2022-05-24 16:17:54 +01:00
Luke Wren 07d4b23a9a Add option to pass test list to runtests 2022-05-24 16:17:54 +01:00
Luke Wren 2df1179994 Wire privilege through from core to bus masters. Tied off inside core. 2022-05-24 14:05:26 +01:00