NOOP(NJU Out-of-Order Processor) is a processor targeting super-scalar out-of-order execution. Currently it only supports riscv32.
- 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 isbuild/TopMain.v
.
- 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
.
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
- 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.
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.
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)
Just insert the SD card into the board, open a serial terminal and powerup the board.
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 withscp
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 usetmux
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.