Commit Graph

258 Commits

Author SHA1 Message Date
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
Luke Wren c0b5d73cbd Typo in for loop, surprised Yosys accepted this 2022-05-23 18:15:36 +01:00
Luke Wren 5466c8131e Sketch in PMP implementation 2022-05-23 18:06:23 +01:00
Luke Wren 06647b78c6 Fix IALIGN fault to trap on the control flow instruction instead of its target 2022-05-23 16:25:43 +01:00
Luke Wren da244f54c3 Remove unused FAKE_DUALPORT option from regfile 2022-05-23 16:22:01 +01:00
Luke Wren f849517202 Split CSR addresses into separate header file 2022-05-23 15:54:37 +01:00
Luke Wren 5f4127948d Add a parameter to control register file reset, instead of the weird ifdef tree 2022-05-23 13:29:44 +01:00
Luke Wren df0fd536eb Fix IRQ priority to match the priv spec 2022-05-23 12:56:37 +01:00
Luke Wren 96a9ee18e1 Add IALIGN exception to non-RVC implementations 2022-05-23 12:47:48 +01:00
Luke Wren c4e81922da Don't store bit 1 of mepc on non-RVC implementations 2022-05-23 12:27:07 +01:00
Luke Wren 31061bd472 Add Zbkb to bitmanip tests and regenerate vectors 2022-05-21 17:15:46 +01:00
Luke Wren 210dbeae64 Correct the name and operation of the brev8 (formerly rev.b) instruction 2022-05-20 15:28:18 +01:00
Luke Wren a2582976fc Fix opcodes for zip/unzip, which are wrong in the bitmanip copy of the Zbkb spec, but correct in the crypto copy of that spec 2022-05-20 15:15:37 +01:00
Luke Wren 4ffe007a84 Add zicsr to march in bitmanip tests, so it builds on newer toolchains 2022-05-20 01:32:21 +01:00
Luke Wren 43e0b1d16a Implement Zbkb (untested) 2022-05-06 17:36:25 +01:00
Luke Wren 4946248dc4 RVFI monitor: blank out instructions which experienced an instruction fetch fault.
(previous monitor logic was ok when fetch faults weren't implemented.
If the blanked instruction has side effects, these will break other test
properties, which we would detect.)
2022-04-12 13:38:19 +01:00
Luke Wren 8a61fe5243 Fix RVFI monitor assuming rs2 data is equivalent to store data
(this used to be true, but was re-plumbed when optimising A extension implementation)
2022-04-12 13:27:53 +01:00
Luke Wren 9e27db0884 Connect or tie off missing ports on RVFI wrapper 2022-04-12 13:27:03 +01:00
Luke Wren 2c8f3974d0 Correctly implement fence.i as branch-to-next. Make Zifencei optional. Tighten up decode on fence and fence.i. 2022-04-09 13:49:16 +01:00
Luke Wren 35651f52a7 Stronger property for correct predecode 2022-04-05 08:18:00 +01:00
Luke Wren 20cf408632 Add fine (as well as coarse) register predecode, so that predecoded regnum can be used in bypass zeroing. 2022-04-04 20:16:19 +01:00
Luke Wren 357efac66e Don't decode unnecessary bits in register predecode logic 2022-04-04 18:22:09 +01:00
Luke Wren be80bd4c18 Radical opinion, we should have good performance by default, not bad 2022-04-02 17:53:22 +01:00
Luke Wren 7dc5046505 Perf option for dedicated branch comparator 2022-04-02 11:40:47 +01:00
Luke Wren 3c61fae9ef Remove the halfword fetch thing, was only really useful on RISCBoy 2022-04-02 10:54:16 +01:00
Luke Wren 7b8fe43c1c Fix bad timing of predecoded regnum register update (thanks BMC) 2022-04-02 10:11:55 +01:00
Luke Wren b80b09afe5 Typo -- fully encode all 128 possible IRQs 2022-03-15 09:01:55 +00:00
Luke Wren b0b8703ea4 Support up to 128 IRQs 2022-03-13 09:27:43 +00:00
Luke Wren 887c93dbf0 Reuse predecoded regnums for bypass mux (though can't be used for zeroing unfortunately) 2022-03-02 18:35:16 +00:00
Luke Wren 96c69d0bb0 Cut in->out paths on debug halt/resume request
Should be harmless, because in practice these should always be driven from a register
in the DM, but still better to cut the path
2022-03-01 21:14:49 +00:00
Luke Wren 5aca1381ac Couple of fixups for rvpy which I forgot to commit at some point 2022-03-01 20:27:18 +00:00
Luke Wren 8fbffbe133 Assign full width of fifo_valid in non-reset clause (cosmetic fix) 2022-02-24 12:00:27 +00:00
Luke Wren 9ed99d8695 Use define to guard X-checks, instead of hot comments 2022-02-24 10:35:16 +00:00
Luke Wren bf15b6c49f Fix forward reference to net 2022-01-18 23:02:39 +00:00
Luke Wren 0a369efc06 Add single-port bus compliance. Fix adapter not re-arbitrating following an ERROR response, causing a squashed younger load-store to remain presented to the bus. 2021-12-18 15:41:05 +00:00
Luke Wren 1b0e205f87 Fix bad AMO asserts. Fix hwdata instability during stalled AMO write dphase, which meant AMOs were fundamentally broken following yesterday's datapath origami 2021-12-18 14:51:46 +00:00
Luke Wren d1b5f83b7a Beef up the ULX3S SoC again now that atomics aren't so disastrous for timing 2021-12-18 02:41:50 +00:00
Luke Wren 6b8d4913ee Remove unnecessary mux of mw_result -> m_result 2021-12-18 01:34:25 +00:00
Luke Wren 79fec3a2f5 Overload mw_result register for capturing AMO read data. Save some LCs. 2021-12-18 01:24:26 +00:00