Commit graph

7424 commits

Author SHA1 Message Date
JeanRochCoulon
a283d3eea2
Define cv32a60x configuration (#2608)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
2024-11-18 15:51:21 +01:00
AngelaGonzalezMarino
33c5d77bd8
Altera opt 1 (#2592)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
The first optimization for Altera FPGA is to move the instruction queue to LUTRAM. The reason why the optimization previously done for Xilinx is not working, is that in that case asynchronous RAM primitives are used, and Altera does not support asynchronous RAM. Therefore, this optimization consists in using synchronous RAM for the instruction queue and FIFOs inside wt axi adapter.

The main changes to the existing code are:

New RAM module to infer synchronous RAM in altera with independent read and write ports (SyncDpRam_ind_r_w.sv)

Changes inside cva6_fifo_v3 to adapt to the use of synchronous RAM instead of asynchronous:

When the FIFO is not empty, next data is always read and available at the output hiding the reading latency introduced by synchronous RAM (similar to fall-through approach). This is a simplification that is possible because in a FIFO we always know what is the next address to be read.

When data is read right after write, we can’t use the previous method because there is a latency to first write the data in the FIFO, and then to read it. For this reason, in the new design there is an auxiliary register used to hide this latency. This is used only if the FIFO is empty, so we detect when the word written is first word, and keep it in this register. If the next cycle comes a read, the data out is taken from the aux register. Afterwards the data is already available in the RAM and can be read continuously as in the first case.

All this is only used inf FpgaAlteraEn parameter is enabled, otherwise the previous implementation with asynchronous RAM applies (when FpgaEn is set), or the register based implementation (when FpgaEn is not set).
2024-11-15 14:34:15 +01:00
Nils Wistoff
f54b9d4152
csr_regfile: Fix S-mode traps when H extension is enabled (#2599)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
If Hypervisor extension is enabled, the logic required to properly trap
to S mode is currently excluded. Fix this by adjusting the if block.
2024-11-14 12:35:40 +01:00
JeanRochCoulon
2d9936d171
Disable superscalar for cv32a65x configuration (Enable single issue) (#2600) 2024-11-14 12:22:30 +01:00
Côme
7eb59c3e16
iro: remove an unreachable statement (#2588)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
2024-11-12 20:32:40 +01:00
Côme
43edcd467e
document issue stage (#2598)
* Fill docs/design/design-manual/source/cva6_issue_stage.adoc
* Add variables to docs/design/design-manual/source/design.adoc
* Update port doc comments in core/issue_stage.sv, core/issue_read_operands.sv and core/scoreboard.sv
2024-11-12 20:28:25 +01:00
AngelaGonzalezMarino
6a86ebd2af
add CVA6ConfigFpgaAltera parameter (#2590)
First step to add FpgaAltera optimization parameter
2024-11-12 20:27:15 +01:00
AngelaGonzalezMarino
16f37b95e6
Fix issue when NrPMPEntries=0 (#2589)
Additional fix to #2392
2024-11-12 15:32:08 +01:00
Valentin Thomazic
4f5492d341
Add failure checks in report_tandem script (#2597)
Add failures checks in `.gitlab-ci/scripts/report_tandem.py`:
* catch wrong or missing log directory
* catch wrong yaml reports
2024-11-12 14:56:25 +01:00
JeanRochCoulon
7ae45e1b96
use "testelf" branch for the gate simulation (#2595)
The simu-gate ci job was broken since a while. This PR fixes it.
2024-11-12 14:55:05 +01:00
JeanRochCoulon
5bc34d73a9
Revert "csr_regfile: Fix S-mode traps when H extension is enabled (#2587)" (#2594)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
This reverts commit 485c382b23.
2024-11-12 10:41:03 +01:00
Nils Wistoff
485c382b23
csr_regfile: Fix S-mode traps when H extension is enabled (#2587)
If Hypervisor extension is enabled, the logic required to properly trap to S mode is currently excluded. Fix this by adjusting the if block.
2024-11-12 08:33:13 +01:00
dependabot[bot]
67f185cac5
Bump verif/core-v-verif from 72bd7ca to f73efc4 (#2593) 2024-11-12 07:10:27 +01:00
Côme
4619a67fc6
expand glob port maps (#2585)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
Expands all glob port maps in the core/ directory of this repository except the core/cache_subsystem/ directory, despite the glob port maps in core/cache_subsystem/miss_handler.sv and core/cache_subsystem/std_nbdcache.sv.

Also reorders port maps to keep the same order as port declarations.
2024-11-07 16:51:46 +01:00
Guillaume Chauvon
65285e5498
Dev/hpdcache fpga (#2586)
Set HPDCACHE as default cache for FPGA boot configuration ie. cv32a6_imac_sv32
2024-11-07 16:50:48 +01:00
Jalali
aea4e3d174
Remove compile-time define from Makefile and update core-v-verif HASH (#2584) 2024-11-07 13:46:46 +01:00
joncapltd
a48fe03f0e
New tutorial for coprocessor modification. (#2518)
This adds a tutorial on how to customise the example coprocessor with your own instructions and test them.
2024-11-07 13:45:10 +01:00
Matteo Perotti
f2d88cddc6
RVV: 🐛 fix exception propagation from Ara (#2583)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
Fix Ara's exception propagation using correct exception_t data type.
2024-11-06 23:48:28 +01:00
Zbigniew Chamski
4604195f52
[benchmarks] Pass DV_OPTS to dhrystone execution. (#2582)
ix the dhrystone execution script so that any ISS options accumulated in shell variable DV_OPTS are duly propagated to cva6.py.
2024-11-06 18:23:14 +01:00
Cesar Fuguet
6bbc1e6d35
update the hpdcache to its latest version (#2579)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
2024-11-05 23:57:20 +01:00
Riccardo Tedeschi
01845dd76b
Initialize mock_uart signals on reset (#2580)
The former kind of signal initialization generates compilation errors using VCS to simulate the design due to multiple drivers driving those signals. Since these signals are handled inside the always_ff block, they can just be reset.
2024-11-05 17:53:48 +01:00
Valentin Thomazic
3d267f9344
refactor gitlab ci & collect full fpga build artifacts (#2576)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
* refactor gitlab ci & collect full fpga build artifacts
* remove fpga log.tail from dashboard
2024-11-04 19:37:52 +01:00
JeanRochCoulon
3a9c2aa1ba
[HOT FIX] Update expected gate count result (#2574)
This gate count increase has been added by #2555. The root cause has not been found but the deviation is small, and as it impacts the merge process (the ci is red), I prefer to fix the ci.
2024-11-04 17:41:58 +01:00
Valentin Thomazic
51543db607
fix readme links (#2575)
Fix dashboard and label links in README (see #2554 )
2024-11-04 17:33:19 +01:00
Côme
9676d230fb
Mention that PR must be updated in CONTRIBUTING.md (#2568)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
2024-11-04 12:09:41 +01:00
Côme
0687510f02
document superscalar cv32a65x (frontend + decode) (#2570)
Update the documentation of cv32a65x to make it superscalar.
This first PR only updates the documentation of the frontend and decode stages.
2024-11-04 09:29:48 +01:00
André Sintzoff
7aad781b74
doc: pmp granularity equals to 8-byte (#2572) 2024-11-04 09:27:23 +01:00
Nils Wistoff
aeb0b646bf
cache_ctrl: Generalise AXI offset generation (#2573)
For `XLEN = 64`, some tools (e.g. VCS) still elaborate the offset generation block for `XLEN = 32`, throwing an elaboration error (illegal bit access). Fix this by generating the AXI offset in an equivalent, parameter-agnostic and tool-friendly way.
2024-11-04 09:24:57 +01:00
Matteo Perotti
9e670f64c6
acc_dispatcher: don't issue instruction from buffer if flushing (#2490)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
The controller flushes the pipeline and all the unissued instructions in the presence of instructions with side effects (e.g., fence).
The accelerator dispatcher buffer (now used with the Ara RVV Vector processor) is flushed when this happens and avoids accepting a new instruction in that cycle, but it does not prevent the actual issuing of instructions during a flush cycle.
This fix avoids the issue during a flush cycle.
2024-11-01 17:04:12 +01:00
slgth
ab2283c075
doc: keep documentation in sync with the code (#2558)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
Both the ISA and design documentations use some parameters generated from the RTL (ports, parameters).
As of now, they are committed to the repository and can be out of sync with the code.

This PR removes them from the repository and freshly generates them from the code when building HTML files.

This PR also removes prebuilt HTML files (design & ISA docs) and generates them when building the top-level Read the Docs documentation (make -C docs).
2024-10-25 12:27:09 +02:00
Jean-Roch Coulon
01c636dd55 report_benchmarks.py: update results
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled
2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
61c38ea459 Install Verilator only if DV_SIMULATORS == veri-testharness 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
9ceab195fd Clean-up: Remove unused regression suites and tools from CI job scripts 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
6fc8d60c14 Dhrystone_smoke.sh: smoke-smoke is done on dhrystone for the cv32a65x configuration 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
8a457272b7 Split smoke-tests.sh into 3 tests to speed-up CI timing execution of light stage 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
ce24338d5b Run 4 iterations of coremark to improve results 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
fd6037fefe Set BHTEntries=128, cache=WT and scoreboardentries=8, Icache size=16384 to improve Coremark and Dhrystone results 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
37a9cf733b Create dedicated spike.yaml file for cv32a65x configuration. When another configuration is selected, no spike.yaml is provided to Spike, the default internal Spike configuration is used. When hwconfig is targetedi with cv32a65x as reference, cv32a65x spike.yaml is recopied into hwconfig directory. 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
9cfadbeded Create dedicated linker scripts for cv32a65x configuration. When another configuration is targeted, the default linker script is used (config/genxxx/linker/link.ld). When hwconfig is targeted, linker scripts are recopied into hwconfig directory.
Keep only one unique linker script: link.ldi. Remove test.ld file.
2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
1d0076eec3 smoke-hwconfig: run with vcs-uvm and use return0 test to speed-up CI light stage timing execution 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
8e605df1f9 Declare VLEN as new CVA6 parameter 2024-10-23 18:24:38 +02:00
Jean-Roch Coulon
4ca7a3ae38 Fix: Replace riscv_pkg:VLEN by CVA6Cfg.VLEN 2024-10-23 18:24:38 +02:00
JeanRochCoulon
45eaace82b
Revert "Multicommits to shorten smoke-tests duration, to declare VLEN as para…" (#2564)
This reverts commit 0877e8e446.
2024-10-23 18:12:49 +02:00
JeanRochCoulon
0877e8e446
Multicommits to shorten smoke-tests duration, to declare VLEN as parameter, to improve coremark results, to implement spike.yaml/linker dedicated to 65x (#2563)
- FIX: Replace riscv_pkg:VLEN by CVA6Cfg.VLEN
- Declare VLEN as new CVA6 parameter
- smoke-hwconfig: run with vcs-uvm and use return0 tests to speed-up CI light stage timing execution
- Use dedicated linker scripts for 65x configuration.
- Use dedicated spike.yaml for 65x configuration.
- Set BHTEntries=128, cache=WT, scoreboard entries=8 to improve Coremark and Dhrystone results
- Run 4 iterations of coremark to improve results
2024-10-23 17:56:06 +02:00
Anouar
20b64e8939
Performance tb (#2562)
For reminder, the option --issrun_opts="+tb_performance_mode" allows to disable UVM features like assertion and log generation to reduce simulation time.
2024-10-23 13:11:25 +02:00
Moritz Schneider
21dc824040
Fix pmpaddr read logic considering G=2 (#2469)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
fixes #2465
2024-10-23 08:54:25 +02:00
Riccardo Tedeschi
53472eb026
Move timing statement outside of always_comb block (#2552)
Fix following requirement:

The assertion included in the always_comb block apparently violates the requirements in [section 9.2.2.2.2 of the SystemVerilog standard](https://ieeexplore.ieee.org/document/10458102):

Statements in an always_comb shall not include those that block, have blocking timing or event
controls, or fork-join statements.
2024-10-23 07:32:49 +02:00
Nils Wistoff
b4d000bb77
cv64a6_imafdch_sv39_wb_config: Fix undefined parameter (#2513)
The parameter `CVA6ConfigTechnoCut` is undefined and causes elaboration
errors. Align this with the other configurations and set it to constant `0`.
2024-10-23 06:12:17 +02:00
Côme
c1c2f9d922
ci: print results in job logs (#2561)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
This modification allows:
- printing the results in the terminal
- running the script from the terminal (without the environment variables from CI)
The yaml report is only built in CI, but the results are always printed.
2024-10-22 19:03:46 +02:00
André Sintzoff
67a6ae966c
update riscv-isa-manual to riscv-isa-release-2c07aa2-2024-10-18 (#2560)
Since last riscv-isa-manual update (CVA6 commit 3059b1cb2):
        - Privileged Architecture 1.13 ratified
        - minor documentation changes
        - wavedrom file renamed to .edn
2024-10-22 14:44:02 +02:00