Commit graph

2798 commits

Author SHA1 Message Date
darotsr
e212b7dfed added tinyprintf in the SW 2024-09-29 21:30:53 +03:00
darotsr
5f9e027763 new target, flist, for isolde/simple_system/Makefile 2024-09-29 17:33:23 +03:00
daro
b44f01004a extended x register file with additional read ports 2024-09-24 15:19:24 +03:00
daro
7755227294 improved rtl/isolde_exec_block.sv 2024-09-23 22:39:06 +03:00
darotsr
1f3fa3045a NEW: instr encoding 2024-09-23 21:22:21 +03:00
daro
b26686b3d3 refactored rtl/isolde_register_file_ff.sv 2024-09-23 17:53:16 +03:00
daro
c199a74036 added rtl/isolde_exec_block.sv 2024-09-22 22:40:04 +03:00
daro
8edef1c93b inital version of isolde_fetch2exec_if 2024-09-22 16:29:42 +03:00
daro
3d67c37f8b test case updates 2024-09-21 20:21:30 +03:00
daro
8108019ee2 bugfix in rtl/isolde_decoder.sv 2024-09-21 16:07:34 +03:00
daro
e129216ddc initial implementation of vle32.q extended ISOLDE instruction 2024-09-21 14:56:34 +03:00
daro
2ad3c57bd7 work in progress: ISOLDE register file 2024-09-20 16:20:40 +03:00
daro
865982bcf8 initial version of ISOLDE register file 2024-09-19 21:55:40 +03:00
daro
397bd5af2f Updates in Makefile.tools 2024-09-17 20:41:03 +03:00
daro
d35937d2ba refactored isolde/sw/simple_system/common/simple_system_common.c for LLVM compiler 2024-09-17 17:50:32 +03:00
darotsr
6230ab864d LLVM toolchain from https://github.com/riscv-collab/riscv-gnu-toolchain/releases 2024-09-16 18:43:18 +03:00
darotsr
9359f22b0b work in progress: llvm toolchain 2024-09-16 17:07:00 +03:00
daro
d148a602e7 Bugfix FSM for decoding variable length instructions 2024-09-15 18:59:39 +03:00
daro
2e1af7e380 WIP: fetching a batch of instruction, initial FSM for decoding variable length instructions 2024-09-11 16:41:56 +03:00
daro
53775e95f7 WIP bug fixing 2024-09-11 06:50:12 +03:00
daro
a9079af5ef bugfixing rtl/isolde_fetch_vleninstr.sv 2024-09-09 11:54:29 +03:00
daro
0274ff8292 first attempt to variable length fetch, not working yet 2024-09-08 23:26:24 +03:00
daro
8cbbe5418e WIP fetch variable lenght instructions 2024-09-08 14:39:20 +03:00
daro
7894c40068 inital version of rtl/isolde_fetch_vleninstr.sv 2024-09-07 22:53:13 +03:00
darotsr
ecbbeb5f62 modified start-up code, ecall shall end the simulation 2024-09-05 13:31:28 +03:00
darotsr
9dfe1ec8f3 updates in Makefile 2024-09-05 12:13:48 +03:00
darotsr
7f8c47a59e ISOLDE simple_system inital revision 2024-09-04 18:56:41 +03:00
daro
64412777dd updates in Makefile.tools 2024-09-02 19:04:06 +03:00
darotsr
6985174121 ISOLDE initial setup 2024-09-01 19:26:46 +03:00
lingscale
53888bcdf4 [rtl] fix a typo. 2024-08-28 10:19:17 +00:00
lingscale
0cd79187b6 [doc] fix a typo. 2024-08-28 10:17:28 +00:00
Gary Guo
03ba286570 Fix icache regression failure on VCS
It appears that VCS require expression after `iff` to be wrapped inside
parenthesis otherwise it will complain about syntax error.

This should fix the weekly VCS regression.

Signed-off-by: Gary Guo <gary.guo@lowrisc.org>
2024-08-26 14:44:27 +00:00
Greg Chadwick
38c0709391 [rtl] Remove ECC related data_rdata_i -> instr_X_o feedthroughs
Prior to this commit an ECC failure on the incoming data memory response
factored directly into the outputs for the instruction memory
interfaces. This existed due to a desire to take an NMI on an ECC
failure as soon as possible but causes timing issues so it has been
altered.

Now rather than directly raise the NMI the same cycle the assertion of
'irq_nm_int' is delayed by a cycle which breaks the feedthrough path.
2024-08-23 20:31:14 +00:00
Greg Chadwick
3937e484da Add SECURITY.md 2024-07-16 14:05:47 +00:00
Greg Chadwick
96a1c02ba0 [dv] Increase iterations and instructions in riscv_rf_intg_test
This enables more scenarios begin stimulated per regression run around
RF ECC errors.
2024-07-15 22:02:06 +01:00
Greg Chadwick
6ac0ddc46e [dv] Alter riscv_rf_intg_test to cover more scenarios
Previously the riscv_rf_intg_test skipped certain scenarios where an ECC
error from the register file should trigger an alert. This change stops
it from skipping those scenarios.
2024-07-15 22:02:06 +01:00
Greg Chadwick
9e4a950aa6 [rtl] Fix logic for generating ECC related alerts
Under certain circumstances Ibex ignored the ECC check from the register
file when it should not have. This fixes the issue.

