Commit Graph

69 Commits

Author SHA1 Message Date
Luke Wren d03a82a826 Add instruction fetch faults 2021-09-04 02:57:39 +01:00
Luke Wren 8e3dc62b97 Fiddly handshake changes for hardware single-stepping. Can now step correctly through illegal instructions 2021-07-16 20:43:24 +01:00
Luke Wren 5aca6be572 Implement data0 inside of DM instead of core, so it gets correct reset. Add dummy tselect CSR. 2021-07-16 18:28:30 +01:00
Luke Wren 307955c810 Make CPU regfile nonresettable when FPGA symbol is defined, to support BRAM inference 2021-07-13 01:10:55 +01:00
Luke Wren 63d661af63 Start hacking in debug support to the core -- seems to work as well as before adding debug! 2021-07-10 18:53:48 +01:00
Luke Wren af684c4e82 Some cleanup; correctly decode 16-bit EBREAK 2021-06-03 20:03:43 +01:00
Luke Wren 5f8d217395 Implement new IRQ behaviour, and change mip.meip to be masked by individual enables in meip0 2021-05-31 17:54:12 +01:00
Luke Wren ea5db61582 Fix exception being passed to M when X is stalled but M is not (a load which had an unaligned address spuriously during a RAW stall on the result register) 2021-05-29 22:52:50 +01:00
Luke Wren 4b9a3c2c78 Fix wrong reg readaddr when D starvation ends during a downstream load/store dphase stall (was using garbage from D instead of new fetch data predecoded in F) 2021-05-29 19:32:12 +01:00
Luke Wren f23ec3f941 Don't hold back instruction in M when an IRQ entry is stalled (but do for exception entry). Now pass add and lw checks in riscv-formal with depth 15, so getting somewhere 2021-05-29 18:57:43 +01:00
Luke Wren 65075df0e5 More work on traps, delaying IRQs which arrive whilst a load/store address phase is stalled to avoid deassertion on the bus 2021-05-29 18:00:43 +01:00
Luke Wren 1b252d4bda Significant overhaul of trap handling. Exceptions now taken from stage 3 instead of stage 2 2021-05-23 11:59:46 +01:00
Luke Wren 5e61c9f9ac Use branch target adder for JALR target, and use ALU for JAL/JALR linkaddr instead of muxing in next_pc 2021-05-23 09:12:50 +01:00
Luke Wren 7a3ce494e4 Fix a couple issues with trap exit, can now run add check with traps enabled (at low depth) 2021-05-23 06:40:44 +01:00
Luke Wren dec78a728d Fix a few things that were obviously wrong, and the first signs of a plausible RVFI bridge circuit 2021-05-22 15:35:52 +01:00
Luke Wren 08e986912c Also fix RAW stall on JALR instructions, oops. Runs CoreMark and Dhrystone now 2021-05-22 11:18:56 +01:00
Luke Wren 6692c1f26d Fix premature taking of branches with RAW data dependencies on the previous instruction 2021-05-22 10:18:47 +01:00
Luke Wren 692abbad8b Merge stages D and X, and bring all branch resolution into X. Passes RV32I compliance 2021-05-22 07:55:13 +01:00
Luke Wren 844fa8f97f Rename hazard5 -> hazard3 2021-05-21 03:46:29 +01:00