1175 Commits

Author SHA1 Message Date
Peter Rugg
0ae1d8a275 Clear compressed and uncompressed BTBs on mispred
This fixes a wedge in the frontend: the fetch stage could get stuck
in a loop, with the next address predictor deciding that the redirect
PC is a compressed instruction doing a close jump. On mispredict,
this would get retrained, but "mispedict" was denoted as an
untaken branch to PC+2. If unlucky, PC+2 could cross an alignment
boundary, causing the untaken branch to be interpreted as a long
branch, leaving an old competing entry in the compressed branch BTB,
which would then take priority.
Fix by always marking entries in both close and long BTBs when not
taken: to avoid hurting performance, this kind of update will not
insert into either BTB unless already present.
2025-01-20 16:50:40 +00:00
Jonathan Woodruff
ce2ded19ae Optimise timing/scheduling by always returning the head of the RAS stack.
This means that two returns decoded in the same cycle are likely to result in a misprediction.
The trouble here was that the Decode loop wouldn't build with slight changes due to a scheduling conflict through the RAS due to the dependence of the next ras.first method on the earlier ras.pop method.  This was indeed an unpleasant combinational path between concurrently decoding instructions.  This change allows all RAS predictions to be independent (by assuming no pushes or pops occur earlier in the bundle than a return).
2025-01-20 15:15:14 +00:00
Peter Rugg
1ae93da4f8 Restore per-instruction commit prints by default 2025-01-08 18:43:21 +00:00
Peter Rugg
1df304a820 Prevent various debug prints by default 2025-01-08 18:43:05 +00:00
Franz Fuchs
d1bea2faf0 Corrected CCSeal decoding function 2025-01-07 14:17:20 +00:00
Franz Fuchs
995b978e59 Merge pull request #29 from CTSRD-CHERI/faf28_fix_rvfi_offset
Fixed pc_wdata to be addresses instead of offsets
2024-12-16 12:19:26 +00:00
Franz Fuchs
2983835e26 Fixed pc_wdata to be addresses instead of offsets 2024-12-16 12:13:59 +00:00
Alexandre Joannou
cf73e1a927 Bump BlueStuff 2024-11-21 18:08:33 +00:00
gameboo
c59520e894 bump BlueStuff 2024-11-14 14:44:18 +00:00
gameboo
817d0249c5 Revert "Use only 20 bits of address on the AXI lite port"
This reverts commit c766187368.
2024-11-12 17:44:11 +00:00
Franz Fuchs
90fb959788 Revert "implement C_GET_HIGH"
This reverts commit 303331cc8f.
2024-10-23 17:39:32 +01:00
Yuecheng-CAM
303331cc8f implement C_GET_HIGH 2024-10-20 23:17:01 +01:00
Jonathan Woodruff
57fcf7a52a Revert "Revert "Use only 20 bits of address on the AXI lite port""
This reverts commit 47e12b8e65.
2024-09-26 11:06:31 +01:00
Peter Rugg
1cfc58c2cc Fix debug module reset state machine
dmactive should only go low when the debug module has successfully
reset. Approximate this by waiting for 1024 cycles, allowing any
register access requests and system bus requests to come back.
2024-09-16 23:15:24 +01:00
Peter Rugg
6fc7327b93 Support narrow debug module register accesses 2024-09-16 18:45:19 +01:00
Peter Rugg
aeae9b1f63 Busy the system bus when performing writes
This was probably removed for performance, but now that we have
a faster workaround for loading kernels on the DE10, we should
probably prioritise accurate error information instead.
2024-09-16 18:45:19 +01:00
Peter Rugg
af8432d3f3 Return Abstract Command Error on unsupported CSRs 2024-09-16 18:45:19 +01:00
Peter Rugg
3b6b78db83 Fix src_Verifier directories not being included in TestRIG builds 2024-09-16 16:12:40 +01:00
gameboo
47e12b8e65 Revert "Use only 20 bits of address on the AXI lite port"
This reverts commit c766187368.
2024-09-11 20:02:35 +01:00
gameboo
c766187368 Use only 20 bits of address on the AXI lite port 2024-07-08 17:12:47 +01:00
Samuel Stark
02ee2bdee0 Move RVFI toggle into Include_RISCY_Config.mk
Previously, Makefiles had to add new include paths and -D defines manually when they wanted to include RVFI.
This caused hard-to-diagnose errors in repositories consuming Toooba that expected -D RVFI to work.
This commit makes Include_RISCY_Config.mk take an optional make-variable argument RVFI, which defaults to "false", and adds the relevant paths and -D defines if it is set to "true".
This does not cover RVFI_DII, which is a simulation-only extension to allow instruction injection.
This commit also includes fixes to the Makefiles in ./builds/ to use this interface properly.
2024-06-03 15:51:48 +01:00
Peter Rugg
7e1c9fdc98 Bump BlueStuff 2024-05-21 16:22:00 +01:00
Peter Rugg
a5353f8f0f Bump BlueStuff 2024-05-21 16:16:55 +01:00
Franz Fuchs
1f382b1563 Add license again to TourPred.bsv 2024-05-18 17:12:43 +01:00
Jonathan Woodruff
3e4dd64673 Merge pull request #27 from CTSRD-CHERI/CHERI_unified_makefile
Restructure makefiles so that all common and branch-specific flags/files
2024-05-17 11:29:20 +01:00
Jonathan Woodruff
1b9d498e95 Standardise on using underscores in directory names in makefiles. 2024-05-17 11:21:42 +01:00
Jonathan Woodruff
2c648eb1ed Restructure makefiles so that all common and branch-specific flags/files
are in Include_RISCY_Config.mk so that this can be included from an
external repo without replicating Toooba branch-specific flags in that
repo.
2024-05-15 10:01:28 +01:00
Franz Fuchs
3b7cc5261a Merge pull request #23 from CTSRD-CHERI/faf28_konata
Add Konata support
2024-04-16 16:45:28 +01:00
Franz Fuchs
3532d44d56 Performed merge with CHERI 2024-04-16 16:42:37 +01:00
Franz Fuchs
598ac6574e Added working Konata support
Konata: change M to F3

