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>
This commit is contained in:
André Sintzoff 2021-09-24 17:21:19 +02:00 committed by GitHub
parent f5cbaa92e9
commit 3ddf797e95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
913 changed files with 299651 additions and 205 deletions

2
.gitignore vendored
View file

@ -26,7 +26,7 @@ build/
*.o
uart
work-ver/*
fpga/work-fpga
corev_apu/fpga/work-fpga
stdout/
work-dpi/
tb/riscv-isa-sim/

80
.gitmodules vendored
View file

@ -1,57 +1,57 @@
[submodule "src/axi_mem_if"]
path = src/axi_mem_if
[submodule "corev_apu/axi_mem_if"]
path = corev_apu/axi_mem_if
url = https://github.com/pulp-platform/axi_mem_if.git
[submodule "src/axi_node"]
path = src/axi_node
[submodule "corev_apu/axi_node"]
path = corev_apu/axi_node
url = https://github.com/pulp-platform/axi_node.git
[submodule "src/fpga-support"]
path = src/fpga-support
[submodule "corev_apu/fpga-support"]
path = corev_apu/fpga-support
url = https://github.com/pulp-platform/fpga-support.git
[submodule "src/common_cells"]
path = src/common_cells
[submodule "common/submodules/common_cells"]
path = common/submodules/common_cells
url = https://github.com/pulp-platform/common_cells.git
[submodule "src/axi"]
path = src/axi
[submodule "corev_apu/axi"]
path = corev_apu/axi
url = https://github.com/pulp-platform/axi.git
[submodule "src/register_interface"]
path = src/register_interface
[submodule "corev_apu/register_interface"]
path = corev_apu/register_interface
url = https://github.com/pulp-platform/register_interface.git
[submodule "fpga/src/apb_uart"]
path = fpga/src/apb_uart
[submodule "corev_apu/fpga/src/apb_uart"]
path = corev_apu/fpga/src/apb_uart
url = https://github.com/pulp-platform/apb_uart.git
[submodule "fpga/src/apb_node"]
path = fpga/src/apb_node
[submodule "corev_apu/fpga/src/apb_node"]
path = corev_apu/fpga/src/apb_node
url = https://github.com/pulp-platform/apb_node.git
[submodule "fpga/src/axi2apb"]
path = fpga/src/axi2apb
url = https://github.com/pulp-platform/axi2apb.git
[submodule "fpga/src/axi_slice"]
path = fpga/src/axi_slice
url = https://github.com/pulp-platform/axi_slice.git
[submodule "src/tech_cells_generic"]
path = src/tech_cells_generic
[submodule "corev_apu/fpga/src/axi2apb"]
path = corev_apu/fpga/src/axi2apb
url = https://github.com/pulp-platform/axi2apb.git
[submodule "corev_apu/fpga/src/axi_slice"]
path = corev_apu/fpga/src/axi_slice
url = https://github.com/pulp-platform/axi_slice.git
[submodule "corev_apu/src/tech_cells_generic"]
path = corev_apu/src/tech_cells_generic
url = https://github.com/pulp-platform/tech_cells_generic.git
[submodule "src/fpu"]
path = src/fpu
[submodule "core/fpu"]
path = core/fpu
url = https://github.com/pulp-platform/fpnew.git
[submodule "fpga/src/ariane-ethernet"]
path = fpga/src/ariane-ethernet
[submodule "corev_apu/fpga/src/ariane-ethernet"]
path = corev_apu/fpga/src/ariane-ethernet
url = https://github.com/lowRISC/ariane-ethernet.git
[submodule "src/axi_riscv_atomics"]
path = src/axi_riscv_atomics
[submodule "corev_apu/src/axi_riscv_atomics"]
path = corev_apu/src/axi_riscv_atomics
url = https://github.com/pulp-platform/axi_riscv_atomics.git
[submodule "src/riscv-dbg"]
path = src/riscv-dbg
[submodule "corev_apu/riscv-dbg"]
path = corev_apu/riscv-dbg
url = https://github.com/pulp-platform/riscv-dbg.git
[submodule "src/rv_plic"]
path = src/rv_plic
[submodule "corev_apu/rv_plic"]
path = corev_apu/rv_plic
url = https://github.com/pulp-platform/rv_plic.git
[submodule "fpga/src/apb_timer"]
path = fpga/src/apb_timer
[submodule "corev_apu/fpga/src/apb_timer"]
path = corev_apu/fpga/src/apb_timer
url = https://github.com/pulp-platform/apb_timer.git
[submodule "tb/dromajo"]
path = tb/dromajo
[submodule "corev_apu/tb/dromajo"]
path = corev_apu/tb/dromajo
url = https://github.com/kabylkas/dromajo.git
[submodule "tb/common_verification"]
path = tb/common_verification
[submodule "corev_apu/tb/common_verification"]
path = corev_apu/tb/common_verification
url = https://github.com/pulp-platform/common_verification.git

View file

@ -12,6 +12,97 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Fix non-setable MEIE bit in MIE CSR
- Bump `fpnew` to `v0.6.2`
- Restructured directories to separate CVA6 core from CVA6-APU (FPGA emulation platform for the core). See the [README](README.md#new-directory-structure) for details.
#### Moved Package files
```
include/riscv_pkg.sv ==> core/include/riscv_pkg.sv
src/riscv-dbg/src/dm_pkg.sv ==> corev_apu/riscv-dbg/src/dm_pkg.sv
include/ariane_pkg.sv ==> core/include/ariane_pkg.sv
include/std_cache_pkg.sv ==> core/include/std_cache_pkg.sv
include/wt_cache_pkg.sv ==> core/include/wt_cache_pkg.sv
src/axi/src/axi_pkg.sv ==> corev_apu/axi/src/axi_pkg.sv
src/register_interface/src/reg_intf.sv ==> corev_apu/register_interface/src/reg_intf.sv
src/register_interface/src/reg_intf_pkg.sv ==> corev_apu/register_interface/src/reg_intf_pkg.sv
include/axi_intf.sv ==> core/include/axi_intf.sv
tb/ariane_soc_pkg.sv ==> corev_apu/tb/ariane_soc_pkg.sv
tb/ariane_axi_soc_pkg.sv ==> corev_apu/tb/ariane_axi_soc_pkg.sv
include/ariane_axi_pkg.sv ==> core/include/ariane_axi_pkg.sv
src/fpu/src/fpnew_pkg.sv ==> core/fpu/src/fpnew_pkg.sv
src/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv ==> core/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv
```
#### Moved standalone components
```
src/frontend/*.sv ==> core/frontend/*.sv
src/cache_subsystem/*.sv ==> core/cache_subsystem/*.sv (excluding std_no_dcache.sv)
bootrom/*.sv ==> corev_apu/bootrom/*.sv
src/clint/*.sv ==> corev_apu/clint/*.sv
fpga/src/axi2apb/src/*.sv ==> corev_apu/fpga/src/axi2apb/src/*.sv
fpga/src/apb_timer/*.sv ==> corev_apu/fpga/src/apb_timer/*.sv
fpga/src/axi_slice/src/*.sv ==> corev_apu/fpga/src/axi_slice/src/*.sv
src/axi_node/src/*.sv ==> corev_apu/axi_node/src/*.sv
src/axi_riscv_atomics/src/*.sv ==> corev_apu/src/axi_riscv_atomics/src/*.sv
src/axi_mem_if/src/*.sv ==> corev_apu/axi_mem_if/src/*.sv
src/pmp/src/*.sv ==> core/pmp/src/*.sv
src/rv_plic/rtl/rv_plic_target.sv ==> corev_apu/rv_plic/rtl/rv_plic_target.sv
src/rv_plic/rtl/rv_plic_gateway.sv ==> corev_apu/rv_plic/rtl/rv_plic_gateway.sv
src/rv_plic/rtl/plic_regmap.sv ==> corev_apu/rv_plic/rtl/plic_regmap.sv
src/rv_plic/rtl/plic_top.sv ==> corev_apu/rv_plic/rtl/plic_top.sv
src/riscv-dbg/src/dmi_cdc.sv ==> corev_apu/riscv-dbg/src/dmi_cdc.sv
src/riscv-dbg/src/dmi_jtag.sv ==> corev_apu/riscv-dbg/src/dmi_jtag.sv
src/riscv-dbg/src/dmi_jtag_tap.sv ==> corev_apu/riscv-dbg/src/dmi_jtag_tap.sv
src/riscv-dbg/src/dm_csrs.sv ==> corev_apu/riscv-dbg/src/dm_csrs.sv
src/riscv-dbg/src/dm_mem.sv ==> corev_apu/riscv-dbg/src/dm_mem.sv
src/riscv-dbg/src/dm_sba.sv ==> corev_apu/riscv-dbg/src/dm_sba.sv
src/riscv-dbg/src/dm_top.sv ==> corev_apu/riscv-dbg/src/dm_top.sv
src/riscv-dbg/debug_rom/debug_rom.sv ==> corev_apu/riscv-dbg/debug_rom/debug_rom.sv
src/register_interface/src/apb_to_reg.sv ==> corev_apu/register_interface/src/apb_to_reg.sv
src/axi/src/axi_multicut.sv ==> corev_apu/axi/src/axi_multicut.sv
src/common_cells/src/deprecated/generic_fifo.sv ==> common/submodules/common_cells/src/deprecated/generic_fifo.sv
src/common_cells/src/deprecated/pulp_sync.sv ==> common/submodules/common_cells/src/deprecated/pulp_sync.sv
src/common_cells/src/deprecated/find_first_one.sv ==> common/submodules/common_cells/src/deprecated/find_first_one.sv
src/common_cells/src/rstgen_bypass.sv ==> common/submodules/common_cells/src/rstgen_bypass.sv
src/common_cells/src/rstgen.sv ==> common/submodules/common_cells/src/rstgen.sv
src/common_cells/src/stream_mux.sv ==> common/submodules/common_cells/src/stream_mux.sv
src/common_cells/src/stream_demux.sv ==> common/submodules/common_cells/src/stream_demux.sv
src/common_cells/src/exp_backoff.sv ==> common/submodules/common_cells/src/exp_backoff.sv
src/util/axi_master_connect.sv ==> common/local/util/axi_master_connect.sv
src/util/axi_slave_connect.sv ==> common/local/util/axi_slave_connect.sv
src/util/axi_master_connect_rev.sv ==> common/local/util/axi_master_connect_rev.sv
src/util/axi_slave_connect_rev.sv ==> common/local/util/axi_slave_connect_rev.sv
src/axi/src/axi_cut.sv ==> corev_apu/axi/src/axi_cut.sv
src/axi/src/axi_join.sv ==> corev_apu/axi/src/axi_join.sv
src/axi/src/axi_delayer.sv ==> corev_apu/axi/src/axi_delayer.sv
src/axi/src/axi_to_axi_lite.sv ==> corev_apu/axi/src/axi_to_axi_lite.sv
src/common_cells/src/unread.sv ==> common/submodules/common_cells/src/unread.sv
src/common_cells/src/sync.sv ==> common/submodules/common_cells/src/sync.sv
src/common_cells/src/cdc_2phase.sv ==> common/submodules/common_cells/src/cdc_2phase.sv
src/common_cells/src/spill_register.sv ==> common/submodules/common_cells/src/spill_register.sv
src/common_cells/src/sync_wedge.sv ==> common/submodules/common_cells/src/sync_wedge.sv
src/common_cells/src/edge_detect.sv ==> common/submodules/common_cells/src/edge_detect.sv
src/common_cells/src/stream_arbiter.sv ==> common/submodules/common_cells/src/stream_arbiter.sv
src/common_cells/src/stream_arbiter_flushable.sv ==> common/submodules/common_cells/src/stream_arbiter_flushable.sv
src/common_cells/src/deprecated/fifo_v1.sv ==> common/submodules/common_cells/src/deprecated/fifo_v1.sv
src/common_cells/src/deprecated/fifo_v2.sv ==> common/submodules/common_cells/src/deprecated/fifo_v2.sv
src/common_cells/src/fifo_v3.sv ==> common/submodules/common_cells/src/fifo_v3.sv
src/common_cells/src/rr_arb_tree.sv ==> common/submodules/common_cells/src/rr_arb_tree.sv
src/common_cells/src/deprecated/rrarbiter.sv ==> common/submodules/common_cells/src/deprecated/rrarbiter.sv
src/common_cells/src/stream_delay.sv ==> common/submodules/common_cells/src/stream_delay.sv
src/common_cells/src/lfsr_8bit.sv ==> common/submodules/common_cells/src/lfsr_8bit.sv
src/common_cells/src/lfsr_16bit.sv ==> common/submodules/common_cells/src/lfsr_16bit.sv
src/common_cells/src/delta_counter.sv ==> common/submodules/common_cells/src/delta_counter.sv
src/common_cells/src/counter.sv ==> common/submodules/common_cells/src/counter.sv
src/common_cells/src/shift_reg.sv ==> common/submodules/common_cells/src/shift_reg.sv
src/tech_cells_generic/src/pulp_clock_gating.sv ==> corev_apu/src/tech_cells_generic/src/pulp_clock_gating.sv
src/tech_cells_generic/src/cluster_clock_inverter.sv ==> corev_apu/src/tech_cells_generic/src/cluster_clock_inverter.sv
src/tech_cells_generic/src/pulp_clock_mux2.sv ==> corev_apu/src/tech_cells_generic/src/pulp_clock_mux2.sv
tb/ariane_testharness.sv ==> corev_apu/tb/ariane_testharness.sv
tb/ariane_peripherals.sv ==> corev_apu/tb/ariane_peripherals.sv
tb/common/uart.sv ==> corev_apu/tb/common/uart.sv
tb/common/SimDTM.sv ==> corev_apu/tb/common/SimDTM.sv
tb/common/SimJTAG.sv ==> corev_apu/tb/common/SimJTAG.sv
```
### 4.2.0 - 2019-06-04

286
Makefile
View file

@ -36,6 +36,7 @@ root-dir := $(dir $(mkfile_path))
support_verilator_4 := $(shell ($(verilator) --version | grep '4\.') > /dev/null 2>&1 ; echo $$?)
ifeq ($(support_verilator_4), 0)
verilator_threads := 2
endif
ifndef RISCV
@ -72,29 +73,36 @@ endif
# Sources
# Package files -> compile first
ariane_pkg := include/riscv_pkg.sv \
src/riscv-dbg/src/dm_pkg.sv \
include/ariane_pkg.sv \
include/std_cache_pkg.sv \
include/wt_cache_pkg.sv \
src/axi/src/axi_pkg.sv \
src/register_interface/src/reg_intf.sv \
src/register_interface/src/reg_intf_pkg.sv \
include/axi_intf.sv \
tb/ariane_soc_pkg.sv \
tb/ariane_axi_soc_pkg.sv \
include/ariane_axi_pkg.sv \
src/fpu/src/fpnew_pkg.sv \
src/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv
ifeq ($(findstring 32, $(variant)),32)
ariane_pkg := core/include/cv32a6_imac_sv0_config_pkg.sv
else
ariane_pkg := core/include/cv64a6_imacfd_sv39_config_pkg.sv
endif
ariane_pkg += core/include/riscv_pkg.sv \
corev_apu/riscv-dbg/src/dm_pkg.sv \
core/include/ariane_pkg.sv \
core/include/ariane_rvfi_pkg.sv \
core/include/std_cache_pkg.sv \
core/include/wt_cache_pkg.sv \
corev_apu/axi/src/axi_pkg.sv \
corev_apu/register_interface/src/reg_intf.sv \
corev_apu/register_interface/src/reg_intf_pkg.sv \
core/include/axi_intf.sv \
corev_apu/tb/rvfi_pkg.sv \
corev_apu/tb/ariane_soc_pkg.sv \
corev_apu/tb/ariane_axi_soc_pkg.sv \
core/include/ariane_axi_pkg.sv \
core/fpu/src/fpnew_pkg.sv \
core/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv
ariane_pkg := $(addprefix $(root-dir), $(ariane_pkg))
# utility modules
util := include/instr_tracer_pkg.sv \
src/util/instr_tracer_if.sv \
src/util/instr_tracer.sv \
src/tech_cells_generic/src/cluster_clock_gating.sv \
tb/common/mock_uart.sv \
src/util/sram.sv
util := core/include/instr_tracer_pkg.sv \
common/local/util/instr_tracer_if.sv \
common/local/util/instr_tracer.sv \
corev_apu/src/tech_cells_generic/src/cluster_clock_gating.sv \
corev_apu/tb/common/mock_uart.sv \
common/local/util/sram.sv
ifdef spike-tandem
util += tb/common/spike.sv
@ -106,7 +114,7 @@ test_pkg := $(wildcard tb/test/*/*sequence_pkg.sv*) \
$(wildcard tb/test/*/*_pkg.sv*)
# DPI
dpi := $(patsubst tb/dpi/%.cc, ${dpi-library}/%.o, $(wildcard tb/dpi/*.cc))
dpi := $(patsubst corev_apu/tb/dpi/%.cc, ${dpi-library}/%.o, $(wildcard corev_apu/tb/dpi/*.cc))
# filter spike stuff if tandem is not activated
ifndef spike-tandem
@ -118,13 +126,14 @@ ifndef DROMAJO
dpi := $(filter-out ${dpi-library}/dromajo_cosim_dpi.o, $(dpi))
endif
dpi_hdr := $(wildcard tb/dpi/*.h)
dpi_hdr := $(wildcard corev_apu/tb/dpi/*.h)
dpi_hdr := $(addprefix $(root-dir), $(dpi_hdr))
CFLAGS := -I$(QUESTASIM_HOME)/include \
-I$(VCS_HOME)/include \
-I$(RISCV)/include \
-I$(SPIKE_ROOT)/include \
$(if $(DROMAJO), -I../tb/dromajo/src,) \
-std=c++11 -I../tb/dpi -O3
$(if $(DROMAJO), -I../corev_apu/tb/dromajo/src,) \
-std=c++11 -I../corev_apu/tb/dpi -O3
ifdef XCELIUM_HOME
CFLAGS += -I$(XCELIUM_HOME)/tools/include
@ -136,97 +145,99 @@ ifdef spike-tandem
CFLAGS += -Itb/riscv-isa-sim/install/include/spike
endif
# this list contains the standalone components
src := $(filter-out src/ariane_regfile.sv, $(wildcard src/*.sv)) \
$(filter-out src/fpu/src/fpnew_pkg.sv, $(wildcard src/fpu/src/*.sv)) \
$(filter-out src/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv, \
$(wildcard src/fpu/src/fpu_div_sqrt_mvp/hdl/*.sv)) \
$(wildcard src/frontend/*.sv) \
$(filter-out src/cache_subsystem/std_no_dcache.sv, \
$(wildcard src/cache_subsystem/*.sv)) \
$(wildcard bootrom/*.sv) \
$(wildcard src/clint/*.sv) \
$(wildcard fpga/src/axi2apb/src/*.sv) \
$(wildcard fpga/src/apb_timer/*.sv) \
$(wildcard fpga/src/axi_slice/src/*.sv) \
$(wildcard src/axi_node/src/*.sv) \
$(wildcard src/axi_riscv_atomics/src/*.sv) \
$(wildcard src/axi_mem_if/src/*.sv) \
$(wildcard src/pmp/src/*.sv) \
$(wildcard src/mmu_sv32/*.sv) \
$(wildcard src/mmu_sv39/*.sv) \
src/rv_plic/rtl/rv_plic_target.sv \
src/rv_plic/rtl/rv_plic_gateway.sv \
src/rv_plic/rtl/plic_regmap.sv \
src/rv_plic/rtl/plic_top.sv \
src/riscv-dbg/src/dmi_cdc.sv \
src/riscv-dbg/src/dmi_jtag.sv \
src/riscv-dbg/src/dmi_jtag_tap.sv \
src/riscv-dbg/src/dm_csrs.sv \
src/riscv-dbg/src/dm_mem.sv \
src/riscv-dbg/src/dm_sba.sv \
src/riscv-dbg/src/dm_top.sv \
src/riscv-dbg/debug_rom/debug_rom.sv \
src/register_interface/src/apb_to_reg.sv \
src/axi/src/axi_multicut.sv \
src/common_cells/src/deprecated/generic_fifo.sv \
src/common_cells/src/deprecated/pulp_sync.sv \
src/common_cells/src/deprecated/find_first_one.sv \
src/common_cells/src/rstgen_bypass.sv \
src/common_cells/src/rstgen.sv \
src/common_cells/src/stream_mux.sv \
src/common_cells/src/stream_demux.sv \
src/common_cells/src/exp_backoff.sv \
src/util/axi_master_connect.sv \
src/util/axi_slave_connect.sv \
src/util/axi_master_connect_rev.sv \
src/util/axi_slave_connect_rev.sv \
src/axi/src/axi_cut.sv \
src/axi/src/axi_join.sv \
src/axi/src/axi_delayer.sv \
src/axi/src/axi_to_axi_lite.sv \
src/fpga-support/rtl/SyncSpRamBeNx64.sv \
src/common_cells/src/unread.sv \
src/common_cells/src/sync.sv \
src/common_cells/src/cdc_2phase.sv \
src/common_cells/src/spill_register.sv \
src/common_cells/src/sync_wedge.sv \
src/common_cells/src/edge_detect.sv \
src/common_cells/src/stream_arbiter.sv \
src/common_cells/src/stream_arbiter_flushable.sv \
src/common_cells/src/deprecated/fifo_v1.sv \
src/common_cells/src/deprecated/fifo_v2.sv \
src/common_cells/src/fifo_v3.sv \
src/common_cells/src/lzc.sv \
src/common_cells/src/popcount.sv \
src/common_cells/src/rr_arb_tree.sv \
src/common_cells/src/deprecated/rrarbiter.sv \
src/common_cells/src/stream_delay.sv \
src/common_cells/src/lfsr.sv \
src/common_cells/src/lfsr_8bit.sv \
src/common_cells/src/lfsr_16bit.sv \
src/common_cells/src/delta_counter.sv \
src/common_cells/src/counter.sv \
src/common_cells/src/shift_reg.sv \
src/tech_cells_generic/src/pulp_clock_gating.sv \
src/tech_cells_generic/src/cluster_clock_inverter.sv \
src/tech_cells_generic/src/pulp_clock_mux2.sv \
tb/ariane_testharness.sv \
tb/ariane_peripherals.sv \
tb/common/uart.sv \
tb/common/SimDTM.sv \
tb/common/SimJTAG.sv
src := $(filter-out core/ariane_regfile.sv, $(wildcard core/*.sv)) \
$(filter-out core/fpu/src/fpnew_pkg.sv, $(wildcard core/fpu/src/*.sv)) \
$(filter-out core/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv, \
$(wildcard core/fpu/src/fpu_div_sqrt_mvp/hdl/*.sv)) \
$(wildcard core/frontend/*.sv) \
$(wildcard core/mmu_sv32/*.sv) \
$(wildcard core/mmu_sv39/*.sv) \
$(filter-out core/cache_subsystem/std_no_dcache.sv, \
$(wildcard core/cache_subsystem/*.sv)) \
$(wildcard corev_apu/bootrom/*.sv) \
$(wildcard corev_apu/clint/*.sv) \
$(wildcard corev_apu/fpga/src/axi2apb/src/*.sv) \
$(wildcard corev_apu/fpga/src/apb_timer/*.sv) \
$(wildcard corev_apu/fpga/src/axi_slice/src/*.sv) \
$(wildcard corev_apu/axi_node/src/*.sv) \
$(wildcard corev_apu/src/axi_riscv_atomics/src/*.sv) \
$(wildcard corev_apu/axi_mem_if/src/*.sv) \
$(wildcard core/pmp/src/*.sv) \
corev_apu/rv_plic/rtl/rv_plic_target.sv \
corev_apu/rv_plic/rtl/rv_plic_gateway.sv \
corev_apu/rv_plic/rtl/plic_regmap.sv \
corev_apu/rv_plic/rtl/plic_top.sv \
corev_apu/riscv-dbg/src/dmi_cdc.sv \
corev_apu/riscv-dbg/src/dmi_jtag.sv \
corev_apu/riscv-dbg/src/dmi_jtag_tap.sv \
corev_apu/riscv-dbg/src/dm_csrs.sv \
corev_apu/riscv-dbg/src/dm_mem.sv \
corev_apu/riscv-dbg/src/dm_sba.sv \
corev_apu/riscv-dbg/src/dm_top.sv \
corev_apu/riscv-dbg/debug_rom/debug_rom.sv \
corev_apu/register_interface/src/apb_to_reg.sv \
corev_apu/axi/src/axi_multicut.sv \
common/submodules/common_cells/src/deprecated/generic_fifo.sv \
common/submodules/common_cells/src/deprecated/pulp_sync.sv \
common/submodules/common_cells/src/deprecated/find_first_one.sv \
common/submodules/common_cells/src/rstgen_bypass.sv \
common/submodules/common_cells/src/rstgen.sv \
common/submodules/common_cells/src/stream_mux.sv \
common/submodules/common_cells/src/stream_demux.sv \
common/submodules/common_cells/src/exp_backoff.sv \
common/local/util/axi_master_connect.sv \
common/local/util/axi_slave_connect.sv \
common/local/util/axi_master_connect_rev.sv \
common/local/util/axi_slave_connect_rev.sv \
corev_apu/axi/src/axi_cut.sv \
corev_apu/axi/src/axi_join.sv \
corev_apu/axi/src/axi_delayer.sv \
corev_apu/axi/src/axi_to_axi_lite.sv \
corev_apu/fpga-support/rtl/SyncSpRamBeNx64.sv \
common/submodules/common_cells/src/unread.sv \
common/submodules/common_cells/src/sync.sv \
common/submodules/common_cells/src/cdc_2phase.sv \
common/submodules/common_cells/src/spill_register.sv \
common/submodules/common_cells/src/sync_wedge.sv \
common/submodules/common_cells/src/edge_detect.sv \
common/submodules/common_cells/src/stream_arbiter.sv \
common/submodules/common_cells/src/stream_arbiter_flushable.sv \
common/submodules/common_cells/src/deprecated/fifo_v1.sv \
common/submodules/common_cells/src/deprecated/fifo_v2.sv \
common/submodules/common_cells/src/fifo_v3.sv \
common/submodules/common_cells/src/lzc.sv \
common/submodules/common_cells/src/popcount.sv \
common/submodules/common_cells/src/rr_arb_tree.sv \
common/submodules/common_cells/src/deprecated/rrarbiter.sv \
common/submodules/common_cells/src/stream_delay.sv \
common/submodules/common_cells/src/lfsr.sv \
common/submodules/common_cells/src/lfsr_8bit.sv \
common/submodules/common_cells/src/lfsr_16bit.sv \
common/submodules/common_cells/src/delta_counter.sv \
common/submodules/common_cells/src/counter.sv \
common/submodules/common_cells/src/shift_reg.sv \
corev_apu/src/tech_cells_generic/src/pulp_clock_gating.sv \
corev_apu/src/tech_cells_generic/src/cluster_clock_inverter.sv \
corev_apu/src/tech_cells_generic/src/pulp_clock_mux2.sv \
corev_apu/tb/ariane_testharness.sv \
corev_apu/tb/ariane_peripherals.sv \
corev_apu/tb/rvfi_tracer.sv \
corev_apu/tb/common/uart.sv \
corev_apu/tb/common/SimDTM.sv \
corev_apu/tb/common/SimJTAG.sv
src := $(addprefix $(root-dir), $(src))
uart_src := $(wildcard fpga/src/apb_uart/src/*.vhd)
uart_src := $(wildcard corev_apu/fpga/src/apb_uart/src/*.vhd)
uart_src := $(addprefix $(root-dir), $(uart_src))
fpga_src := $(wildcard fpga/src/*.sv) $(wildcard fpga/src/bootrom/*.sv) $(wildcard fpga/src/ariane-ethernet/*.sv)
fpga_src := $(wildcard corev_apu/fpga/src/*.sv) $(wildcard corev_apu/fpga/src/bootrom/*.sv) $(wildcard corev_apu/fpga/src/ariane-ethernet/*.sv)
fpga_src := $(addprefix $(root-dir), $(fpga_src))
# look for testbenches
tbs := tb/ariane_tb.sv tb/ariane_testharness.sv
tbs := corev_apu/tb/ariane_tb.sv corev_apu/tb/ariane_testharness.sv
# RISCV asm tests and benchmark setup (used for CI)
# there is a definesd test-list with selected CI tests
riscv-test-dir := tmp/riscv-tests/build/isa/
@ -243,7 +254,8 @@ riscv-fp-tests := $(shell xargs printf '\n%s' < $(riscv-fp-tests-list
riscv-benchmarks := $(shell xargs printf '\n%s' < $(riscv-benchmarks-list) | cut -b 1-)
# Search here for include files (e.g.: non-standalone components)
incdir := src/common_cells/include/
incdir := common/submodules/common_cells/include/
# Compile and sim flags
compile_flag += +cover=bcfst+/dut -incr -64 -nologo -quiet -suppress 13262 -permissive +define+$(defines)
uvm-flags += +UVM_NO_RELNOTES +UVM_VERBOSITY=LOW
@ -285,6 +297,18 @@ else
questa-cmd += +jtag_rbb_enable=0
endif
vcs_build: $(dpi-library)/ariane_dpi.so
vlogan -full64 -nc -sverilog -ntb_opts uvm-1.2
vlogan -full64 -nc -sverilog -ntb_opts uvm-1.2 +define+WT_CACHE +define+RVFI_TRACE $(filter %.sv,$(ariane_pkg)) +incdir+core/include/+$(VCS_HOME)/etc/uvm-1.2/dpi
vlogan -full64 -nc -sverilog -ntb_opts uvm-1.2 +define+WT_CACHE +define+RVFI_TRACE $(filter %.sv,$(util)) +incdir+common/local/util+core/include/+src/util/+$(VCS_HOME)/etc/uvm-1.2/dpi
vhdlan -full64 $(filter %.vhd,$(uart_src))
vlogan -full64 -nc -sverilog -ntb_opts uvm-1.2 -assert svaext +define+WT_CACHE +define+RVFI_TRACE $(filter %.sv,$(src)) +incdir+core/include/+common/submodules/common_cells/include/+common/local/util/+$(VCS_HOME)/etc/uvm-1.2/dpi
vlogan -full64 -nc -sverilog -ntb_opts uvm-1.2 $(tbs) +define+RVFI_TRACE
vcs -full64 -timescale=1ns/1ns -ntb_opts uvm-1.2 work.ariane_tb
vcs: vcs_build
./simv +permissive -sv_lib work-dpi/ariane_dpi +permissive-off ++$(elf-bin) | tee vcs.log
# Build the TB and module using QuestaSim
build: $(library) $(library)/.build-srcs $(library)/.build-tb $(dpi-library)/ariane_dpi.so
# Optimize top level
@ -294,24 +318,24 @@ build: $(library) $(library)/.build-srcs $(library)/.build-tb $(dpi-library)/ari
$(library)/.build-srcs: $(util) $(library)
vlog$(questa_version) $(compile_flag) -work $(library) $(filter %.sv,$(ariane_pkg)) $(list_incdir) -suppress 2583
# vcom$(questa_version) $(compile_flag_vhd) -work $(library) -pedanticerrors $(filter %.vhd,$(ariane_pkg))
vlog$(questa_version) $(compile_flag) -work $(library) $(filter %.sv,$(util)) $(list_incdir) -suppress 2583
vlog$(questa_version) $(compile_flag) -timescale "1ns / 1ns" -work $(library) $(filter %.sv,$(util)) $(list_incdir) -suppress 2583
# Suppress message that always_latch may not be checked thoroughly by QuestaSim.
vcom$(questa_version) $(compile_flag_vhd) -work $(library) -pedanticerrors $(filter %.vhd,$(uart_src))
# vcom$(questa_version) $(compile_flag_vhd) -work $(library) -pedanticerrors $(filter %.vhd,$(src))
vlog$(questa_version) $(compile_flag) -work $(library) -pedanticerrors $(filter %.sv,$(src)) $(list_incdir) -suppress 2583
vlog$(questa_version) $(compile_flag) -timescale "1ns / 1ns" -work $(library) -pedanticerrors $(filter %.sv,$(src)) $(list_incdir) -suppress 2583
touch $(library)/.build-srcs
# build TBs
$(library)/.build-tb: $(dpi)
# Compile top level
vlog$(questa_version) $(compile_flag) -sv $(tbs) -work $(library)
vlog$(questa_version) $(compile_flag) -timescale "1ns / 1ns" -sv $(tbs) -work $(library)
touch $(library)/.build-tb
$(library):
vlib${questa_version} $(library)
# compile DPIs
$(dpi-library)/%.o: tb/dpi/%.cc $(dpi_hdr)
$(dpi-library)/%.o: corev_apu/tb/dpi/%.cc $(dpi_hdr)
mkdir -p $(dpi-library)
$(CXX) -shared -fPIC -std=c++0x -Bsymbolic $(CFLAGS) -c $< -o $@
@ -324,7 +348,6 @@ $(dpi-library)/ariane_dpi.so: $(dpi)
# the test names are defined in ci/riscv-asm-tests.list, and in ci/riscv-benchmarks.list
# if you want to run in batch mode, use make <testname> batch-mode=1
# alternatively you can call make sim elf-bin=<path/to/elf-bin> in order to load an arbitrary binary
generate-trace-vsim:
make sim preload=$(preload) elf-bin= batch-mode=1
make generate-trace
@ -404,7 +427,7 @@ CVA6_HOME ?= $(realpath -s $(root-dir))
XRUN_INCDIR :=+incdir+$(CVA6_HOME)/src/axi_node \
+incdir+$(CVA6_HOME)/src/common_cells/include \
+incdir+$(CVA6_HOME)/src/util
XRUN_TB := $(addprefix $(CVA6_HOME)/, tb/ariane_tb.sv)
XRUN_TB := $(addprefix $(CVA6_HOME)/, corev_apu/tb/ariane_tb.sv)
XRUN_COMP_FLAGS ?= -64bit -disable_sem2009 -access +rwc \
-sv -v93 -uvm -uvmhome $(XRUN_UVMHOME_ARG) \
@ -535,11 +558,11 @@ xrun-ci: xrun-asm-tests xrun-amo-tests xrun-mul-tests xrun-fp-tests xrun-benchma
# verilator-specific
verilate_command := $(verilator) \
$(filter-out %.vhd, $(ariane_pkg)) \
$(filter-out src/fpu_wrap.sv, $(filter-out %.vhd, $(src))) \
+define+$(defines) \
src/util/sram.sv \
tb/common/mock_uart.sv \
+incdir+src/axi_node \
$(filter-out core/fpu_wrap.sv, $(filter-out %.vhd, $(src))) \
+define+$(defines) -DRVFI_TRACE=1 \
common/local/util/sram.sv \
corev_apu/tb/common/mock_uart.sv \
+incdir+corev_apu/axi_node \
$(if $(verilator_threads), --threads $(verilator_threads)) \
--unroll-count 256 \
-Werror-PINMISSING \
@ -552,17 +575,18 @@ verilate_command := $(verilator)
-Wno-UNOPTFLAT \
-Wno-BLKANDNBLK \
-Wno-style \
$(if ($(PRELOAD)!=""), -DPRELOAD=1,) \
$(if $(DROMAJO), -DDROMAJO=1,) \
$(if $(PROFILE),--stats --stats-vars --profile-cfuncs,) \
$(if $(DEBUG),--trace --trace-structs,) \
-LDFLAGS "-L$(RISCV)/lib -L$(SPIKE_ROOT)/lib -Wl,-rpath,$(RISCV)/lib -Wl,-rpath,$(SPIKE_ROOT)/lib -lfesvr$(if $(PROFILE), -g -pg,) $(if $(DROMAJO), -L../tb/dromajo/src -ldromajo_cosim,) -lpthread" \
-LDFLAGS "-L$(RISCV)/lib -L$(SPIKE_ROOT)/lib -Wl,-rpath,$(RISCV)/lib -Wl,-rpath,$(SPIKE_ROOT)/lib -lfesvr$(if $(PROFILE), -g -pg,) $(if $(DROMAJO), -L../corev_apu/tb/dromajo/src -ldromajo_cosim,) -lpthread" \
-CFLAGS "$(CFLAGS)$(if $(PROFILE), -g -pg,) $(if $(DROMAJO), -DDROMAJO=1,) -DVL_DEBUG" \
-Wall --cc --vpi \
$(list_incdir) --top-module ariane_testharness \
--threads-dpi none \
--Mdir $(ver-library) -O3 \
--exe tb/ariane_tb.cpp tb/dpi/SimDTM.cc tb/dpi/SimJTAG.cc \
tb/dpi/remote_bitbang.cc tb/dpi/msim_helper.cc $(if $(DROMAJO), tb/dpi/dromajo_cosim_dpi.cc,)
--exe corev_apu/tb/ariane_tb.cpp corev_apu/tb/dpi/SimDTM.cc corev_apu/tb/dpi/SimJTAG.cc \
corev_apu/tb/dpi/remote_bitbang.cc corev_apu/tb/dpi/msim_helper.cc $(if $(DROMAJO), corev_apu/tb/dpi/dromajo_cosim_dpi.cc,)
dromajo:
cd ./tb/dromajo/src && make
@ -710,22 +734,22 @@ check-torture:
grep 'All signatures match for $(test-location)' $(riscv-torture-dir)/$(test-location).log
diff -s $(riscv-torture-dir)/$(test-location).spike.sig $(riscv-torture-dir)/$(test-location).rtlsim.sig
fpga_filter := $(addprefix $(root-dir), bootrom/bootrom.sv)
fpga_filter += $(addprefix $(root-dir), include/instr_tracer_pkg.sv)
fpga_filter := $(addprefix $(root-dir), corev_apu/bootrom/bootrom.sv)
fpga_filter += $(addprefix $(root-dir), core/include/instr_tracer_pkg.sv)
fpga_filter += $(addprefix $(root-dir), src/util/ex_trace_item.sv)
fpga_filter += $(addprefix $(root-dir), src/util/instr_trace_item.sv)
fpga_filter += $(addprefix $(root-dir), src/util/instr_tracer_if.sv)
fpga_filter += $(addprefix $(root-dir), src/util/instr_tracer.sv)
fpga_filter += $(addprefix $(root-dir), common/local/util/instr_tracer_if.sv)
fpga_filter += $(addprefix $(root-dir), common/local/util/instr_tracer.sv)
fpga: $(ariane_pkg) $(util) $(src) $(fpga_src) $(uart_src)
@echo "[FPGA] Generate sources"
@echo read_vhdl {$(uart_src)} > fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(ariane_pkg)} >> fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(filter-out $(fpga_filter), $(util))} >> fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(filter-out $(fpga_filter), $(src))} >> fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(fpga_src)} >> fpga/scripts/add_sources.tcl
@echo read_vhdl {$(uart_src)} > corev_apu/fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(ariane_pkg)} >> corev_apu/fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(filter-out $(fpga_filter), $(util))} >> corev_apu/fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(filter-out $(fpga_filter), $(src))} >> corev_apu/fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(fpga_src)} >> corev_apu/fpga/scripts/add_sources.tcl
@echo "[FPGA] Generate Bitstream"
cd fpga && make BOARD=$(BOARD) XILINX_PART=$(XILINX_PART) XILINX_BOARD=$(XILINX_BOARD) CLK_PERIOD_NS=$(CLK_PERIOD_NS)
cd corev_apu/fpga && make BOARD=$(BOARD) XILINX_PART=$(XILINX_PART) XILINX_BOARD=$(XILINX_BOARD) CLK_PERIOD_NS=$(CLK_PERIOD_NS)
.PHONY: fpga

View file

@ -8,6 +8,33 @@ It has configurable size, separate TLBs, a hardware PTW and branch-prediction (b
![](docs/_static/ariane_overview.png)
## New Directory Structure:
The directory structure has been changed to cleanly separate the [CVA6 RISC-V CPU](#cva6-risc-v-cpu) core from the COREV-APU [FPGA Emulation](#corev-apu-fpga-emulation).
Files, directories and submodules under `cva6` are for the core _only_ and should not have any dependencies on the APU.
Files, directories and submodules under `corev_apu` are for the FPGA Emulation platform.
The CVA6 core can be compiled stand-alone, and obviously the APU is dependent on the core.
#### ci
Scriptware for CI (unchanged).
#### common
Source code used by both the CVA6 Core and the COREV APU.
Subdirectories from here are `local` for common files that are hosted in this repo and `submodules` that are hosted in other repos.
#### core
Source code for the CVA6 Core only.
There should be no sources in this directory used to build anything other than the CVA6 core.
#### corev_apu
Source code for the CVA6 APU, exclusive of the CVA6 core.
There should be no sources in this directory used to build the CVA6 core.
#### docs
Documentation (unchanged).
#### scripts
General scriptware (unchanged).
## Publication
If you use CVA6 in your academic work you can cite us:
@ -59,15 +86,17 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
## Getting Started
Go and get the [RISC-V tools](https://github.com/riscv/riscv-tools). Make sure that your `RISCV` environment variable points to your RISC-V installation (see the RISC-V tools and related projects for further information).
Checkout the repository and initialize all submodules
Go and get the [RISC-V tools](https://github.com/riscv/riscv-tools).
Make sure that your `RISCV` environment variable points to your RISC-V installation (see the RISC-V tools and related projects for further information).
<br><br>
Checkout the repository and initialize all submodules:
```
$ git clone https://github.com/openhwgroup/cva6.git
$ git clone -b cva6_reorg https://github.com/openhwgroup/cva6.git cva6_reorg
$ cd cva6_reorg
$ git submodule update --init --recursive
```
Build the Verilator model of CVA6 by using the Makefile:
Build the Verilator model of the COREV-APU by using the Makefile:
```
$ make verilate
```
@ -77,20 +106,33 @@ To build the verilator model with support for vcd files run
$ make verilate DEBUG=1
```
This will create a C++ model of the core including a SystemVerilog wrapper and link it against a C++ testbench (in the `tb` subfolder). The binary can be found in the `work-ver` and accepts a RISC-V ELF binary as an argument, e.g.:
This will create a C++ model of the core including a SystemVerilog wrapper and link it against a C++ testbench (in the `tb` subfolder).
The binary can be found in the `work-ver` and accepts a RISC-V ELF binary as an argument, e.g.:
```
$ work-ver/Variane_testharness rv64um-v-divuw
```
The Verilator testbench makes use of the `riscv-fesvr`. This means that you can use the `riscv-tests` repository as well as `riscv-pk` out-of-the-box. As a general rule of thumb the Verilator model will behave like Spike (exception for being orders of magnitudes slower).
The Verilator testbench makes use of the `riscv-fesvr`.
This means that you can use the `riscv-tests` repository as well as `riscv-pk` out-of-the-box.
As a general rule of thumb the Verilator model will behave like Spike (exception for being orders of magnitudes slower).
Both, the Verilator model as well as the Questa simulation will produce trace logs. The Verilator trace is more basic but you can feed the log to `spike-dasm` to resolve instructions to mnemonics. Unfortunately value inspection is currently not possible for the Verilator trace file.
Both the Verilator model as well as the Questa simulation will produce trace logs.
The Verilator trace is more basic but you can feed the log to `spike-dasm` to resolve instructions to mnemonics.
Unfortunately value inspection is currently not possible for the Verilator trace file.
```
$ spike-dasm < trace_hart_00.dasm > logfile.txt
```
To build, compile and run the CVA6 core-only in its example testbench using Verilator (known to work with V4.108):
```
$ cd core/example_tb
$ make veri_run
```
`make help` will print all supported targets.
### Running User-Space Applications
It is possible to run user-space binaries on CVA6 with `riscv-pk` ([link](https://github.com/riscv/riscv-pk)).
@ -128,11 +170,11 @@ $ make sim elf-bin=$RISCV/riscv64-unknown-elf/bin/pk target-options=hello.elf b
> Be patient! RTL simulation is way slower than Spike. If you think that you ran into problems you can inspect the trace files.
## FPGA Emulation
## COREV-APU FPGA Emulation
We currently only provide support for the [Genesys 2 board](https://reference.digilentinc.com/reference/programmable-logic/genesys-2/reference-manual). We provide pre-build bitstream and memory configuration files for the Genesys 2 [here](https://github.com/openhwgroup/cva6/releases).
Tested on Vivado 2018.2. The FPGA SoC currently contains the following peripherals:
Tested on Vivado 2018.2. The FPGA currently contains the following peripherals:
- DDR3 memory controller
- SPI controller to conncet to an SDCard

Binary file not shown.

158
core/Flist.cv32a6_imac_sv0 Normal file
View file

@ -0,0 +1,158 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2021 OpenHW Group
//
// Licensed under the Solderpad Hardware Licence, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://solderpad.org/licenses/
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0
//
///////////////////////////////////////////////////////////////////////////////
//
// Manifest for the CVA6 CORE RTL model.
// - This is a CORE-ONLY manifest.
// - Relevent synthesis and simulation scripts/Makefiles must set the shell
// ENV variable CVA6_REPO_DIR.
//
///////////////////////////////////////////////////////////////////////////////
+define+WT_DCACHE
+incdir+${CVA6_REPO_DIR}/common/submodules/common_cells/include/
+incdir+${CVA6_REPO_DIR}/common/submodules/common_cells/src/
+incdir+${CVA6_REPO_DIR}/common/local/util/
${CVA6_REPO_DIR}/core/include/cv32a6_imac_sv0_config_pkg.sv
// Broken (?) dependencies in packages:
// - include/ariane_pkg.sv is dependent on src/riscv-dbg/src/dm_pkg.sv
// (ariane should not depend on debug-module)
// - The core RTL is dependent on tb/ariane_soc_pkg.sv
// (RTL should not depend on TB code)
${CVA6_REPO_DIR}/core/include/riscv_pkg.sv
// TODO: should not be needed.
${CVA6_REPO_DIR}/corev_apu/riscv-dbg/src/dm_pkg.sv
${CVA6_REPO_DIR}/core/include/ariane_pkg.sv
// TODO: should not be needed.
${CVA6_REPO_DIR}/corev_apu/tb/ariane_soc_pkg.sv
// TODO: ariane_axi_pkg is dependent on this.
${CVA6_REPO_DIR}/corev_apu/axi/src/axi_pkg.sv
${CVA6_REPO_DIR}/corev_apu/fpga-support/rtl/SyncSpRamBeNx64.sv
${CVA6_REPO_DIR}/core/include/ariane_rvfi_pkg.sv
// Packages
${CVA6_REPO_DIR}/core/include/ariane_axi_pkg.sv
${CVA6_REPO_DIR}/core/include/wt_cache_pkg.sv
${CVA6_REPO_DIR}/core/include/std_cache_pkg.sv
${CVA6_REPO_DIR}/core/include/axi_intf.sv
${CVA6_REPO_DIR}/core/include/instr_tracer_pkg.sv
// Common Cells
${CVA6_REPO_DIR}/common/submodules/common_cells/src/fifo_v3.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/lfsr_8bit.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/lzc.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/rr_arb_tree.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/shift_reg.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/unread.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/popcount.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/exp_backoff.sv
// Floating point unit
${CVA6_REPO_DIR}/core/fpu/src/fpnew_pkg.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_cast_multi.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_classifier.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_divsqrt_multi.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_fma_multi.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_fma.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_noncomp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_opgroup_block.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_opgroup_fmt_slice.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_opgroup_multifmt_slice.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_rounding.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_top.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/control_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/div_sqrt_top_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/iteration_div_sqrt_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/norm_div_sqrt_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/nrbd_nrsc_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/preprocess_mvp.sv
// Top-level source files (not necessarily instantiated at the top of the cva6).
${CVA6_REPO_DIR}/core/ariane_wrapper.sv
${CVA6_REPO_DIR}/core/ariane.sv
${CVA6_REPO_DIR}/core/alu.sv
// Note: depends on fpnew_pkg, above
${CVA6_REPO_DIR}/core/fpu_wrap.sv
${CVA6_REPO_DIR}/core/branch_unit.sv
${CVA6_REPO_DIR}/core/compressed_decoder.sv
${CVA6_REPO_DIR}/core/controller.sv
${CVA6_REPO_DIR}/core/csr_buffer.sv
${CVA6_REPO_DIR}/core/csr_regfile.sv
${CVA6_REPO_DIR}/core/decoder.sv
${CVA6_REPO_DIR}/core/ex_stage.sv
${CVA6_REPO_DIR}/core/instr_realign.sv
${CVA6_REPO_DIR}/core/id_stage.sv
${CVA6_REPO_DIR}/core/issue_read_operands.sv
${CVA6_REPO_DIR}/core/issue_stage.sv
${CVA6_REPO_DIR}/core/load_unit.sv
${CVA6_REPO_DIR}/core/load_store_unit.sv
//${CVA6_REPO_DIR}/core/mmu.sv
${CVA6_REPO_DIR}/core/mult.sv
${CVA6_REPO_DIR}/core/multiplier.sv
${CVA6_REPO_DIR}/core/serdiv.sv
${CVA6_REPO_DIR}/core/perf_counters.sv
//${CVA6_REPO_DIR}/core/ptw.sv
${CVA6_REPO_DIR}/core/ariane_regfile_ff.sv
${CVA6_REPO_DIR}/core/re_name.sv
// NOTE: scoreboard.sv modified for DSIM (unchanged for other simulators)
${CVA6_REPO_DIR}/core/scoreboard.sv
${CVA6_REPO_DIR}/core/store_buffer.sv
${CVA6_REPO_DIR}/core/amo_buffer.sv
${CVA6_REPO_DIR}/core/store_unit.sv
//${CVA6_REPO_DIR}/core/tlb.sv
${CVA6_REPO_DIR}/core/commit_stage.sv
${CVA6_REPO_DIR}/core/axi_shim.sv
// What is "frontend"?
${CVA6_REPO_DIR}/core/frontend/btb.sv
${CVA6_REPO_DIR}/core/frontend/bht.sv
${CVA6_REPO_DIR}/core/frontend/ras.sv
${CVA6_REPO_DIR}/core/frontend/instr_scan.sv
${CVA6_REPO_DIR}/core/frontend/instr_queue.sv
${CVA6_REPO_DIR}/core/frontend/frontend.sv
// Cache subsystem
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_ctrl.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_mem.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_missunit.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_wbuffer.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache.sv
${CVA6_REPO_DIR}/core/cache_subsystem/cva6_icache.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_cache_subsystem.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_axi_adapter.sv
// Physical Memory Protection
// NOTE: pmp.sv modified for DSIM (unchanged for other simulators)
${CVA6_REPO_DIR}/core/pmp/src/pmp.sv
${CVA6_REPO_DIR}/core/pmp/src/pmp_entry.sv
// Tracer (behavioral code, not RTL)
${CVA6_REPO_DIR}/common/local/util/instr_tracer_if.sv
${CVA6_REPO_DIR}/common/local/util/instr_tracer.sv
${CVA6_REPO_DIR}/common/local/util/sram.sv
// MMU Sv32
${CVA6_REPO_DIR}/core/mmu_sv32/cva6_mmu_sv32.sv
${CVA6_REPO_DIR}/core/mmu_sv32/cva6_ptw_sv32.sv
${CVA6_REPO_DIR}/core/mmu_sv32/cva6_tlb_sv32.sv
// end of manifest

View file

@ -0,0 +1,158 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright 2021 OpenHW Group
//
// Licensed under the Solderpad Hardware Licence, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://solderpad.org/licenses/
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0
//
///////////////////////////////////////////////////////////////////////////////
//
// Manifest for the CVA6 CORE RTL model.
// - This is a CORE-ONLY manifest.
// - Relevent synthesis and simulation scripts/Makefiles must set the shell
// ENV variable CVA6_REPO_DIR.
//
///////////////////////////////////////////////////////////////////////////////
+define+WT_DCACHE
+incdir+${CVA6_REPO_DIR}/common/submodules/common_cells/include/
+incdir+${CVA6_REPO_DIR}/common/submodules/common_cells/src/
+incdir+${CVA6_REPO_DIR}/common/local/util/
${CVA6_REPO_DIR}/core/include/cv64a6_imacfd_sv39_config_pkg.sv
// Broken (?) dependencies in packages:
// - include/ariane_pkg.sv is dependent on src/riscv-dbg/src/dm_pkg.sv
// (ariane should not depend on debug-module)
// - The core RTL is dependent on tb/ariane_soc_pkg.sv
// (RTL should not depend on TB code)
${CVA6_REPO_DIR}/core/include/riscv_pkg.sv
// TODO: should not be needed.
${CVA6_REPO_DIR}/corev_apu/riscv-dbg/src/dm_pkg.sv
${CVA6_REPO_DIR}/core/include/ariane_pkg.sv
// TODO: should not be needed.
${CVA6_REPO_DIR}/corev_apu/tb/ariane_soc_pkg.sv
// TODO: ariane_axi_pkg is dependent on this.
${CVA6_REPO_DIR}/corev_apu/axi/src/axi_pkg.sv
${CVA6_REPO_DIR}/corev_apu/fpga-support/rtl/SyncSpRamBeNx64.sv
${CVA6_REPO_DIR}/core/include/ariane_rvfi_pkg.sv
// Packages
${CVA6_REPO_DIR}/core/include/ariane_axi_pkg.sv
${CVA6_REPO_DIR}/core/include/wt_cache_pkg.sv
${CVA6_REPO_DIR}/core/include/std_cache_pkg.sv
${CVA6_REPO_DIR}/core/include/axi_intf.sv
${CVA6_REPO_DIR}/core/include/instr_tracer_pkg.sv
// Common Cells
${CVA6_REPO_DIR}/common/submodules/common_cells/src/fifo_v3.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/lfsr_8bit.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/lzc.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/rr_arb_tree.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/shift_reg.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/unread.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/popcount.sv
${CVA6_REPO_DIR}/common/submodules/common_cells/src/exp_backoff.sv
// Floating point unit
${CVA6_REPO_DIR}/core/fpu/src/fpnew_pkg.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_cast_multi.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_classifier.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_divsqrt_multi.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_fma_multi.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_fma.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_noncomp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_opgroup_block.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_opgroup_fmt_slice.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_opgroup_multifmt_slice.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_rounding.sv
${CVA6_REPO_DIR}/core/fpu/src/fpnew_top.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/control_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/div_sqrt_top_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/iteration_div_sqrt_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/norm_div_sqrt_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/nrbd_nrsc_mvp.sv
${CVA6_REPO_DIR}/core/fpu/src/fpu_div_sqrt_mvp/hdl/preprocess_mvp.sv
// Top-level source files (not necessarily instantiated at the top of the cva6).
${CVA6_REPO_DIR}/core/ariane_wrapper.sv
${CVA6_REPO_DIR}/core/ariane.sv
${CVA6_REPO_DIR}/core/alu.sv
// Note: depends on fpnew_pkg, above
${CVA6_REPO_DIR}/core/fpu_wrap.sv
${CVA6_REPO_DIR}/core/branch_unit.sv
${CVA6_REPO_DIR}/core/compressed_decoder.sv
${CVA6_REPO_DIR}/core/controller.sv
${CVA6_REPO_DIR}/core/csr_buffer.sv
${CVA6_REPO_DIR}/core/csr_regfile.sv
${CVA6_REPO_DIR}/core/decoder.sv
${CVA6_REPO_DIR}/core/ex_stage.sv
${CVA6_REPO_DIR}/core/instr_realign.sv
${CVA6_REPO_DIR}/core/id_stage.sv
${CVA6_REPO_DIR}/core/issue_read_operands.sv
${CVA6_REPO_DIR}/core/issue_stage.sv
${CVA6_REPO_DIR}/core/load_unit.sv
${CVA6_REPO_DIR}/core/load_store_unit.sv
${CVA6_REPO_DIR}/core/mmu.sv
${CVA6_REPO_DIR}/core/mult.sv
${CVA6_REPO_DIR}/core/multiplier.sv
${CVA6_REPO_DIR}/core/serdiv.sv
${CVA6_REPO_DIR}/core/perf_counters.sv
${CVA6_REPO_DIR}/core/ptw.sv
${CVA6_REPO_DIR}/core/ariane_regfile_ff.sv
${CVA6_REPO_DIR}/core/re_name.sv
// NOTE: scoreboard.sv modified for DSIM (unchanged for other simulators)
${CVA6_REPO_DIR}/core/scoreboard.sv
${CVA6_REPO_DIR}/core/store_buffer.sv
${CVA6_REPO_DIR}/core/amo_buffer.sv
${CVA6_REPO_DIR}/core/store_unit.sv
${CVA6_REPO_DIR}/core/tlb.sv
${CVA6_REPO_DIR}/core/commit_stage.sv
${CVA6_REPO_DIR}/core/axi_shim.sv
// What is "frontend"?
${CVA6_REPO_DIR}/core/frontend/btb.sv
${CVA6_REPO_DIR}/core/frontend/bht.sv
${CVA6_REPO_DIR}/core/frontend/ras.sv
${CVA6_REPO_DIR}/core/frontend/instr_scan.sv
${CVA6_REPO_DIR}/core/frontend/instr_queue.sv
${CVA6_REPO_DIR}/core/frontend/frontend.sv
// Cache subsystem
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_ctrl.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_mem.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_missunit.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache_wbuffer.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_dcache.sv
${CVA6_REPO_DIR}/core/cache_subsystem/cva6_icache.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_cache_subsystem.sv
${CVA6_REPO_DIR}/core/cache_subsystem/wt_axi_adapter.sv
// Physical Memory Protection
// NOTE: pmp.sv modified for DSIM (unchanged for other simulators)
${CVA6_REPO_DIR}/core/pmp/src/pmp.sv
${CVA6_REPO_DIR}/core/pmp/src/pmp_entry.sv
// Tracer (behavioral code, not RTL)
${CVA6_REPO_DIR}/common/local/util/instr_tracer_if.sv
${CVA6_REPO_DIR}/common/local/util/instr_tracer.sv
${CVA6_REPO_DIR}/common/local/util/sram.sv
// MMU Sv39
${CVA6_REPO_DIR}/core/mmu_sv39/mmu.sv
${CVA6_REPO_DIR}/core/mmu_sv39/ptw.sv
${CVA6_REPO_DIR}/core/mmu_sv39/tlb.sv
// end of manifest

View file

@ -42,6 +42,11 @@ module ariane import ariane_pkg::*; #(
// firesim trace port
output traced_instr_pkg::trace_port_t trace_o,
`endif
`ifdef RVFI_TRACE
// RISC-V formal interface port (`rvfi`):
// Can be left open when formal tracing is not needed.
output ariane_rvfi_pkg::rvfi_port_t rvfi_o,
`endif
`ifdef PITON_ARIANE
// L15 (memory side)
output wt_cache_pkg::l15_req_t l15_req_o,
@ -894,4 +899,38 @@ module ariane import ariane_pkg::*; #(
`endif // VERILATOR
//pragma translate_on
`ifdef RVFI_TRACE
always_comb
for (int i = 0; i < NR_COMMIT_PORTS; i++) begin
logic exception, mem_exception;
exception = commit_instr_id_commit[i].valid && commit_instr_id_commit[i].ex.valid && ex_commit.valid;
mem_exception = exception &&
(commit_instr_id_commit[i].ex.cause == riscv::INSTR_ADDR_MISALIGNED ||
commit_instr_id_commit[i].ex.cause == riscv::INSTR_ACCESS_FAULT ||
commit_instr_id_commit[i].ex.cause == riscv::ILLEGAL_INSTR ||
commit_instr_id_commit[i].ex.cause == riscv::LD_ADDR_MISALIGNED ||
commit_instr_id_commit[i].ex.cause == riscv::LD_ACCESS_FAULT ||
commit_instr_id_commit[i].ex.cause == riscv::ST_ADDR_MISALIGNED ||
commit_instr_id_commit[i].ex.cause == riscv::ST_ACCESS_FAULT ||
commit_instr_id_commit[i].ex.cause == riscv::INSTR_PAGE_FAULT ||
commit_instr_id_commit[i].ex.cause == riscv::LOAD_PAGE_FAULT ||
commit_instr_id_commit[i].ex.cause == riscv::STORE_PAGE_FAULT);
// when rvfi_valid, the instruction is executed
rvfi_o[i].valid = (commit_ack[i] && !commit_instr_id_commit[i].ex.valid) ||
(exception && (commit_instr_id_commit[i].ex.cause == riscv::ENV_CALL_MMODE ||
commit_instr_id_commit[i].ex.cause == riscv::ENV_CALL_SMODE ||
commit_instr_id_commit[i].ex.cause == riscv::ENV_CALL_UMODE));
rvfi_o[i].insn = commit_instr_id_commit[i].ex.tval[31:0];
// when trap, the instruction is not executed
rvfi_o[i].trap = mem_exception;
rvfi_o[i].mode = debug_mode ? 2'b10 : priv_lvl;
rvfi_o[i].ixl = riscv::XLEN == 64 ? 2 : 1;
rvfi_o[i].rs1_addr = commit_instr_id_commit[i].rs1;
rvfi_o[i].rs2_addr = commit_instr_id_commit[i].rs2;
rvfi_o[i].rd_addr = commit_instr_id_commit[i].rd;
rvfi_o[i].rd_wdata = ariane_pkg::is_rd_fpr(commit_instr_id_commit[i].op) == 0 ? wdata_commit_id[i] : commit_instr_id_commit[i].result;
rvfi_o[i].pc_rdata = commit_instr_id_commit[i].pc;
end
`endif
endmodule // ariane

237
core/ariane_wrapper.sv Normal file
View file

@ -0,0 +1,237 @@
// Copyright 2021 Thales DIS design services SAS
//
// Licensed under the Solderpad Hardware Licence, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0
// You may obtain a copy of the License at https://solderpad.org/licenses/
//
// Original Author: Jean-Roch COULON (jean-roch.coulon@thalesgroup.com)
module ariane_wrapper import ariane_pkg::*; #(
parameter ariane_pkg::ariane_cfg_t ArianeCfg = ariane_pkg::ArianeDefaultConfig
) (
input logic clk_i,
input logic rst_ni,
// Core ID, Cluster ID and boot address are considered more or less static
input logic [63:0] boot_addr_i, // reset boot address
input logic [63:0] hart_id_i, // hart id in a multicore environment (reflected in a CSR)
// Interrupt inputs
input logic [1:0] irq_i, // level sensitive IR lines, mip & sip (async)
input logic ipi_i, // inter-processor interrupts (async)
// Timer facilities
input logic time_irq_i, // timer interrupt in (async)
input logic debug_req_i, // debug request (async)
`ifdef FIRESIM_TRACE
// firesim trace port
output traced_instr_pkg::trace_port_t trace_o,
`endif
// RISC-V formal interface port (`rvfi`):
// Can be left open when formal tracing is not needed.
output logic rvfi_valid_1,
output logic[63:0] rvfi_order_1,
output logic[31:0] rvfi_insn_1,
output logic rvfi_trap_1,
output logic rvfi_halt_1,
output logic rvfi_intr_1,
output logic[2:0] rvfi_mode_1,
output logic[2:0] rvfi_ixl_1,
output logic[4:0] rvfi_rs1_addr_1,
output logic[4:0] rvfi_rs2_addr_1,
output logic[riscv::XLEN-1:0] rvfi_rs1_rdata_1,
output logic[riscv::XLEN-1:0] rvfi_rs2_rdata_1,
output logic[4:0] rvfi_rd_addr_1,
output logic[riscv::XLEN-1:0] rvfi_rd_wdata_1,
output logic[riscv::XLEN-1:0] rvfi_pc_rdata_1,
output logic[riscv::XLEN-1:0] rvfi_pc_wdata_1,
output logic[riscv::XLEN-1:0] rvfi_mem_addr_1,
output logic[(riscv::XLEN)/8-1:0] rvfi_mem_rmask_1,
output logic[(riscv::XLEN)/8-1:0] rvfi_mem_wmask_1,
output logic[riscv::XLEN-1:0] rvfi_mem_rdata_1,
output logic[riscv::XLEN-1:0] rvfi_mem_wdata_1,
output logic rvfi_valid_0,
output logic[63:0] rvfi_order_0,
output logic[31:0] rvfi_insn_0,
output logic rvfi_trap_0,
output logic rvfi_halt_0,
output logic rvfi_intr_0,
output logic[2:0] rvfi_mode_0,
output logic[2:0] rvfi_ixl_0,
output logic[4:0] rvfi_rs1_addr_0,
output logic[4:0] rvfi_rs2_addr_0,
output logic[riscv::XLEN-1:0] rvfi_rs1_rdata_0,
output logic[riscv::XLEN-1:0] rvfi_rs2_rdata_0,
output logic[4:0] rvfi_rd_addr_0,
output logic[riscv::XLEN-1:0] rvfi_rd_wdata_0,
output logic[riscv::XLEN-1:0] rvfi_pc_rdata_0,
output logic[riscv::XLEN-1:0] rvfi_pc_wdata_0,
output logic[riscv::XLEN-1:0] rvfi_mem_addr_0,
output logic[(riscv::XLEN)/8-1:0] rvfi_mem_rmask_0,
output logic[(riscv::XLEN)/8-1:0] rvfi_mem_wmask_0,
output logic[riscv::XLEN-1:0] rvfi_mem_rdata_0,
output logic[riscv::XLEN-1:0] rvfi_mem_wdata_0,
`ifdef PITON_ARIANE
// L15 (memory side)
output wt_cache_pkg::l15_req_t l15_req_o,
input wt_cache_pkg::l15_rtrn_t l15_rtrn_i
`else
// memory side, AXI Master
output ariane_axi::id_t aw_id_o,
output ariane_axi::addr_t aw_addr_o,
output axi_pkg::len_t aw_len_o,
output axi_pkg::size_t aw_size_o,
output axi_pkg::burst_t aw_burst_o,
output logic aw_lock_o,
output axi_pkg::cache_t aw_cache_o,
output axi_pkg::prot_t aw_prot_o,
output axi_pkg::qos_t aw_qos_o,
output axi_pkg::region_t aw_region_o,
output axi_pkg::atop_t aw_atop_o,
output ariane_axi::user_t aw_user_o,
output logic aw_valid_o,
output ariane_axi::data_t w_data_o,
output ariane_axi::strb_t w_strb_o,
output logic w_last_o,
output ariane_axi::user_t w_user_o,
output logic w_valid_o,
output logic b_ready_o,
output ariane_axi::id_t ar_id_o,
output ariane_axi::addr_t ar_addr_o,
output axi_pkg::len_t ar_len_o,
output axi_pkg::size_t ar_size_o,
output axi_pkg::burst_t ar_burst_o,
output logic ar_lock_o,
output axi_pkg::cache_t ar_cache_o,
output axi_pkg::prot_t ar_prot_o,
output axi_pkg::qos_t ar_qos_o,
output axi_pkg::region_t ar_region_o,
output ariane_axi::user_t ar_user_o,
output logic ar_valid_o,
output logic r_ready_o,
input logic aw_ready_i,
input logic ar_ready_i,
input logic w_ready_i,
input logic b_valid_i,
input ariane_axi::id_t b_id_i,
input axi_pkg::resp_t b_resp_i,
input ariane_axi::user_t b_user_i,
input logic r_valid_i,
input ariane_axi::id_t r_id_i,
input ariane_axi::data_t r_data_i,
input axi_pkg::resp_t r_resp_i,
input logic r_last_i,
input ariane_axi::user_t r_user_i
`endif
);
ariane_axi::req_t axi_ariane_req;
ariane_axi::resp_t axi_ariane_resp;
ariane_rvfi_pkg::rvfi_port_t rvfi;
assign aw_id_o = axi_ariane_req.aw.id;
assign aw_addr_o = axi_ariane_req.aw.addr;
assign aw_len_o = axi_ariane_req.aw.len;
assign aw_size_o = axi_ariane_req.aw.size;
assign aw_burst_o = axi_ariane_req.aw.burst;
assign aw_lock_o = axi_ariane_req.aw.lock;
assign aw_cache_o = axi_ariane_req.aw.cache;
assign aw_prot_o = axi_ariane_req.aw.prot;
assign aw_qos_o = axi_ariane_req.aw.qos;
assign aw_region_o = axi_ariane_req.aw.region;
assign aw_atop_o = axi_ariane_req.aw.atop;
assign aw_user_o = axi_ariane_req.aw.user;
assign aw_valid_o = axi_ariane_req.aw_valid;
assign w_data_o = axi_ariane_req.w.data;
assign w_strb_o = axi_ariane_req.w.strb;
assign w_last_o = axi_ariane_req.w.last;
assign w_user_o = axi_ariane_req.w.user;
assign w_valid_o = axi_ariane_req.w_valid;
assign b_ready_o = axi_ariane_req.b_ready;
assign ar_id_o = axi_ariane_req.ar.id;
assign ar_addr_o = axi_ariane_req.ar.addr;
assign ar_len_o = axi_ariane_req.ar.len;
assign ar_size_o = axi_ariane_req.ar.size;
assign ar_burst_o = axi_ariane_req.ar.burst;
assign ar_lock_o = axi_ariane_req.ar.lock;
assign ar_cache_o = axi_ariane_req.ar.cache;
assign ar_prot_o = axi_ariane_req.ar.prot;
assign ar_qos_o = axi_ariane_req.ar.qos;
assign ar_region_o = axi_ariane_req.ar.region;
assign ar_user_o = axi_ariane_req.ar.user;
assign ar_valid_o = axi_ariane_req.ar_valid;
assign r_ready_o = axi_ariane_req.r_ready;
assign axi_ariane_resp.aw_ready = aw_ready_i;
assign axi_ariane_resp.ar_ready = ar_ready_i;
assign axi_ariane_resp.w_ready = w_ready_i;
assign axi_ariane_resp.b_valid = b_valid_i;
assign axi_ariane_resp.b.id = b_id_i;
assign axi_ariane_resp.b.resp = b_resp_i;
assign axi_ariane_resp.b.user = b_user_i;
assign axi_ariane_resp.r_valid = r_valid_i;
assign axi_ariane_resp.r.id = r_id_i;
assign axi_ariane_resp.r.data = r_data_i;
assign axi_ariane_resp.r.resp = r_resp_i;
assign axi_ariane_resp.r.last = r_last_i;
assign axi_ariane_resp.r.user = r_user_i;
assign rvfi_valid_1 = rvfi[1].valid;
assign rvfi_order_1 = rvfi[1].order;
assign rvfi_insn_1 = rvfi[1].insn;
assign rvfi_trap_1 = rvfi[1].trap;
assign rvfi_halt_1 = rvfi[1].halt;
assign rvfi_intr_1 = rvfi[1].intr;
assign rvfi_mode_1 = rvfi[1].mode;
assign rvfi_ixl_1 = rvfi[1].ixl;
assign rvfi_rs1_addr_1 = rvfi[1].rs1_addr;
assign rvfi_rs2_addr_1 = rvfi[1].rs2_addr;
assign rvfi_rs1_rdata_1 = rvfi[1].rs1_rdata;
assign rvfi_rs2_rdata_1 = rvfi[1].rs2_rdata;
assign rvfi_rd_addr_1 = rvfi[1].rd_addr;
assign rvfi_rd_wdata_1 = rvfi[1].rd_wdata;
assign rvfi_pc_rdata_1 = rvfi[1].pc_rdata;
assign rvfi_pc_wdata_1 = rvfi[1].pc_wdata;
assign rvfi_mem_addr_1 = rvfi[1].mem_addr;
assign rvfi_mem_rmask_1 = rvfi[1].mem_rmask;
assign rvfi_mem_wmask_1 = rvfi[1].mem_wmask;
assign rvfi_mem_rdata_1 = rvfi[1].mem_rdata;
assign rvfi_mem_wdata_1 = rvfi[1].mem_wdata;
assign rvfi_valid_0 = rvfi[0].valid;
assign rvfi_order_0 = rvfi[0].order;
assign rvfi_insn_0 = rvfi[0].insn;
assign rvfi_trap_0 = rvfi[0].trap;
assign rvfi_halt_0 = rvfi[0].halt;
assign rvfi_intr_0 = rvfi[0].intr;
assign rvfi_mode_0 = rvfi[0].mode;
assign rvfi_ixl_0 = rvfi[0].ixl;
assign rvfi_rs1_addr_0 = rvfi[0].rs1_addr;
assign rvfi_rs2_addr_0 = rvfi[0].rs2_addr;
assign rvfi_rs1_rdata_0 = rvfi[0].rs1_rdata;
assign rvfi_rs2_rdata_0 = rvfi[0].rs2_rdata;
assign rvfi_rd_addr_0 = rvfi[0].rd_addr;
assign rvfi_rd_wdata_0 = rvfi[0].rd_wdata;
assign rvfi_pc_rdata_0 = rvfi[0].pc_rdata;
assign rvfi_pc_wdata_0 = rvfi[0].pc_wdata;
assign rvfi_mem_addr_0 = rvfi[0].mem_addr;
assign rvfi_mem_rmask_0 = rvfi[0].mem_rmask;
assign rvfi_mem_wmask_0 = rvfi[0].mem_wmask;
assign rvfi_mem_rdata_0 = rvfi[0].mem_rdata;
assign rvfi_mem_wdata_0 = rvfi[0].mem_wdata;
ariane #(
.ArianeCfg ( ariane_soc::ArianeSocCfg )
) i_ariane (
.clk_i ( clk_i ),
.rst_ni ( rst_ni ),
.boot_addr_i ( boot_addr_i ),
.hart_id_i ( hart_id_i ),
.irq_i ( irq_i ),
.ipi_i ( ipi_i ),
.time_irq_i ( time_irq_i ),
.rvfi_o ( rvfi ),
.debug_req_i ( debug_req_i ),
.axi_req_o ( axi_ariane_req ),
.axi_resp_i ( axi_ariane_resp )
);
endmodule // ariane_wrapper

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb.o: Vcva6_core_only_tb.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,66 @@
# Verilated -*- Makefile -*-
# DESCRIPTION: Verilator output: Makefile for building Verilated archive or executable
#
# Execute this makefile from the object directory:
# make -f Vcva6_core_only_tb.mk
default: Vcva6_core_only_tb
### Constants...
# Perl executable (from $PERL)
PERL = perl
# Path to Verilator kit (from $VERILATOR_ROOT)
VERILATOR_ROOT = /usr/local/share/verilator
# SystemC include directory with systemc.h (from $SYSTEMC_INCLUDE)
SYSTEMC_INCLUDE ?=
# SystemC library directory with libsystemc.a (from $SYSTEMC_LIBDIR)
SYSTEMC_LIBDIR ?=
### Switches...
# SystemC output mode? 0/1 (from --sc)
VM_SC = 0
# Legacy or SystemC output mode? 0/1 (from --sc)
VM_SP_OR_SC = $(VM_SC)
# Deprecated
VM_PCLI = 1
# Deprecated: SystemC architecture to find link library path (from $SYSTEMC_ARCH)
VM_SC_TARGET_ARCH = linux
### Vars...
# Design prefix (from --prefix)
VM_PREFIX = Vcva6_core_only_tb
# Module prefix (from --prefix)
VM_MODPREFIX = Vcva6_core_only_tb
# User CFLAGS (from -CFLAGS on Verilator command line)
VM_USER_CFLAGS = \
# User LDLIBS (from -LDFLAGS on Verilator command line)
VM_USER_LDLIBS = \
# User .cpp files (from .cpp's on Verilator command line)
VM_USER_CLASSES = \
cva6_tb_verilator \
# User .cpp directories (from .cpp's on Verilator command line)
VM_USER_DIR = \
/home/mike/GitHubRepos/openhwgroup/cva6/cva6_reorg/core/example_tb/ \
### Default rules...
# Include list of all generated classes
include Vcva6_core_only_tb_classes.mk
# Include global rules
include $(VERILATOR_ROOT)/include/verilated.mk
### Executable rules... (from --exe)
VPATH += $(VM_USER_DIR)
cva6_tb_verilator.o: /home/mike/GitHubRepos/openhwgroup/cva6/cva6_reorg/core/example_tb//cva6_tb_verilator.cpp
$(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $<
### Link rules... (from --exe)
Vcva6_core_only_tb: $(VK_USER_OBJS) $(VK_GLOBAL_OBJS) $(VM_PREFIX)__ALL.a $(VM_HIER_LIBS)
$(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) $(LIBS) $(SC_LIBS) -o $@
# Verilated -*- Makefile -*-

View file

@ -0,0 +1,8 @@
// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Design implementation internals
// See Vcva6_core_only_tb.h for the primary calling header
#include "Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h"
#include "Vcva6_core_only_tb__Syms.h"
//==========

View file

@ -0,0 +1,8 @@
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.o: \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.cpp \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb.h \
Vcva6_core_only_tb___024unit.h

View file

@ -0,0 +1,51 @@
// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Design internal header
// See Vcva6_core_only_tb.h for the primary calling header
#ifndef _VCVA6_CORE_ONLY_TB_AXI_BUS__A40_AB40_AC5_AD1_H_
#define _VCVA6_CORE_ONLY_TB_AXI_BUS__A40_AB40_AC5_AD1_H_ // guard
#include "verilated_heavy.h"
//==========
class Vcva6_core_only_tb__Syms;
//----------
VL_MODULE(Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1) {
public:
// LOCAL SIGNALS
CData/*0:0*/ aw_ready;
CData/*0:0*/ w_ready;
CData/*4:0*/ b_id;
CData/*0:0*/ b_valid;
CData/*0:0*/ ar_ready;
CData/*4:0*/ r_id;
CData/*0:0*/ r_last;
CData/*0:0*/ r_valid;
QData/*63:0*/ r_data;
// INTERNAL VARIABLES
private:
Vcva6_core_only_tb__Syms* __VlSymsp; // Symbol table
public:
// CONSTRUCTORS
private:
VL_UNCOPYABLE(Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1); ///< Copying not allowed
public:
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1(const char* name = "TOP");
~Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1();
// INTERNAL METHODS
void __Vconfigure(Vcva6_core_only_tb__Syms* symsp, bool first);
private:
void _ctor_var_reset() VL_ATTR_COLD;
} VL_ATTR_ALIGNED(VL_CACHE_LINE_BYTES);
//----------
#endif // guard

