Skip to content

Open-source high-performance RISC-V processor

License

Notifications You must be signed in to change notification settings

sjxcn/XiangShan

Repository files navigation

NOOP

NOOP(NJU Out-of-Order Processor) is a processor targeting super-scalar out-of-order execution. Currently it only supports riscv32.

Compile chisel code

  • Install mill. Refer to the Manual section in this guide.
  • Run make init to init git submodules
  • Run make to generate verilog code. The output file is build/TopMain.v.

Run programs by simulation

  • Set a new environment variable NEMU_HOME to the absolute path of the NEMU project.
  • Set a new environment variable NOOP_HOME to the absolute path of the NOOP project.
  • Clone the AM project.
  • Set a new environment variable AM_HOME to the absolute path of the AM project.
  • Add a new AM riscv64-noop in the AM project if it is not provided.
  • Run the application in the AM project by make ARCH=riscv64-noop run.

Run on FPGA

Sub-directories Overview

fpga
├── board              # supported FPGA boards and files to build a Vivado project
├── boot               # PS boot flow of zynq and zynqmp
├── lib                # HDL sources shared by different boards
├── Makefile
├── Makefile.check
└── noop.tcl           # wrapper of NOOP core in the Vivado project

Build a Vivado project

  • Install Vivado 2019.1, and source the setting of Vivado and SDK
  • Run the following command to build a Vivado project
cd fpga
make PRJ=myproject BOARD=axu3cg

Change axu3cg to the target board you want. Supported boards are listed under board/. The project will be created under board/axu3cg/build/myproject-axu3cg.

  • Open the project with Vivado and generate bitstream.

Prepare SD card

Refer to the instructions of fpga/boot/README.md.

NOTE: Remember to put the bitstream into BOOT.BIN, since the guide is going to boot everything from SD card.

Set your board to SD boot mode

Please refer to the user guide of your board.

  • zedboard
  • zcu102
  • sidewinder
  • ultraZ (currently not avaliable to the public)
  • axu3cg (currently not avaliable to the public)

Boot linux in PS

Just insert the SD card into the board, open a serial terminal and powerup the board.

Boot NOOP (the RISC-V subsystem)

To boot the RISC-V subsystem

  • Send fpga/resource/ddr-loader/ddr-loader.c to PS. This can be achieved by either copying the file to SD card, or by sending the file with scp if you have your board connected to your host by network.
  • Compile the loader by gcc on PS.
gcc -O2 -o ddr-loader ddr-loader.c
  • Send the RISC-V program (bin file, should start at 0x80000000) to PS.
  • Open minicom on PS to connect to the UART of NOOP. Note that you can connect to PS via ssh and use tmux to get multiple terminals.
minicom -D /dev/ttyUL1
  • Use the loader to load the program to NOOP memory and start running NOOP.
./ddr-loader axu3cg bin-file
  • To shutdown the board, first run poweroff in PS.

About

Open-source high-performance RISC-V processor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 93.9%
  • Python 5.1%
  • Other 1.0%