cores-swerv-el2/configs
Olof Kindgren a08b395d8c Add FuseSoC support for SweRV EL2
This adds an initial FuseSoC core description file for SweRV EL2.

In addition to the core file there is also a python wrapper for
the core configuration (configs/swerv_config_gen.py) that is used
as a FuseSoC generator. There is also a tcl file (tools/vivado.tcl)
with Vivado-specific options that FuseSoC will pick up automatically
when Vivado is used.

It has been successfully tested in a modified SweRVolf SoC to boot
Zephyr OS in a Verilator simulation and on the Nexys A7 FPGA board.

TODO:

- Add target for running the bundled SweRV EL2 testbench
- Add Model/Questasim support
2020-01-31 10:36:53 +01:00
..
README.md Initial checkin. 2020-01-22 14:22:50 -08:00
swerv.config Initial checkin. 2020-01-22 14:22:50 -08:00
swerv_config_gen.py Add FuseSoC support for SweRV EL2 2020-01-31 10:36:53 +01:00

README.md

SweRV RISC-V EL2 core from Western Digital

Configuration

Contents

Name Description
swerv.config Configuration script for SweRV-EL2

This script will generate a consistent set of defines/#defines/parameters needed for the design and testbench.
A perl hash (perl_configs.pl) and a JSON format for SweRV-iss are also generated. This set of include files :

$RV_ROOT/configs/snapshots/<target>
├── common_defines.vh                       # `defines for testbench
├── defines.h                               # #defines for C/assembly headers
├── el2_param.vh                            # Actual Design parameters
├── el2_pdef.vh                             # Parameter structure definition
├── pd_defines.vh                           # `defines for physical design
├── perl_configs.pl                         # Perl %configs hash for scripting
├── el2_pic_ctrl_verilator_unroll.sv        # Unrolled verilog based on PIC size (for verilator only)
├── pic_map_auto.h                          # PIC memory map based on configure size
└── whisper.json                            # JSON file for swerv-iss

While the defines may be modified by hand, it is recommended that this script be used to generate a consistent set.

Targets

There are 4 predefined target configurations: default, default_ahb, typical_pd and high_perf that can be selected via the -target=name option to swerv.config.

Target Description
default Default configuration. AXI4 bus interface.
default_ahb Default configuration, AHB-Lite bus interface
typical_pd No ICCM, AXI4 bus interface
high_perf Large BTB/BHT, AXI4 interface

swerv.config may be edited to add additional target configurations, or new configurations may be created via the command line -set or -unset options.