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