Luke Wren
26d54d0023
Re-rewrite frontend to track the halfword-validity of in-flight transfers, and clean up the old cir_lock mechanism to be a modified flush
2022-06-12 21:01:39 +01:00
Luke Wren
e3da922f8b
Revert previous frontend changes. Seemed promising but is a dead end for area.
...
The original frontend design can probably be tweaked to support predictions.
2022-06-12 16:25:42 +01:00
Luke Wren
940b7e4009
Actually still need 7 halfwords for full throughput in the case of sequential word-sized halfword-aligned instructions
2022-06-12 16:21:56 +01:00
Luke Wren
8458dff083
Fix bus errors not being applied in frontend
2022-06-12 05:28:21 +01:00
Luke Wren
23b4dbe7f3
Redesign fetch queue: 2x32 + 3x16 -> 6x16.
...
Should make it easier to support finer-grained flushing,
and handle predicted branches cleanly.
2022-06-12 02:44:08 +01:00
Luke Wren
d5a202e4a5
Add standalone frontend formal tb
2022-06-11 20:14:24 +01:00
Luke Wren
3b5879da66
Small code cleanup in frontend. The address phase alignment state no longer needs to be tracked, since we just generate word accesses always, for simplicity.
2022-06-11 14:27:59 +01:00
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