View file

@ -0,0 +1,37 @@
// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Design implementation internals
// See Vcva6_core_only_tb.h for the primary calling header
#include "Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h"
#include "Vcva6_core_only_tb__Syms.h"
//==========
VL_CTOR_IMP(Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1) {
// Reset internal values
// Reset structure values
_ctor_var_reset();
}
void Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1::__Vconfigure(Vcva6_core_only_tb__Syms* vlSymsp, bool first) {
if (false && first) {} // Prevent unused
this->__VlSymsp = vlSymsp;
if (false && this->__VlSymsp) {} // Prevent unused
}
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1::~Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1() {
}
void Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1::_ctor_var_reset() {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1::_ctor_var_reset\n"); );
// Body
aw_ready = VL_RAND_RESET_I(1);
w_ready = VL_RAND_RESET_I(1);
b_id = VL_RAND_RESET_I(5);
b_valid = VL_RAND_RESET_I(1);
ar_ready = VL_RAND_RESET_I(1);
r_id = VL_RAND_RESET_I(5);
r_data = VL_RAND_RESET_Q(64);
r_last = VL_RAND_RESET_I(1);
r_valid = VL_RAND_RESET_I(1);
}

View file

@ -0,0 +1,8 @@
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1__Slow.o: \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1__Slow.cpp \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb.h \
Vcva6_core_only_tb___024unit.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__1.o: Vcva6_core_only_tb__1.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__10.o: Vcva6_core_only_tb__10.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__10__Slow.o: Vcva6_core_only_tb__10__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__11.o: Vcva6_core_only_tb__11.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__11__Slow.o: Vcva6_core_only_tb__11__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__12.o: Vcva6_core_only_tb__12.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__12__Slow.o: Vcva6_core_only_tb__12__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__1__Slow.o: Vcva6_core_only_tb__1__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__2.o: Vcva6_core_only_tb__2.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__2__Slow.o: Vcva6_core_only_tb__2__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__3.o: Vcva6_core_only_tb__3.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__3__Slow.o: Vcva6_core_only_tb__3__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__4.o: Vcva6_core_only_tb__4.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__4__Slow.o: Vcva6_core_only_tb__4__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__5.o: Vcva6_core_only_tb__5.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__5__Slow.o: Vcva6_core_only_tb__5__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Vcva6_core_only_tb__6.o: Vcva6_core_only_tb__6.cpp Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
Vcva6_core_only_tb__6__Slow.o: Vcva6_core_only_tb__6__Slow.cpp \
Vcva6_core_only_tb.h \
/usr/local/share/verilator/include/verilated_heavy.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h \
Vcva6_core_only_tb__Syms.h Vcva6_core_only_tb___024unit.h \
Vcva6_core_only_tb_AXI_BUS__A40_AB40_AC5_AD1.h

Some files were not shown because too many files have changed in this diff Show more