Commit graph

75 commits

Author SHA1 Message Date
Guillaume Chauvon
8fa590b5c3
CVXIF 1.0.0 (#2340) 2024-07-12 10:53:18 +02:00
Côme
5fcc39dbee
remove round interval (#2353) 2024-07-11 17:35:03 +02:00
Côme
96ae8ed223
superscalar: allow speculative instructions (#2278) 2024-06-20 15:55:56 +02:00
AngelaGonzalezMarino
9142fdd03a
integrate unified mmu with H extension (#1958) 2024-05-16 00:24:50 +02:00
Florian Zaruba
ecd6ed6b6b
Move DCacheType to config struct (#2025) 2024-04-10 23:26:21 +02:00
Florian Zaruba
38e8c059b2
Parameterization and other fixes for downstream project (#1950)
* Bender fixes and switch to `cva6_fifo_v3`
* cfg: Fix verilator warnings
* Bender: Fix yml
* acc_dispatcher: Add `csr_addr_i`
* parameterization: Fox AXI_USER_EN warning
* wb_cache: Fix Verilator Lint warnings
* cva6_fifo_v3: Add to Flist
* parameterization: Address review concerns
* Switch to `cva6_fifo_v3`
* tracer: Remove tracer interface

The interface made a bunch of problems with the
typedefs so I've removed it.

---------

Co-authored-by: JeanRochCoulon <jean-roch.coulon@thalesgroup.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-05 13:02:18 +02:00
Bruno Sá
86e1408666
Hypervisor extension (#1938)
Support 64bit H extension
2024-03-21 10:28:01 +01:00
JeanRochCoulon
b3ae6e9362
Revert MMU (#1890)
* Revert "fix vcs simulation errors regarding hypervisor extension code (#1889)"

This reverts commit 5ff5f164fb.

* Revert "Mmu user manual (#1881)"

This reverts commit 6a5863e71a.

* Revert "Mmu unify pr (#1876)"

This reverts commit 9fb5db2555.
2024-03-05 16:44:40 +01:00
AngelaGonzalezMarino
9fb5db2555
Mmu unify pr (#1876) 2024-02-29 22:03:56 +01:00
Nils Wistoff
29eae1ca22
tech_cells_generic: Upgrade to v0.2.13 (#1676) 2023-12-06 11:16:58 +01:00
Noah Huetter
7d01f240e9
bender: Add writeback cache configuration (#1656) 2023-11-24 16:52:43 +01:00
Florian Zaruba
5d6a5b5911
bender: Fix deleted file (#1530) 2023-10-12 16:25:17 +02:00
Florian Zaruba
172659959e
Upstream bender changes (#1493)
* [bender] Fix bender scipt

Signed-off-by: Florian Zaruba <florian@openhwgroup.org>

* [bender] Remove standard `acc_dispatcher`

Signed-off-by: Florian Zaruba <florian@openhwgroup.org>

---------

Signed-off-by: Florian Zaruba <florian@openhwgroup.org>
2023-10-02 15:52:06 +02:00
Florian Zaruba
91df62885f
Parametrize debug module (#1382) 2023-09-13 16:22:24 +02:00
Hossein Askari
7c94f9f92e
Adding configs for Polara (#1309) 2023-08-14 08:02:35 +02:00
JeanRochCoulon
716d21c424
Define AXI as cva6 input parameters (#1315)
* add axi parameters to cfg

* Move axi_intf.sv from core to corev_apu

* Move ariane_axi_pkg.sv from core to corev_apu

* Merge axi and l15 into noc

* Fixes to build and run openpiton

---------

Signed-off-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>
Co-authored-by: Jonathan Balkind <jbalkind@ucsb.edu>
2023-07-24 10:34:30 +02:00
JeanRochCoulon
279ce9fb9b
Define RVFI as cva6 parameter (#1293) 2023-07-19 08:21:39 +02:00
Nils Wistoff
513bb91f82
Add Ara support (#1024)
Support Ara via a custom, parametrised accelerator interface.

    cv64a6_imafdcv_sv39_config_pkg.sv enables V extension
    Pre-processor constant ARIANE_ACCELERATOR_PORT enables the interface between CVA6 and Ara. 
    FPU is bumped to a SIMD-compatible version

Backwards compatibility should be preserved. Once this is merged, we will change the reference of Ara upstream CVA6.

-----

Signed-off-by: Nils Wistoff <nwistoff@iis.ee.ethz.ch>
Co-authored-by: Matheus Cavalcante <matheusd@iis.ee.ethz.ch>
Co-authored-by: Matteo Perotti <mperotti@iis.ee.ethz.ch>
Co-authored-by: JeanRochCoulon <jean-roch.coulon@thalesgroup.com>
2023-07-10 17:12:59 +02:00
JeanRochCoulon
b0a3b90f85
Move ariane.sv from tb to src directory (#1231)
Signed-off-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>
2023-05-12 15:30:41 +02:00
Flavien Solt
23c4a002aa
Bender.yml: Correct path and location of rvfi_pkg (#1190) 2023-04-19 13:29:05 +02:00
Flavien Solt
c492904dd5
Fix reference to ariane.sv in Bender.yml (#1189) 2023-04-19 13:28:09 +02:00
Nils Wistoff
3833439fb7
fpu: ⬆️ Update FPU version (#1102)
Co-authored-by: Matteo Perotti <mperotti@iis.ee.ethz.ch>
Co-authored-by: Matheus Cavalcante <matheusd@iis.ee.ethz.ch>
Co-authored-by: JeanRochCoulon <jean-roch.coulon@thalesgroup.com>
2023-04-14 23:53:45 +02:00
JeanRochCoulon
31948853c6
Replace WT_DCACHE define by CVA6ConfigCacheType localparam (#1127) 2023-03-21 14:18:18 +01:00
Nils Wistoff
542f92baa7
Update Bender.yml following the common_cell vendorization (#1101)
Signed-off-by: Nils Wistoff <nwistoff@iis.ee.ethz.ch>
Co-authored-by: Nicole Narr <narrn@student.ethz.ch>
Co-authored-by: Jannis Schönleber <joennlae@gmail.com>
2023-03-07 18:24:23 +01:00
Zbigniew Chamski
8a5898dce4
Vendorize CVA6 core submodules (common_cells, FPU with related sub-modules) (#1007) 2022-12-09 11:07:12 +01:00
sébastien jacq
c5947082c4
Optimize FPGA memories (#989) 2022-11-08 23:15:02 +01:00
Luca Colagrande
75250868eb
wb_dcache: Forward atomic transactions to AXI (#777)
* wb_dcache: Forward "atomic transactions" to AXI

* Correct bugs

* Forward LR/SC atomics

* Fix CI

* miss_handler: Route AMO port through arbiter

* axi_adapter: Correct LOAD AMOs handling

Accept read data only after (or together) handshake on B channel

* Restore old ID

* Correct atop encodings

* Correct AMOs AXI ID

* Correct wb_dcache testbench

Previously not comparing AMOs at all! Due to amo_exp_resp being 'x

* Realign and sign extend 32b request rdata

* Use axi_pkg definitions for ATOPs encoding

* Remove whitespace

* wb_dcache: Style corrections

Co-authored-by: Florian Zaruba <florianzaruba@gmail.com>

Co-authored-by: Florian Zaruba <florianzaruba@gmail.com>
2022-03-09 16:33:37 +01:00
Nils Wistoff
741e82133d
ariane_testharness/ariane_xilinx: Fix AXI ID width (#813)
- Fix the AXI ID width for the CLINT (previously `4`, now `5`)
- Parametrise the CLINT's AXI types
- Deprecate `axi_[master|slave]_connect` and move to AXI assign macros,
  as they allow arbitrary AXI types

Signed-off-by: Nils Wistoff <nwistoff@iis.ee.ethz.ch>
2022-02-06 11:17:21 +01:00
Michael Rogenmoser
4bdfa69d20
axi and common_cells upgrade (#791)
* Change questa version reference format

* bump common_cells to v1.23

* Bump axi to v0.31.0, replace axi_node with axi_xbar

* Bump register_interface for axi compatibility

* add prot signals to axi_lite for compatibility
2022-01-15 11:08:14 +01:00
JeanRochCoulon
1094082d75
Makefile: Implement plateforms defined in cva6 specification (#769)
* Makefile: Implement the plateforms defined in cva6 specification
target variable can take cv64a6_imacfd_sv39, cv32a6_imac_sv0,
                         cv32a6_imac_sv32, cv32a6_imacf_sv32

Signed-off-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>

* Fix plateform name: from imacfd to imafdc
                    from imacf to imafc

Signed-off-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>
2021-11-26 10:39:08 +01:00
Andreas Kuster
39e4bb554b
Bender cleanup and proper cv64a/cv32a switch (#762)
* Remove src file artifacts

* Separate 32/64bit config into separate targets
2021-10-22 10:09:07 +02:00
Andreas Kuster
1ef87e82d4
Update bender.yml to match new project structure (#759)
* Update source file paths to match new project structure

* Add missing src files

* Add missing sync.sv module
2021-10-12 22:27:29 +02:00
Florian Zaruba
97172398ad
Add support for SV32 MMU (#701)
Signed-off-by: Florian Zaruba <florian@openhwgroup.org>
Co-authored-by: sjthales <sebastien.jacq@thalesgroup.com>
2021-08-05 17:29:44 +02:00
Emeric Poulin
caf1872837
Make the cache size and assoc configurable (#690)
* Make the cache size and assoc configurable

Signed-off-by: Emeric Poulin <emeric.poulin@thalesgroup.com>

* Fix cache_inval_t to pass Travis

Signed-off-by: Emeric Poulin <emeric.poulin@thalesgroup.com>
2021-06-26 00:22:44 +02:00
Luca Zulberti
d88cfebed8
Remove CVA6 dependency on ariane_soc_pkg (#598)
*_slv_t types are needed only in ariane_testharness.
The CVA6 core should not depend on packages related to the SoC
where it is placed.

Signed-off-by: Luca Zulberti <zulberti.luca@gmail.com>
2021-02-16 12:07:20 +01:00
Nils Wistoff
de5077332e cache_subsystem: merge icaches
- add wrapper module to connect wt_icache to AXI bus
- replace std_icache by cva6_icache_axi_wrapper
- rename wt_icache to cva6_icache

Signed-off-by: Nils Wistoff <nwistoff@iis.ee.ethz.ch>
2020-10-07 10:00:33 +02:00
Florian Zaruba
eef5ff6d3a
Revert "Add FPGA Optimized Register File Version"
This reverts commit c69ebadcd2 as it unfortunately broke Linux booting
on the Genesys image.

Signed-off-by: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
2020-08-27 18:02:42 +02:00
Moritz Schneider
f8b7bc0670 bender: update file list 2020-08-24 14:04:58 +02:00
ganoam
c69ebadcd2 Add FPGA Optimized Register File Version
Add a register file, optimized for synthesis on FPGAs supporting
distributed RAM.

Principle:

The baseline implementation implements the register file as an array of
flip-flops and implements large multiplexers for read- and write-
accesses. On FPGAs, we have a more efficient implementation for data
storage: By using distributed RAM for memory storage, we can store up
to 64 bits in just one LUT (depending on the memory layout and FPGA
device). In addition, distributed RAM comes with integrated address
decoders. The register file features one distributed RAM block per
implemented sync write port, each with the parametrized number of
async read ports. The read access is arbitrated depending on which
block was last written to. For this purpose an additional array of
*NUM_WORDS* registers is maintained keeping track of write accesses.

Since both FFs and multiplexers are an expensive structure on FPGA
technology, the achieved savings are considerable. The register file
is used for the FPU and general purpose register files.

Concrete Savings: (Xilinx Kintex-7, xc7k325tffg900-2)

```
            LUT    FF      LUTRAM
---------------------------------
baseline:   40499  22799   0
optimized:  36350  18806   440
---------------------------------
Diff        -4149  -3993   +440
            -10.2% -17.5%
```

Signed-off-by: ganoam <gnoam@live.com>
2020-08-24 14:01:07 +02:00
Nils Wistoff
08c71a2273 ariane_soc: Add APB timer peripheral (#361) 2020-01-22 14:42:09 +01:00
Florian Zaruba
9392f86b42 sync: Replace sync_* by clint_sync_*
This should avoid naming conflicts with Amazon's F1 instances.
2019-09-12 21:43:50 +02:00
Fei Gao
6766c73638 wt_cache: Enable exp back-off for LR/SC (#280)
* enable exp_backoff for LR/SC

also changed to check LR instead of checking SC.

* add exp_backoff module in

* Add exp_backoff in Bender.yml

* add exp_backoff in Makefile src list
2019-07-14 21:43:39 +02:00
Stefan Mach
68a11c30a6 fpu: Bump to fix divsqrt freezing bug (#277)
* ⬆️ [fpu] Bump to fix divsqrt freezing bug

* 🔧 Fix Verilator for FPU

Warnings about blocking/nonblocking assignments added to ignore list
2019-07-10 23:27:23 +02:00
Florian Zaruba
11c36cb5d3 bender: Use Bender to generate file lists 2019-06-04 10:36:17 +02:00
Michael Schaffner
42412b9616 Bump common cells to v1.12 2019-06-04 10:36:17 +02:00
msfschaffner
07df142624 Maturity fixes and AXI extensions for write-through cache system (#188)
* : Fix PITON_ARIANE define issues
* Fix write-back / cache read collision issue in serpent dcache.
* Add separate bootrom / device tree for openpiton (hardcoded for 1x1 tile config at the moment).
* Bootrom generation update (better compatibility with older python versions), new bootrom for OpenPiton+Ariane.
* Fix assertion in icache.
* Correct JTAG timing constraints.
* Fix parameter type in fpga toplevel (fix #168).
* Remove conflicting bootrom from fpga file list.
* This flushs the branch predictors when entering exception handlers in order to avoid speculative fetches from virtual addresses (to be improved with PMAs).
* Fix byte offset of IPIs in CLINT
* Disable DCache flushes on fence for write-through cache (not needed in that case)
* Fix blocking assignments in ff process.
* Fix register access issue in debug mode, only affects A0 (fix #179).
* Fix multiple driver issue in PLIC
* Do not assume replicated data in serpent dcache when reading from an NC region.
* Another byte offset fix in IPIs (CLINT)
* Add AXI64 compliance switch to dcache_mem
* Fix genesys 2 constraints
* Map serpent atomic requests onto AXI atomic/exclusive transactions.
* Cleanup of AXI memory plumbing, add separate AXI adapter module.
* Remove unneeded interface signals, increase wbuffer #pending tx
* Fix verilator compilation issues in AXI adapter.
* Delete unnecessary constraint
* Delete duplicate module instance
* Update gitlab CI script
* Small fixes to make riscv atomics work with serpent_axi_adapter.
* Update travis and gitlab-ci scripts
* Register b responses for better timing.
* Remove fpu div submodule, update Makefile paths and src lists
* Constant bits in haltsum reduction must be 1 (AND reduction).
* Switch to DTM from riscv-dbg submodule
* Further cleanup fixes in AXI/serpent atomics
* Bump riscv-dbg version
2019-03-18 11:51:58 +01:00
Michael Schaffner
35cfa8e884
Add simulation feature for openpiton that exposes the retired PCs. 2018-10-26 19:27:17 +02:00
Michael Schaffner
423f9a5e4a
Improve serial divider performance by aligning operands, add serdiv testbench to CI 2018-10-19 10:00:33 +02:00
msfschaffner
8468544156
Misc majurity fixes (#125)
* Fix latch and timing loop in debu_req

* Fix unconnected IPI signals in CLINT, and unconnected regs in CSR_REGFILE

* Fix several issues with AXI IDs in axi_adapter, add AXI ID width parameter, and assertions testing for invalid read/write data

* Eliminate sim, simc make targets for Questa. Tests can be directly invoked via typing name and optionally specifying the gui-mode.

* Initialize instruction traced shadow regfile to zero at start of simulation

Fix progbuf offsets and tie unsupported counters to zero to avoid propagation of X

Fix printouts of assertions

Modify bootrom to prevent assignment of X to output

* Make separate CI target for AMO tests

* Bump fpga-support version

* Add AMO tests list

* Fix FPU submodule version

* Change core_id + cluster_id into hart_id

* Rename gitlab CI tests

* Replace all SYNTHESIS macros with pragma translate_off

* Update readme, bump common cells, benderize

* Fix torture make target

* Remove unneeded signal
2018-10-17 11:57:18 +02:00
Stefan Mach
891579aaab ⬆️ Bump FPU and add divsqrt CSR 2018-10-10 21:19:34 +02:00