Commit Graph

163 Commits

Author SHA1 Message Date
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 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 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 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 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 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 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 31061bd472 Add Zbkb to bitmanip tests and regenerate vectors 2022-05-21 17:15:46 +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 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 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 5aca1381ac Couple of fixups for rvpy which I forgot to commit at some point 2022-03-01 20:27:18 +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 28b53ef7b5 Delete the AMO ALU. Save around 80 LCs vs original implementation, maybe enables some more savings. 2021-12-18 00:35:13 +00:00
Luke Wren a81d129961 Add exclusives monitor to testbench 2021-12-17 17:03:35 +00:00
Luke Wren 5ab60422ad Add minimal multicore launch code 2021-12-17 01:24:11 +00:00
Luke Wren 01d9617f9c Add multicore tb integration file 2021-12-17 00:41:23 +00:00
Luke Wren 207566660d tb: handle both ports identically. Preparing for dual core 2021-12-17 00:04:00 +00:00
Luke Wren 88fea7acfa Fix lockup on misaligned AMO. Add tests for misaligned/faulting AMOs. 2021-12-12 18:28:23 +00:00
Luke Wren 719c21fec3 Add IRQ tests. Disable waves by default in runtests 2021-12-12 15:53:04 +00:00
Luke Wren 9fb2af800f Allow IRQs to be set/cleared by sw in tb. Add soft IRQ test 2021-12-12 14:58:50 +00:00
Luke Wren a232833d81 Add CSR writable test 2021-12-12 14:23:34 +00:00
Luke Wren 8a003dbbed Make mcycle/minstret inhibited by default 2021-12-12 13:55:33 +00:00
Luke Wren 7da67a0600 Similarly for minstret 2021-12-11 22:25:12 +00:00
Luke Wren 1b722b5f27 Add mcycle test, fix incorrect description of mcycle in docs 2021-12-11 21:21:31 +00:00
Luke Wren 93eca19aeb Add test for lr/sc RAW stalls 2021-12-11 19:16:41 +00:00
Luke Wren 763a5cd364 Add test for readability of all implemented CSRs 2021-12-11 17:50:12 +00:00
Luke Wren 7b1da32af1 Move expected_output into tests inline 2021-12-11 16:58:25 +00:00
Luke Wren 9460b3cd04 Add load/store and lr/sc bus fault tests. Fix lr.w not clearing local monitor when HRESP=1 HEXOKAY=1. 2021-12-11 15:52:34 +00:00
Luke Wren f64f44f7af Add test for identification CSRs vs expected values 2021-12-11 13:26:59 +00:00
Luke Wren 4066e941ef Fix sim cmdline in bitmanip-random tests 2021-12-11 13:13:21 +00:00
Luke Wren 3fe0d92d41 Add load/store alignment testcases 2021-12-11 12:53:37 +00:00
Luke Wren c90727b05a Remove padding after vector table in init.S 2021-12-11 12:22:23 +00:00
Luke Wren 6076eba61f Add run_all script under riscv-compliance 2021-12-11 12:08:53 +00:00
Luke Wren 52d58fdee4 Add keep wires for debug port on bus compliance tb 2021-12-11 12:06:10 +00:00
Luke Wren 6edfbfae8b Add ebreak size/alignment test 2021-12-11 11:17:24 +00:00
Luke Wren abe1769929 Add instruction access fault testcase 2021-12-11 09:54:00 +00:00
Luke Wren 933f2cd65c Fix remaining fallout from tb args change 2021-12-11 09:53:39 +00:00
Luke Wren 6d55cd2d55 Consolidate openocd and bin-load testbenches 2021-12-11 09:46:38 +00:00
Luke Wren fadb9601de Illegal instruction test 2021-12-10 00:11:18 +00:00
Luke Wren 3d2c912b4f Add test script to make it easier to add software testcases 2021-12-09 22:25:18 +00:00
Luke Wren 449348f459 Fix bug where an IRQ can fire during load/store dphase, followed by dphase bus exception.
Result was that the exception would sample the IRQ vector PC rather than the load/store instruction PC.
Fix by fencing off on in-flight dphases before asserting the IRQ. This adds a cycle of jitter
to IRQs, but is required for correct operation without adding a full exception-gathering pipeline.
2021-12-07 19:24:53 +00:00
Luke Wren dbc331dbb4 Add exclusives bus properties 2021-12-07 05:47:25 +00:00
Luke Wren 93be227d8a Add (currently failing) trap entry property. Fails when an IRQ arrives during a load/store data phase which subsequently excepts. 2021-12-06 20:12:23 +00:00
Luke Wren ac9285846f Timer struct in IO header 2021-12-06 17:16:21 +00:00
Luke Wren c57a80f358 Add AMO + timer testcase 2021-12-06 07:47:20 +00:00
Luke Wren d86b2849c9 Bump to latest version of riscv-arch-test 2021-12-06 02:18:48 +00:00
Luke Wren df658d86ff First plausibly working AMOs. Add AMOs to instruction timings list 2021-12-04 23:44:22 +00:00
Luke Wren 5e17bb805e Add basic support for lr/sc instructions from the A extension 2021-12-04 15:02:31 +00:00
Luke Wren c5d6be24f3 Remove external IRQ vectors from init.S which are unreachable now that midcr.eivect has been removed. 2021-12-04 14:06:48 +00:00
Luke Wren 5db6c68c56 Update riscv-tests for correct misa.x value 2021-12-04 11:19:43 +00:00
Luke Wren 52ba930638 Remove useless midcr.eivect feature. Make mlei left-shift its value by 2. 2021-12-04 01:17:57 +00:00
Luke Wren be6b2f3f76 Fix up DTMs to use byte addressing 2021-12-02 02:05:23 +00:00
Luke Wren 1ebccb7cce Switch DM to use byte addresses on APB, not word addresses 2021-12-02 01:47:30 +00:00
Luke Wren fad64bb6c9 Bump embench test submodule 2021-11-29 18:51:10 +00:00
Luke Wren ba248c832a init.S: also print out mcause when trapping an unhandled exception 2021-11-29 18:49:37 +00:00
Luke Wren c8afb4ac33 Add option for fast high-half multiplies 2021-11-29 18:48:02 +00:00
Luke Wren 35c5e213c7 Bump embench for working benchmarks (except md5) 2021-11-29 00:59:14 +00:00
Luke Wren 94a3d43f27 Add Hazard3's registered marchid value to hdl and docs 2021-11-28 19:53:49 +00:00
Luke Wren e7466ae4be Move DM data0 CSR into the M-custom space, and document this 2021-11-28 15:52:52 +00:00
Luke Wren 47ce2cc8ec Add embench submodule, with configs for hazard3 2021-11-28 00:01:18 +00:00
Luke Wren 14a4f1a281 Add bitmanip reference vectors and test scripts. Fix bug in bclr implementation 2021-11-27 17:19:41 +00:00
Luke Wren 6f1a10724b Add bitmanip test vector generation script 2021-11-26 23:34:06 +00:00
Luke Wren 1bb7e33b69 Fix alignment of heap_ptr in init.S. Small ALU cleanup 2021-11-26 02:59:50 +00:00
Luke Wren e352715fdf Fix IO decode in openocd/tb.cpp 2021-11-23 22:12:51 +00:00
Luke Wren 4d14203586 Update riscv-tests fork for crash loop debug test 2021-11-23 21:58:39 +00:00
Luke Wren c1f17b0b23 Add wfi timer loop example, and add mtime/mtimecmp to non-debug testbench 2021-11-06 09:59:27 +00:00
Richard-Gordon 375a6d60b7 Correct mnemonic when logging unsigned sltiu instruction 2021-10-08 12:02:37 +01:00
Luke Wren 6fcc74a043 Add some instructions to Readme 2021-07-24 11:53:08 +01:00
Luke Wren b0d11c0ab7 Add RISC-V debug tests 2021-07-22 17:50:04 +01:00
Luke Wren c14960ee1b Add mtime/mtimecmp to openocd testbench 2021-07-22 17:31:26 +01:00
Luke Wren 5d2a562f65 Just use read_verilog; write_cxxrtl when building tb_cxxrtl 2021-07-22 17:30:30 +01:00
Luke Wren c56c75e14b More dicking with yosys cmd for tb_cxxrtl;
Removing the prep pass as suggested leads to invalid VCD net names.
Adding a opt_clean (+ prerequisites) fixes that.
Adding splitnets -driver afterward wins back the performance lost by
that last addition. Can you tell I don't know what I'm doing
2021-07-18 16:46:00 +01:00
whitequark 12bf9bb570 Make CXXRTL testbench ~25% faster 2021-07-18 16:04:19 +01:00
Luke Wren 2618ae0c07 Double-step() after clock posedge to workaround CXXRTL port propagation issue 2021-07-18 16:03:53 +01:00
Luke Wren ce5cc1f150 oops, bounds checking on free-running tb_cxxrtl 2021-07-18 15:20:25 +01:00
Luke Wren 8014239d47 openocd tb: report AHB error response when processor accesses outside of RAM/IO 2021-07-17 19:26:05 +01:00
Luke Wren ab0b4a04f0 Also support progbuf in abstractauto. 2021-07-17 15:08:00 +01:00
Luke Wren 62822b2e1d Couple of usability improvements for openocd testbench 2021-07-15 19:42:49 +01:00
Luke Wren 9643a57ba9 Slightly less braindead TCP interactions for openocd JTAG bitbang testbench, much more interactive now 2021-07-14 19:20:27 +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 42632e325a Fix brokenness of JTAG-DTM and CDC, add openocd remote bitbang testbench for DTM + DM + core 2021-07-12 21:21:16 +01:00
Luke Wren f7b3097ad6 Fix some bugs/typos in DM, add a tb to run read/write vectors against DM, confirm that GPR read/write works 2021-07-11 16:20:39 +01:00
Luke Wren 5cc483898d Add smoke test for core debug interface, and suppress bus fetch incrementing frontend level counter when in debug mode 2021-07-10 21:02:18 +01:00
Luke Wren 58a6b8b4c8 Add 32IM testlist 2021-06-05 12:03:05 +01:00
Luke Wren be79a611e1 Increasing p2align on vectors from 8 to 12 (as it was originally) makes coremark go back up from 2.91 to 2.92. Still mystified as to why. 2021-06-04 09:19:18 +01:00