Commit graph

30 commits

Author SHA1 Message Date
André Sintzoff
534aef7776
Update cv32a6_v0.1.0 branch to latest master commit (#1045) 2023-02-06 15:34:10 +01:00
Tianrui Wei
4c01614f83
Bump CVA6 for OpenPiton, fix mmu issues (#968)
This PR does the following
    1. Bump the filelist for OpenPiton for new directory layout
    2. Remove AXI Interface for OpenPiton in the top level
    3. Fix several issues in MMU discovered during address translation last year, the changes in core/mmu_sv39/mmu.sv are a joint effort between Jbalkind minho-pulp zarubaf niwis acostillado tianrui-wei
    4. disable bitmanip by default
    5. separate an ariane config package for openpiton synthesis. Some of  the previous changes makes ariane too big for openpiton, so we need to revert these changes
    6. Don't increase number of writeback ports (NR_WB_PORTS) when cvxif is  not enabled
2022-10-14 07:38:42 +02: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
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
tianrui-wei
f9b6f7fbc2
openpiton: Fix simulation issues (#677)
Signed-off-by: Tianrui Wei <tianrui-wei@outlook.com>
2021-06-07 12:23:22 +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
Nursultan Kabylkas
2d81445209
verification: Add co-simulation with dromajo (#445)
* Summary: initial dromajo integration

* some changes to Makefile to enable `make verilate DROMAJO=1`
* adding ifdefs to ariane_tb.cpp to disable HTIF
* adding dromajo repo
* making dromajo repo a submodule

* syncing with upstream

* bumping to the latest dromajo commit

* Summary: adding DPI functions for cosim

 * added new file tb/dpi/dromajo_cosim.cc that contains
   all DPIs for dromajo to work
 * editted Makefile to see the above file

* Summary: fixing build issues

 * fixing syntax errors in dpi file
 * renaming dpi file due to name conflict with shared library
 * fixing path in Makefile to the shared dromajo lib

* bumping to the latest dromajo change

* Summary: loading checkpoint to bootrom

This change adds `+checkpoint=` argument to the verilator simulator
as well as corresponding changes to load the dromajo checkpoint into
the bootrom. Dromajo checkpoint bootcode contains series of csrw and
immediate loads to restore the architectural state of the processor.

dromajo_bootrom.sv
is a copy of a generated bootrom.sv file. This
file parses the verilog plusargs and loads the bootrom with the code
that is pointed by the +checkpoint.

csr_regfile.sv
Dromajo needs to start running the code in debug mode. The default
value of debug_mode_q was changed to 1.

* updating dromajo to the latest change

* Summary: sync main memories of dromajo and ariane

These changes load the checkpoint into the main memory of Ariane.
The checkpointed memory that is dumped from dromajo contains
(1) the binary and (2) the values of all stores that dromajo
globally performed before dumping the checkpoint.

dromajo_ram.sv
This file is a copy of SyncSpRamBeNx64.sv and was modified to parse
+checkpoint argument to load the memory from the path pointed by
the argument.

The remaining changes were introduced to instantiate the above file
when DROMAJO=1 flag is set.

* Summary: calling DPIs for cosimulation

This change introduces the calls to DPI functions that interface
with Dromajo.

* updating to the latest commit of dromajo

* disabling verbose output when preloading bootrom and mainram

* Summary: bug fix - update logic of `dcsr_d.prv`

This change was made per discussion with Florian via email. The
current versionincorrectly implements the update logic of
`dcsr_d.prv`.

The confusion came from the fact that the core should update its
`dcsr_d.prv` to the current running privilege level when entering
debug mode. I've attached a patch which, as you suggested, removes
the wrong update logic in the CSR write process and should now
correctly handle the update when entering debug mode
(4.9.1 Debug Control and Status of the debug specification).

* bump to the latest version of dromajo

* Summary: dromajo DPI change

This change:
 * Ariane doesn't commit ebreaks and ecalls so some workaround
   was encorporated
 * Proper exit(0) on cosim pass

* Summary: support for running binaries with dromajo

This change adds the ability to run the following command:
  `make run_dromajo BIN=\path\to\riscv\bin`

It automates the dromajo's checkpoint creation and runs the binary
on Ariane with dromajo cosimulation.

For this to work Ariane must be build with DROMAJO=1.

* changing dromajo recipe name to be consistent with existing names

* adding instructions on how to run cosim with dromajo

* Bump to release 0.6.2

* added license headers

* added more details about dromajo
2020-06-16 10:30:58 +02:00
pawelkudlakaldec
9cebe8a238
Makefile: Fix compile order of packages (#396)
(cherry picked from commit 71627a3729abda6ed04038dfd387dba6357ff9d9)
Co-authored-by: pawelku <pawelku@aldec.com.pl>
2020-04-14 13:29:11 +02: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
Michael Schaffner
416aec8986 Bump FPU, DM and common cells 2019-06-04 10:36:17 +02:00
Stefan Mach
44d01c0911 ⬆️ Update FPU for better conversion pipe 2019-06-04 10:36:17 +02:00
msfschaffner
c02597c2ff fpu: Bump submodule (#232) 2019-06-04 10:36:17 +02:00
Michael Schaffner
95e099ca6f common_cells: Bump and remove deprecated modules 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
Michael Schaffner
d979e4d753 openpiton_periphs: Integrate rv_plic 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
Michael Schaffner
55b69486f9 Fix for OpenPiton release 2019-03-18 11:51:58 +01:00
Florian Zaruba
ad223cfd9f Clean-up naming to distinguish OP from GP Ariane (#193)
* Clean-up naming to distinguish  OP from GP Ariane

* Rename wb to wt in hidden CI files

* Fix verilator install script
2019-03-18 11:51:58 +01:00
msfschaffner
0ffef2ae1a 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
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
Michael Schaffner
66b8495c62
Modify file list for openpiton 2019-01-30 16:30:19 +01:00
Michael Schaffner
7951802a01
This patch makes the dm relocatable to an arbitrary base address (last 12bit need to be zero however). 2019-01-24 12:44:21 +01:00
Michael Schaffner
e64a2dba52
Wire up PLIC in ariane peripherals for OpenPiton, update Flist.ariane. 2018-11-23 18:33:28 +01:00
Michael Schaffner
37a71e4d8b
Add openpiton-specific peripherals 2018-11-18 11:33:46 +01:00
Michael Schaffner
34de5d2739
Update openpiton verilog wrapper and Flist. 2018-11-13 16:40:52 +01:00
Michael Schaffner
5060b99508
Misc fixes related to openpiton compilation 2018-10-29 13:00:42 +01:00
Michael Schaffner
3d0755e278
Add openpiton file list. 2018-10-26 19:52:41 +02:00