Commit graph

57 commits

Author SHA1 Message Date
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
André Sintzoff
3ddf797e95
Re-organize CVA6 and APU (#725)
* Initial repository re-organization (#662)

Initial attempt to split core from APU.

Signed-off-by: MikeOpenHWGroup <mike@openhwgroup.org>
Co-authored-by: Jean-Roch Coulon <jean-roch.coulon@invia.fr>

Compile `corev_apu` (#667)

* Makefile verilates corev_apu
* Cleanup README
* Fix URL to repo
* Cleaned-up Makefile verilates corev_apu

Signed-off-by: Mike Thompson <mike@openhwgroup.org>

Add extended verification support (#685)

* Makefile, riscv_pkg.sv: Select C64A6 or CV32A6

according to variant variable

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

* add RVFI tracer and debug support

New files: rvfi_pkg.sv, rvfi_tracer.sv, ariane_rvfi.pkg.sv

- RVFI ports are added to ariane module
- rvfi_tracer.sv is a module added in ariane-testharness.sv
- RVFI_TRACE enables RVFI trace generation

Co-authored-by: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
Signed-off-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>

* Move example_tb from cva6 to core-v-verif project

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

* Makefile: remove useless rule for vsim

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* Makefile: add timescale definition when vsim is used

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* Makefile: add vcs support (fix #570)

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* rvfi_tracer.sv: fix compilation error raised by vcs

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* Makefile: use only 2 threads for verilator

when using 4 threads, tests from riscv-compliance and riscv-tests
test suite are randomly stucked with rv32ima configuration

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* Flist.cva6: cleanup for synthesis workflow

Thales synthesis workflow does not manage comments at end of lines

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* Support FPGA generation

- ariane_xilinx.sv: fix AXI bus expansion
- .gitignore, Makefile, run.tcl: fix paths

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* riscv-dbg: update to 989389b0 (to support 32-bit CVA6 debug)

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* Create cva6_config_pkg to setup 32- or 64-bit configuration

According to selected configuration, Makefile calls
cv32a6_imac_sv0_config_pkg.sv or cv64a6_imac_sv39_config_pkg.sv

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

* Flist, ariane_wrapper.sv: add wrapper to expand rvfi and axi structures

needed for dc_shell

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

* cv*a6_*_pkg.sv, riscv_pkg.sv: (Fix) Use the camel case for the localparams

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

* riscv_pkg.sv: clean-up the cva6_config_pkg import

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

* Makefile, ariane.sv: RVFI_TRACE define conditions RVFI port in ariane

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

Co-authored-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>
Co-authored-by: Florian Zaruba <zarubaf@iis.ee.ethz.ch>

* Add lfsr.sv to manifest

Signed-off-by: Mike Thompson <mike@openhwgroup.org>

* Directory re-organzation

* fpga/xilinx/xlnx_axi_dwidth_converter_dm_*: move files (#726)

into the new file organisation

Signed-off-by: André Sintzoff <andre.sintzoff@thalesgroup.com>

* move mmu_sv32 and mmu_sv39, move bootrom, update path (#729)

Signed-off-by: sjthales <sebastien.jacq@thalesgroup.com>

Co-authored-by: Mike Thompson <mike@openhwgroup.org>
Co-authored-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>
Co-authored-by: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
Co-authored-by: sébastien jacq <57099003+sjthales@users.noreply.github.com>
2021-09-24 17:21:19 +02:00
Stefan Mach
cbbcf3565c fpu: Bump to release 0.6.2
Among other things, this fixes VCS simulation issues for F2F casts.
2020-06-02 19:09:27 +02:00
Florian Zaruba
a147562cb7
csr_regfile: Fix #261 non-setable MEIE bit (#302) 2019-08-19 15:03:16 +02:00
Florian Zaruba
e873743b54 Release 4.2.0 2019-06-04 10:36:17 +02:00
Florian Zaruba
4ca7b6cb67 Fix CHANGELOG.md to point to the right versions 2019-06-04 10:36:17 +02:00
Michael Schaffner
c06f6a2a49 Bump axi submodule to v0.7 and fix include path for registers.svh in run.tcl 2019-06-04 10:36:17 +02:00
Michael Schaffner
ba098456a6 Bump axi submodule to v0.6 2019-06-04 10:36:17 +02:00
Michael Schaffner
94c17c8f1c Update changelog and fix potential bug in install-verilator script 2019-06-04 10:36:17 +02:00
Michael Schaffner
2336f7e2e2 Update changelog 2019-06-04 10:36:17 +02:00
Michael Schaffner
f2b9a46c21 Update changelog 2019-06-04 10:36:17 +02:00
Michael Schaffner
d30369da8a fpu: Add distributed pipe regs to ease FPGA timing 2019-06-04 10:36:17 +02:00
Florian Zaruba
43d8bf3765 commit_log: Align compressed encoding to Spike 2019-06-04 10:36:17 +02:00
Florian Zaruba
e4cbe7f7c1 perf_counters: Fix bug in address encoding
The performance counters were accessible in user mode although
`mcounteren` or `scounteren` are not implemented. This commit moves the
writeable performance counters to machine mode. Access from
user/supervisor-space will trap as this is not implemented in Ariane.
2019-06-04 10:36:17 +02:00
Florian Zaruba
08374fb402 pma: Check for execute flag on instruction access
When speculation is on it can happen that the core is trying to fetch
from a wrong, speculated address. Depending on the SoC this can cause
lock-ups. Solution until now was to flush all branchprediction which is
quite costly in terms of performance. This commit fixes this and lets
the `frontend` check whether the access is actually legal.
2019-06-04 10:36:17 +02:00
Florian Zaruba
ab2b75a3ff irq_subsystem: Move interrupts to id_stage
This make execution more deterministic as we can decide early
whether the remaining pipeline is speculative or not. Furthermore it
removes a couple of logic gates during commit and clean-s up the tight
integration between `commit_stage` and `csr_regfile` which often lead
to combinational loops.

This patch is in preparation to fixing speculative reads to I/O regions.
2019-06-04 10:36:17 +02:00
Michael Schaffner
6ca412179e testharness: Add delay to debug_req signal (fixes #211)
Upon start the `debug_req` signal is being delayed for a couple of
cycles to give the core enough time to initialize `a0` and `a1` with its
`hartid` and a pointer to the `dts` (e.g. executing the first
instructions of the ZSBL). This fixes issue #211.
2019-06-04 10:36:17 +02:00
Florian Zaruba
5bf0d9256b rv_plic: Add lowrisc PLIC
Use a PLIC which has been developed as part of the lowrisc project. It
has been integrated into the Ariane SoC as a submodule pointing to a
fork which has some (temporary) custom patches on top.
2019-06-04 10:36:17 +02:00
Florian Zaruba
095cda6194 load_store_unit: Fix #70 default assignment issue 2019-06-04 10:36:17 +02:00
Florian Zaruba
970022ddbb axi_lite_interface: Fix path from ar_valid to addr_o 2019-06-04 10:36:17 +02:00
Michael Schaffner
2f75662957 This fixes an issue in the wt_axi_adapter that only appeared when using dcache lines that are wider than icache lines. 2019-06-04 10:36:17 +02:00
Michael Schaffner
9ce7bdeef1
Ariane 4.1.2 2019-03-20 15:54:57 +01:00
Michael Schaffner
310ee992dc Ariane 4.1.1 2019-03-19 11:20:42 +01:00
Florian Zaruba
48be94f822 Ariane 4.1.0 2019-03-18 11:51:58 +01:00
Florian Zaruba
a5f3184a65 Improve Tandem Simulation, switch-able caches and fix a cache-bug (#192)
* Add spike isa sim

* Fix AMO problem in verilator

* 🎨 Tidy up FPU wrapper

* Bump axi_exclusive submodule

* Refactor serpent AXI adapter, bump dbg and atomics submodules, add separate bootrom for linux on OpenPiton (#190)

* Refactor serpent AXI adapter

* Disable FPU in OpenPiton by default

* Bump dbg and atomics submodules

* Fix cache testbenches (interface change)

* FPGA bootrom changes for OpenPiton SDHC

* Introduce two bootroms, one for baremetal apps (pitonstream), and one for linux boot from SD

* Testing barrier-based synchronisation instead of CLINT-based

* This bootrom works for 2 core on g2 and if you change MAX_HARTS to 4, then 4 cores on vc707

* Add MAX_HARTS switch to makefile

* Fix gitlab CI

* Revert standard FPGA bootrom

* Update Flist

* Make UART_FREQ a parameter

* Fix typo in tb.list and an error in define switch in ariane_pkg

* Copy over SD-driver in bootloader from @leon575777642

* Fix compilation issues of bootrom

* Change signal name in serpent periph portlist

* Correct generate statement in serpent dcache memory

* Add Piton SD Controller, FPGA fixes

* Fix race condition in dcache misshandler

* Add tandem spike to Make flow

* Remove OpenPiton SD Card controller again
2019-03-18 11:51:58 +01: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
Florian Zaruba
b1bdc0c02c Add System Verilog FPU (#163)
* Change reset strategy in ariane_verilog_wrap.sv, remove unneeded sigs in serpent_peripherals.

* saving...

* ⬆️ Updates for new FPU

* Add sv fpu to FPGA flow

* Use multi-threading capabilities of verilator

- Deactivate non-standard floating point arguments
- Make multi-threading conditional on the availability of verilator 4

* Remove DPI threadsafety

* Reduce FPGA clock frequency

- Remove couple of -v- tests to reduce test-time

* Fix documentation and fpga flow

- Fix cycle time to accommodate FPU
- Fix FPGA constraints

* Change UART frequency
2019-03-18 11:51:58 +01:00
Michael Schaffner
11c8b4a58d
Update changelog 2019-01-30 15:36:39 +01:00
Florian Zaruba
603c74da2d
Fix signaling issue in rgmii converter 2018-11-25 14:46:31 +01:00
Michael Schaffner
67c68e5e8c
Merge remote-tracking branch 'upstream/ariane_next' into serpent 2018-11-23 19:07:43 +01:00
Florian Zaruba
785577d37a
🐛 Fix reset strategy in TB 2018-11-23 19:04:37 +01:00
Michael Schaffner
0bd9c4fb2b
Merge branch 'ariane_next' into serpent 2018-10-17 18:52:21 +02:00
Florian Zaruba
25a0470df6
Fix Issue #127 (#128)
* Switch to AXI structs

* Fix problems with ID width mismatches

* 📝 Update CHANGELOG
2018-10-17 16:30:58 +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
Michael Schaffner
5d37678061
Update changelog 2018-10-15 22:31:20 +02:00
Florian Zaruba
712de20bdd
📝 Update README and CHANGELOG 2018-09-23 20:22:35 +02:00
Florian Zaruba
319ed5632e 🔥 Remove timer, CSR will trap on access 2018-08-01 01:25:05 +02:00
Florian Zaruba
74fa1d9dd5
🔥 Remove external flush interface from interface 2018-07-24 22:24:30 -07:00
Florian Zaruba
8199995c20
🎨 Update CHANGELOG and CONTRIBUTING 2018-06-30 14:19:23 -07:00
Florian Zaruba
bd9e852596
Merge branch 'master' into ariane_next 2018-04-09 15:18:45 +02:00
Florian Zaruba
62fc4bd816
Pump submodules, cherry-pick TLB clean-up 2018-04-09 15:11:15 +02:00
Florian Zaruba
594d4687e9
Merge branch 'new-frontend' into ariane_next 2018-03-14 14:35:49 +01:00
Florian Zaruba
d90a9b00a0
🐛 Fix encoding issue (undetected illegal instr) 2018-03-14 14:10:54 +01:00
Florian Zaruba
62fffe6a9a
Add correct dependencies 2018-03-06 17:20:47 +01:00
Florian Zaruba
038357ae3d
📝 Add documentation on generating hex file 2018-03-02 11:25:39 +01:00
Florian Zaruba
a3460b881a
Remove execute permissions from source files 2018-01-26 10:31:49 +01:00
Florian Zaruba
8a619040da
Clean-up add github remotes to submodules 2018-01-26 10:15:53 +01:00
Florian Zaruba
e1a5dd747f
Aad IPI to Ariane 2017-12-12 17:43:27 +01:00
Florian Zaruba
2935c7ae92
Merge multiplication branch 2017-11-12 21:31:08 +01:00