Added konata support to ALU pipeline

Added KONATA support to Fpu pipeline

Added KONATA support to Mem pipeline

Finished v1 of KONATA support

Added improvements to catch fragments in Konata

Kill fragments that have been merged

Fixed order of konata logs

Added commit stage output

Ensured that only the Commit stage can retire instructions in konata

Fixed printing commit stage log for Cap instructions

Changed Kanata to include the cycle counter for each line in the log file; please note that this requires post processing

Added reservation station support for Konata

Added parsing script for Toooba output

Removed double updated to D stage

Adressed Peter's comments
2024-04-15 16:59:53 +01:00
Franz Fuchs
449070e347 Copied over preliminary Konata support from 89b0c37a7b
The referenced commit did not merge well with our code base. Therefore, I copied over the changes manually. These changes do
not constitute a working Konata support for Toooba. In this commit, I commented out some things that did not compile, which will be fixed in future
2024-04-15 16:57:20 +01:00
Jonathan Woodruff
9e4c8e54e1 Merge branch 'CHERI' into jdw57_getIssueLd_simplify 2024-04-15 09:14:31 +01:00
Jonathan Woodruff
70b82fb164 Insert deburster again on the vcu118-specific wrapper, as this design is known to work for the vcu118, or specifically, using the width converter. 2024-04-05 14:06:42 +01:00
Jonathan Woodruff
854e8e5bfb Another experiment to see if we can resolve the vcu118 build.
This one puts the in-order shim before the width converter.
2024-04-05 10:54:39 +01:00
Jonathan Woodruff
8990ae56ed Revert "Potential workaround for issue with vcu118 memory bus error."
This reverts commit f86ea0203d.
2024-04-05 10:44:50 +01:00
Jonathan Woodruff
f86ea0203d Potential workaround for issue with vcu118 memory bus error.
Just use the same ID for all outstanding requests such that all requests
are in-order.
Previously we were working fine with requests serialised; requests
are now fully pipelined and out-of-order.
This change should roll back to in-order, but still pipelined.
This only affects the top-level used in the GFE (vcu118).
This design is working on the DE10 setup, so the issue is not
believed fundamental with CoreW.
2024-04-04 14:09:16 +01:00
Jonathan Woodruff
6f8c371a5c Roll back DTlB to two cycles for timing on DE10. 2024-03-25 12:52:51 +00:00
Jonathan Woodruff
e0eefbcfd0 Be a little more careful with outstanding requests. 2024-03-18 09:10:55 +00:00
Jonathan Woodruff
235f025db8 Bump Bluestuff. 2024-02-20 14:19:46 +00:00
Peter Rugg
dd076fb189 Bump BlueStuff 2024-02-16 17:04:13 +00:00
Jonathan Woodruff
271bc9c0e8 Experimentally remove deburster.
This thing has a seraliser in it that serialises memory accesses, which
is a disaster for performance.
2024-02-16 09:50:07 +00:00
Franz Fuchs
15fd2a4009 fixed compiler error for use of calloc 2024-02-08 15:31:42 +00:00
Jonathan Woodruff
6838b02274 Move to 4-way L1 caches to reduce area usage of splitting data ways into
seperate BRAMs.
2024-02-05 09:40:15 +00:00
Jonathan Woodruff
0784902e45 Tune the instruction fetch FIFO to the lower-latency ICache. 2024-02-02 13:26:15 +00:00
Jonathan Woodruff
b65994c00c Include the new single-cycle CCPipe as a seperate implementation, and
use it only in the L1 caches so that the L2 cache can have lower
resource utilisation and better timing.  (Resource utilisation is up
about 5% with the new design, and it's not necessary for the L2 cache.)
2024-02-02 11:50:45 +00:00
Jonathan Woodruff
ccc71952bf Use forwarding BRAMs in L2 Cache. Duh; this is required for the new
CCPipe structure.
2024-02-01 13:44:36 +00:00
Jonathan Woodruff
7608543da5 Move back to more traditional implementation of the forwarded BRAM,
which also workst.
2024-02-01 10:07:48 +00:00
Jonathan Woodruff
3416040a74 Forward using a working forwarding memory rather than logic in CCPipe.
This design runs CoreMark successfully.
2024-01-31 13:29:59 +00:00
Jonathan Woodruff
0e87595d73 Work toward eliminating a cycle of cache latency by doing data lookup in
parallel with tag lookup.
2024-01-31 10:15:51 +00:00
Jonathan Woodruff
8e4848c4bc Turn off tracing in instruction fetch. 2024-01-26 16:32:16 +00:00