Update README.md
This commit is contained in:
parent
763cd3d38a
commit
1abeb9a380
110
README.md
110
README.md
|
@ -1,111 +1 @@
|
||||||
# Cores-SweRV
|
|
||||||
SweRV EH1 core
|
|
||||||
SweRV RISC-V CoreTM from Western Digital
|
|
||||||
This repository contains the SweRV CoreTM design RTL
|
|
||||||
|
|
||||||
License
|
|
||||||
By contributing to this project, you agree that your contribution is governed by Apache-2.0.
|
|
||||||
Files under the tools directory may be available under a different license. Please review individual file for details.
|
|
||||||
|
|
||||||
Directory Structure
|
|
||||||
├── configs # Configurations Dir
|
|
||||||
│ └── snapshots # Where generated configuration files are created
|
|
||||||
├── design # Design root dir
|
|
||||||
│ ├── dbg # Debugger
|
|
||||||
│ ├── dec # Decode, Registers and Exceptions
|
|
||||||
│ ├── dmi # DMI block
|
|
||||||
│ ├── exu # EXU (ALU/MUL/DIV)
|
|
||||||
│ ├── ifu # Fetch & Branch Prediction
|
|
||||||
│ ├── include
|
|
||||||
│ ├── lib
|
|
||||||
│ └── lsu # Load/Store
|
|
||||||
├── docs
|
|
||||||
├── tools # Scripts/Makefiles
|
|
||||||
└── testbench # (Very) simple testbench
|
|
||||||
├── asm # Example assembly files
|
|
||||||
└── hex # Canned demo hex files
|
|
||||||
Dependencies
|
|
||||||
Verilator (3.926 or later) must be installed on the system
|
|
||||||
If adding/removing instructions, espresso must be installed (used by tools/coredecode)
|
|
||||||
Quickstart guide
|
|
||||||
Clone the repository
|
|
||||||
Setup RV_ROOT to point to the path in your local filesystem
|
|
||||||
Determine your configuration {optional}
|
|
||||||
Run make with tools/Makefile
|
|
||||||
Configurations
|
|
||||||
SweRV can be configured by running the $RV_ROOT/configs/swerv.config script:
|
|
||||||
|
|
||||||
% $RV_ROOT/configs/swerv.config -h for detailed help options
|
|
||||||
|
|
||||||
For example to build with a DCCM of size 64 :
|
|
||||||
|
|
||||||
% $RV_ROOT/configs/swerv.config -dccm_size=64
|
|
||||||
|
|
||||||
This will update the default snapshot in $RV_ROOT/configs/snapshots/default/ with parameters for a 64K DCCM.
|
|
||||||
|
|
||||||
Add -snapshot=dccm64, for example, if you wish to name your build snapshot dccm64 and refer to it during the build.
|
|
||||||
|
|
||||||
This script derives the following consistent set of include files :
|
|
||||||
|
|
||||||
$RV_ROOT/configs/snapshots/default
|
|
||||||
├── common_defines.vh # `defines for testbench or design
|
|
||||||
├── defines.h # #defines for C/assembly headers
|
|
||||||
├── pd_defines.vh # `defines for physical design
|
|
||||||
├── perl_configs.pl # Perl %configs hash for scripting
|
|
||||||
├── pic_ctrl_verilator_unroll.sv # Unrolled verilog based on PIC size
|
|
||||||
├── pic_map_auto.h # PIC memory map based on configure size
|
|
||||||
└── whisper.json # JSON file for swerv-iss
|
|
||||||
Building a model
|
|
||||||
Set the RV_ROOT environment variable to the root of the SweRV directory structure
|
|
||||||
|
|
||||||
RV_ROOT = /path/to/swerv
|
|
||||||
export RV_ROOT
|
|
||||||
|
|
||||||
Create your configuration
|
|
||||||
|
|
||||||
(Skip if default is sufficient)
|
|
||||||
(Name your snapshot to distinguish it from the default. Without an explicit name, it will update/override the default snapshot)
|
|
||||||
$RV_ROOT/configs/swerv.config [configuration options..] -snapshot=mybuild
|
|
||||||
|
|
||||||
Snapshots are placed in $RV_ROOT/configs/snapshots/<snapshot name>/ directory
|
|
||||||
|
|
||||||
Build with verilator:
|
|
||||||
|
|
||||||
make -f $RV_ROOT/tools/Makefile verilator [snapshot=name]
|
|
||||||
|
|
||||||
This will create and populate the verilator obj_dir/ in the current work dir.
|
|
||||||
|
|
||||||
Other targets supported:
|
|
||||||
|
|
||||||
vcs (Synopsys)
|
|
||||||
irun (Cadence)
|
|
||||||
Running a simple Hello World program (verilator)
|
|
||||||
RV_ROOT = /path/to/swerv
|
|
||||||
export RV_ROOT
|
|
||||||
|
|
||||||
make -f $RV_ROOT/tools/Makefile verilator-run
|
|
||||||
This will build a verilator model of SweRV with AHB-lite bus, and execute a short sequence of instructions that writes out "HELLO WORLD" to the bus.
|
|
||||||
|
|
||||||
You can re-execute using
|
|
||||||
|
|
||||||
./obj_dir/Vtb_top
|
|
||||||
|
|
||||||
Start of sim
|
|
||||||
|
|
||||||
------------------------------
|
|
||||||
Hello World from SweRV @WDC !!
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
Finished : minstret = 389, mcycle = 1658
|
|
||||||
|
|
||||||
End of sim
|
|
||||||
A vcd file sim.vcd is created which can be browsed by gtkwave or similar waveform viewers. trace_port.csv contains a log of the trace port.
|
|
||||||
|
|
||||||
The Makefile allows you to specify different assembly files from command line
|
|
||||||
|
|
||||||
make -f $RV_ROOT/tools/Makefile verilator-run ASM_TEST=my_hellow_world.s ASM_TEST_DIR=/path/to/dir
|
|
||||||
If you change only the assembly files, you do not need to rebuild verilator, just specify the target as program.hex :
|
|
||||||
|
|
||||||
make -f $RV_ROOT/tools/Makefile program.hex ASM_TEST=my_hello_world.s ASM_TEST_DIR=/path/to/dir
|
|
||||||
./obj_dir/Vtb_top
|
|
||||||
Western Digital, the Western Digital logo, G-Technology, SanDisk, Tegile, Upthere, WD, SweRV Core, SweRV ISS, and OmniXtend are registered trademarks or trademarks of Western Digital Corporation or its affiliates in the US and/or other countries. All other marks are the property of their respective owners.
|
|
||||||
|
|
Loading…
Reference in New Issue