README.md

    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.

    项目简介

    Open-source high-performance RISC-V processor

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/OpenXiangShan/XiangShan

    发行版本

    当前项目没有发行版本

    贡献者 66

    全部贡献者

    开发语言

    • Scala 94.0 %
    • Python 4.5 %
    • Shell 0.6 %
    • Makefile 0.5 %
    • C 0.4 %