Commit Graph

  • fef6d80fd4 tcontrol.mpte is not supposed to change on trap exit, unlike mstatus.mpie Luke Wren 2022-08-23 00:19:56 +0100
  • 9e11c0e5a8 Fix tdata1.dmode being writable from M-mode Luke Wren 2022-08-23 00:08:17 +0100
  • 04f138ae0e Fix mcontrol.execute not being writable. Enable hardware breakpoint debug tests: Hwpb1/2, JumpHBreak, TriggerExecuteInstant Luke Wren 2022-08-23 00:05:03 +0100
  • 49c2edeff8 Avoid reserved keyword Luke Wren 2022-08-22 10:26:20 +0100
  • 53902a901b Fix bad rdata width for tdata1 (which also caused the trigger type to appear as legacy SiFive, oops) Luke Wren 2022-08-22 09:47:19 +0100
  • f9dafa3867 Update readme Luke Wren 2022-08-22 09:25:37 +0100
  • b90d12efed CSRs: avoid use of wdata_update in rdata for meicontext, which the SMT2 backend sees as a loop. Luke Wren 2022-08-22 09:18:57 +0100
  • ba775563d5 Fix suspicious gating of jump request Luke Wren 2022-08-22 09:10:12 +0100
  • 6e2076268c Update CSR readability/writability tests for new CSRs Luke Wren 2022-08-22 08:50:57 +0100
  • 6e3799eed0 First attempt at hacking in triggers, at least seems to have not broken other exception logic. Not yet tested. Luke Wren 2022-08-22 08:45:06 +0100
  • 5d6b5a80b0 Standardise on ifndef YOSYS around default_nettype wire Luke Wren 2022-08-21 13:22:55 +0100
  • 4c098d76a7 Fix some whitespace issues, and avoid redefinition of RVOPC macros Luke Wren 2022-08-21 13:09:28 +0100
  • b994674c5a Cleanup to avoid negative array index (legal but causes whinging) Luke Wren 2022-08-20 18:13:45 +0100
  • 3b7cd9bc96 Cleanup some unused signals Luke Wren 2022-08-20 16:44:39 +0100
  • 96e55a5446 Replace localparams with defines in rv_opcodes.vh, to avoid slightly dubious localparam to casez Z-propagation Luke Wren 2022-08-20 16:22:04 +0100
  • d299a3ca4e More width tweaks Luke Wren 2022-08-20 16:11:58 +0100
  • bc274867c0 More width mismatch fixes Luke Wren 2022-08-20 15:27:14 +0100
  • dbe9a7824a Cleanup of some width mismatches in instruction decompress Luke Wren 2022-08-20 14:58:41 +0100
  • 276830ecb6 Fix missing default assignment of i_m in PMP decode Luke Wren 2022-08-16 09:23:42 +0100
  • 65daa739c4 .gitignore Luke Wren 2022-08-16 09:21:14 +0100
  • be05dc32d4 Oops, typo in update of new pmpcfg_m field Luke Wren 2022-08-11 20:46:32 +0100
  • 8b630d2ac6 Whoops I needed that constant Luke Wren 2022-08-10 01:00:47 +0100
  • 64dc31244e Add top/bottom-half IRQ test Luke Wren 2022-08-10 00:09:13 +0100
  • a44ff9b6f1 Add test for IRQ force array Luke Wren 2022-08-09 23:38:14 +0100
  • f47f603595 Doc typos Luke Wren 2022-08-09 00:04:30 +0100
  • cd69fcdbbc Docs: Add date to title page, and rebuild PDF with recent CSR changes Luke Wren 2022-08-08 23:54:05 +0100
  • 259a402e28 Describe new pmpcfgm0 register Luke Wren 2022-08-08 23:08:31 +0100
  • 5819f8eb7e Remove wrong/useless mxr logic in PMP Luke Wren 2022-08-08 18:45:37 +0100
  • 5894ddf15c Fix outdated expected output in irq_set_all_with_pri test Luke Wren 2022-08-08 18:44:58 +0100
  • 92ebbbe95f Add pmpcfgm0 register: make regions M-mode without locking them Luke Wren 2022-08-08 18:34:55 +0100
  • 65e3d1c48b Fix bad IRQ_IMPL_MASK indexing in meipra write Luke Wren 2022-08-08 17:38:41 +0100
  • 457b5e5f1a Fix some doc sections which assumed only M-mode was supported Luke Wren 2022-08-08 17:35:39 +0100
  • ef927d0d23 Dumb typo Luke Wren 2022-08-08 10:26:36 +0100
  • 026b529bc5 Fix asm example in docs to set meicontext.clearts when saving Luke Wren 2022-08-07 23:17:39 +0100
  • ad5fd24772 - Fix signal named priority, which is a keyword in SV - Fix incorrect HIGHEST_WINS behaviour in one-hot selector - Add test for asserting 32 IRQs at 16 priorities at once - Add an entry counter to the soft dispatch code so tests can check the number of times hardware entered the vector Luke Wren 2022-08-07 23:17:03 +0100
  • 2e3d69e98f Forgot to add expected output for preemption test Luke Wren 2022-08-07 22:08:50 +0100
  • 5e72ec8941 Fix a couple of bugs in preemption priority update, add simple IRQ preemption test Luke Wren 2022-08-07 22:04:42 +0100
  • 15cb21ae43 First pass at implementing the new IRQ controls. Works well enough that the old tests pass :) Luke Wren 2022-08-07 20:51:12 +0100
  • 69917ccbbe Docs: Tweak meicontext with thoughts that came up whilst implementing it Luke Wren 2022-08-07 20:31:09 +0100
  • cc12b586ca Fix implicit net in cpu_1port, this yosys bug is a pain in the ass Luke Wren 2022-08-07 20:30:26 +0100
  • 185194973f Add a custom instruction (bextm/bextmi: 1 to 8-bit version of bext/bexti from Zbs) for fooling around with toolchains Luke Wren 2022-08-06 23:02:08 +0100
  • 054c4a6a9c Fix reversed pseudocode for ctz/clz Luke Wren 2022-08-02 21:21:44 +0100
  • adf81abfdc Oops, description of shxadd had operands swapped Luke Wren 2022-07-31 17:45:14 +0100
  • e76b82e447 More thoughts about interrupts, starting to look plausible Luke Wren 2022-07-31 16:16:16 +0100
  • 106c4c3d28 Update docs CSR section to reflect addition of U-mode, PMP etc. Luke Wren 2022-07-30 21:19:30 +0100
  • 797bff81ab DM: fix any/allnonexistent going low when hasel is set. The hart array mask is in addition to the hart selected by hartsel. Luke Wren 2022-07-30 19:55:22 +0100
  • 9787c604ad Add missing ebreaku field to dcsr (U-mode counterpart to ebreakm) Luke Wren 2022-07-30 17:31:53 +0100
  • 0567c2c9fe Two minor DM bugs: - Writes to dmcontrol.resumereq should be ignored if dmcontrol.haltreq is also set - aarsize and regno should be ignored when command.transfer is not set Luke Wren 2022-07-30 17:22:46 +0100
  • c73c09a48a More thinking about interrupt priorities Luke Wren 2022-07-30 15:42:26 +0100
  • 7946432d7a Speculatively update docs with new interrupt array/priority stuff, and sleep register Luke Wren 2022-07-28 01:18:13 +0100
  • add19506a5 Oops, bad if block nesting in PMP Luke Wren 2022-07-25 13:09:03 +0100
  • ae30d7c0d2 Add instruction pseudocode (no A extension) Luke Wren 2022-07-10 19:16:43 +0100
  • 956b386a20 Update instruction listings in docs Luke Wren 2022-07-10 05:47:07 +0100
  • ee7d8e1947 Bump embench for script fixes/improvements Luke Wren 2022-07-07 18:29:37 +0100
  • 91be98f2da Make rvpy IO output look exactly like tb_cxxrtl (bringing up embench) Luke Wren 2022-07-06 23:53:11 +0100
  • 9bc72cca08 Update configure line for riscv-gnu-toolchain in readme Luke Wren 2022-07-06 22:41:32 +0100
  • 5a39d8b7e7 Track minstret and mcycle separately now that the model is cycle-accurate Luke Wren 2022-07-06 13:50:13 +0100
  • 5dfe5cb62b Update rvpy to match current fastest config: stage 2 mul, single BTB entry on backward branches Luke Wren 2022-07-06 13:49:51 +0100
  • b7d9defcf2 Add MUL_FASTER option to retire fast mul to stage 2 instead of stage 3 Luke Wren 2022-07-05 03:37:05 +0100
  • 254350d300 Clean up tie-off of hardwired PMP registers Luke Wren 2022-07-04 14:31:42 +0100
  • 6e80492723 Typo Luke Wren 2022-07-04 12:09:21 +0100
  • 27793b25a1 Rebase riscv-tests against upstream, and pick up new semihosting file io test Luke Wren 2022-07-04 00:45:20 +0100
  • e44d2e6f9e Add memory sampling to run-debug-tests. Add run-smp-debug-tests. Bump riscv-tests to get new SMP target, and a test fix for MemorySampleMixed Luke Wren 2022-07-03 23:34:12 +0100
  • cac98568e6 Ignore read data from failed SBA accesses Luke Wren 2022-07-03 20:58:01 +0100
  • c7a32c4d00 SBA: fix alignment check using a stale address when the trigger is an sbaddress write. Fix new transfers being allowed to start when sberror or sbbusyerror are set. Luke Wren 2022-07-03 19:02:30 +0100
  • ae11d04b10 Add HMASTER output to processor wrappers, to indicate when the bus cycle is driven by SBA rather than the core Luke Wren 2022-07-03 18:02:47 +0100
  • b1225c386c Add missing 1port SBA change, and update example soc and bus compliance tb to reflect Luke Wren 2022-07-03 17:57:03 +0100
  • 9e15cd3485 Add standalone SBA-to-AHB shim, and make SBA off by default in the DM Luke Wren 2022-07-03 15:30:33 +0100
  • d5cd3e0681 Add SBA patch-through to 1-core wrapper. Add SBA properties to bus compliance checks. Hook up SBA in dual-core single-port debug tb. Luke Wren 2022-07-03 15:17:44 +0100
  • d6bef56788 Fix missing byte picking/replication in non-word-aligned SBA transfers Luke Wren 2022-07-03 14:22:12 +0100
  • 51bc26f8ac First pass at adding system bus access to DM. Currently only the 2-port processor supports SBA patchthrough. Luke Wren 2022-07-03 00:25:47 +0100
  • 36cee73d1f Fix acmd FSM not selecting the correct hart signal for its state transitions, and make flush take precedence over debug injection in frontend. (Changes from aborted abstract access memory implementation, see abstract-access-memory branch) Luke Wren 2022-07-02 22:46:20 +0100
  • edfe7f601e Clear local monitor on non-debug trap entry/exit Luke Wren 2022-06-26 21:55:51 +0100
  • a7cb214501 Reduce ROM size in instruction_fetch_match: depth is more useful Luke Wren 2022-06-26 19:59:44 +0100
  • c2756e79fc Fix misreading of spec: hartsel hart is selected in addition to those bits set in hart array mask, when hasel is set. Luke Wren 2022-06-26 19:58:01 +0100
  • fb15894731 Hopefully fix case where we jump to the address immediately after a halfword-sized word-aligned predicted-taken branch, and an address-phase hold causes the jump target to go to the fetch address counter, causing a spurious BTB match on the branch. Luke Wren 2022-06-26 15:28:06 +0100
  • 33cec49952 Fix bad predbranch tracking on a jump to a predicted-taken non-taken branch which is halfword-sized and halfword-aligned, causing CIR and PC to diverge. Luke Wren 2022-06-26 15:22:47 +0100
  • 5455349961 Add menvcfg CSR, and comment explaining why we don't have mseccfg CSR Luke Wren 2022-06-26 01:25:08 +0100
  • ad8f883406 First pass at hart array mask register in DM Luke Wren 2022-06-25 20:34:53 +0100
  • 5193dfe477 Add separate define HAZARD3_ASSERTIONS for enabling internal assertions, and enable it only on the bus compliance model checks. Trying to make the solver's life easier in instruction_fetch_match. Luke Wren 2022-06-25 20:08:35 +0100
  • 173f5dba9d Fix jump target being unstable during a CIR-locked branch-to-self on a partial predicted branch match, due to the addr_is_regoffs decode not being tied off. Luke Wren 2022-06-25 20:07:43 +0100
  • 8ef9d77be8 Add 'everything but MHARTID' option to config_inst, to allow its reuse in multicore instantiations. Use this to fix the multicore tb not instantiating cores with all parameters correct (e.g. U_MODE) Luke Wren 2022-06-25 13:11:40 +0100
  • 31efd07042 Fix incorrect tracking of predictedness of fetch data phase. Fixes performance regression in RV32IMC CoreMark (now runs faster, as it should.) Luke Wren 2022-06-25 11:32:56 +0100
  • 979e80be99 Attempt to fix fetch mismatch caused by jumping halfway into a 32-bit instruction that precedes a taken branch. Luke Wren 2022-06-24 19:57:45 +0100
  • d9389fb23e Fix a half-valid valid address phase being left behind when taking a new path with the jump going straight to the bus. If left in place, this causes the next-next fetch to be marked as half valid, corrupting fetch data. Luke Wren 2022-06-16 01:42:28 +0100
  • f8aad6d2f3 Fix some bugs, too tired to list them, look at the diff Luke Wren 2022-06-15 04:05:31 +0100
  • 0766ec6f8a First pass at adding branch prediction Luke Wren 2022-06-15 02:05:12 +0100
  • 3703b1fc4c Allow use of cir_flush_behind in frontend_match formal tb Luke Wren 2022-06-13 20:36:15 +0100
  • e68d8a6cd6 Fix two frontend bugs: possibility for fetch to be blocked at CIR whilst also not going to FIFO (fixed by making those signals the complement of each other) and typo in the shift value for shifting into a CIR with 32 bits of contents, which is only reachable via a CIR-locked branch to an unaligned address. Luke Wren 2022-06-13 01:23:32 +0100
  • 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 Luke Wren 2022-06-12 20:53:53 +0100
  • 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. Luke Wren 2022-06-12 16:25:42 +0100
  • 940b7e4009 Actually still need 7 halfwords for full throughput in the case of sequential word-sized halfword-aligned instructions Luke Wren 2022-06-12 16:21:56 +0100
  • 8458dff083 Fix bus errors not being applied in frontend Luke Wren 2022-06-12 05:28:21 +0100
  • 23b4dbe7f3 Redesign fetch queue: 2x32 + 3x16 -> 6x16. Should make it easier to support finer-grained flushing, and handle predicted branches cleanly. Luke Wren 2022-06-12 02:43:15 +0100
  • d5a202e4a5 Add standalone frontend formal tb Luke Wren 2022-06-11 20:13:57 +0100
  • 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. Luke Wren 2022-06-11 14:27:59 +0100
  • 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. Luke Wren 2022-06-11 14:26:40 +0100
  • d31b1708db Make rvpy cycle-accurate enough to get the correct Dhrystone score Luke Wren 2022-06-09 01:34:37 +0100
  • 11596a5bd7 Remove unused/untested RISC-V timer implementation Luke Wren 2022-06-09 00:12:26 +0100
  • ea2b8888a4 Update copyright years Luke Wren 2022-06-09 00:12:01 +0100