Fixes #2188
2024-07-15 22:02:06 +01:00
Greg Chadwick
668233699d [dv] Add spurious responses to memory agent
A spurious response is one that isn't associated with any on-going
request. With this new feature the memory agent can generate them
randomly when the interface is idle (i.e. there are no outstanding
requests).
2024-07-04 22:51:30 +00:00
Pascal Nasahl
0e0f27ad14 [dv] Add riscv_ram_intg_test
This test injects a fault into different MuBi encoded signals within
the prim_ram_1p_scr and prim_ram_1p_adv and checks whether a fatal
alert is triggered.

I have excluded the addr_match signal from FI as its encoding
is not directly checked. If the signal was a MuBi True, a
fault into it is treated by the mubi4_and_hi as a False.
If the signal was a MuBi False, a fault into it is treated
by the mubi4_and_hi also as a False. Hence, no address
collision occurs and the holding register is not returned.

This PR is based on #2182 and closes #2173.

Signed-off-by: Pascal Nasahl <nasahlpa@lowrisc.org>
2024-07-04 10:58:40 +00:00
Greg Chadwick
3384bf4c42 [cosim] Clang lint fix 2024-07-03 15:31:44 +00:00
Greg Chadwick
e1f2df24d0 [ci] Bump co-sim version 2024-07-03 15:31:44 +00:00
Greg Chadwick
470b39a2a2 [dv] Output warning message on problematic MIP changes
When an interrupt is raised the Ibex controller will move from the
DECODE state to the IRQ_TAKEN state when it chooses to handle the
interrupt. When in IRQ_TAKEN it's possible for the interrupt state to
change again which aborts the interrupt entry. This leads to mis-matches
against cosim.

This change adds a warning to flag up cases where this has occurred to
enable quick triage of failures related to this scenario.
2024-07-03 15:31:44 +00:00
Greg Chadwick
65a7231a29 [cosim] Correctly deal with checking top of range memory accesses
The cosimulation environment does not know if a memory access from spike
is due to an instruction fetch or a data memory access. It uses a
heuristic to differentiate the two. Any access between the PC and the PC
+ 8 is considered an instruction fetch.

This heuristic did not correctly handle addresses at the top of the
range where the PC + 8 calculation overflows. This commit fixes the top
of range handling.
2024-07-03 15:31:44 +00:00
Greg Chadwick
e784d27464 [dv] Update testbench to use new 'pre_val' MIP
The 'pre_val' MIP addresses the scenario where MIP changes as an
instruction is excuting, this means a CSR instruction can observe a
different MIP from the one that decides whether or not that instruction
will be interrupted.
2024-07-03 15:31:44 +00:00
Greg Chadwick
3964804815 [dv] Fix model mismatches in cases where an access crosses PMP regions
Where an access is unaligned Ibex splits it into two transactions, each
of which undergoes a PMP check. It is possible for the first half to
fail a PMP check and the second to succeed and hence produce a request
on the memory interface.

In Spike it accesses memory byte by byte and if it encounters a PMP
error for a particular byte it won't try any further bytes.

This results in a mis-match between Ibex and spike when an unaligned
transaction is split across two PMP regions, one of which allows the
access and the other doesn't. Ibex generates a transaction and spike
doesn't producing an error.

This adds a fixup into the co-simulation environment. It detects when we
have an access that fails PMP that is misaligned. Where this has
resulted in Ibex producing a memory request that spike would not we
remove it from the list of memory requests to check after checking that
the request passes PMP within spike.
2024-07-03 15:31:44 +00:00
Greg Chadwick
89f4d86719 [dv] Fix exception_stall_instr_cross illegal bins 2024-07-03 15:31:44 +00:00
Greg Chadwick
2c132113c0 [dv] Add riscv_rf_ctrl_intg_test
This tests new hardening added to the register file around read and
write control signals.
2024-07-03 14:21:10 +00:00
Gary Guo
e2b721d488 [ci] update private CI 2024-07-01 16:15:41 +00:00
Greg Chadwick
1449ed5ea8 [dv] Add cover points for memory interface behaviour 2024-06-21 11:18:41 +00:00
Greg Chadwick
604ba343bb [dv] Fix race condition in ibex_mem_intf_agent
Previous code working with clocking blocks synced to the raw clock
event. Instead they should sync to the clocking block event. This
ensures the values being read are the latest values rather than a cycle
old.

In particular for ibex_mem_intf_agent this meant it was unable to
produce a single cycle response to any memory transaction. With this fix
these are now observed.
2024-06-21 11:18:41 +00:00