Bump difftest: connect AXI inside when !isFPGA (#259)
Previous https://github.com/OSCPU/NutShell/pull/258 always expose CPU/MEM AXI ports and connect them in Difftest. This change move the connect back to DUT inside by default, and only override
cpu <> memwithcpu <> cpuIOandmem <> memIOwhen isFPGA with DifftestMemCtrl.exposeIO(cpuAXI,memAXI).
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
NutShell (果壳)
NutShell is a processor developed by the OSCPU (Open Source Chip Project by University) team.
Currently it supports riscv64/32.
See here for the documents.
See the History and Naming section for naming issue.
Demo: Running Debian on FPGA
Compile chisel code
mill. Refer to the Manual section in this guide.maketo generate verilog code. The output file isbuild/TopMain.v.Run programs by simulation
You can either use our ready-to-run image for simulation or build image yourself.
To use ready-to run image (recommended) :
make emuto launch simulation. Default image is linux kernel.make IMAGE=yourimage.bin emuto specify your image file. We have provided some in ./ready-to-run.To build image yourself:
NEMU_HOMEto the absolute path of the NEMU project.NUTSHELL_HOMEto the absolute path of the NutShell project.AM_HOMEto the absolute path of the AM project.make ARCH=riscv64-nutshell run.Run on FPGA
Sub-directories Overview
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
Change
pynqto the target board you want. Supported boards are listed underboard/. The project will be created underboard/pynq/build/myproject-pynq. Please note that STANDALONE mode is only used inpynqboard.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.
Boot linux in PS
Just insert the SD card into the board, open a serial terminal and powerup the board.
Boot NutShell (the RISC-V subsystem)
To boot the RISC-V subsystem
fpga/resource/ddr-loader/ddr-loader.cto PS. This can be achieved by either copying the file to SD card, or by sending the file withscpif you have your board connected to your host by network.sshand usetmuxto get multiple terminals.poweroffin PS.History and Naming
Is NutShell developed from scratch?
No. NutShell is originally based on the NOOP project, an educational RV32 SoC designed by Nanjing University (NJU). At 2019/08/27, the OSCPU team decided to start a new project based on a fork of NOOP.
Why was there only one contributor in this repo before 2019/08/27?
NOOP was maintained by sashimi-yzh on behalf of NJU before 2019/08/27.
What is the different between NutShell and NOOP?
Undergraduate students in the OSCPU team planned to enhance the educational SoC to a fully functional RV64 SoC, on behalf of University of Chinese Academy of Sciences (UCAS, 中国科学院大学). The goal was to boot Linux + Debian and tapeout the chip. Students have put a lot of effort into achieving such a goal.
Where can I find the original NOOP repo?
NOOP is designed as a programming assignment for educational purpose. It is still unstable and may be redesigned every year. Therefore there is no official release for NOOP yet.
But here are some reference implementations:
Why can I still find the name NOOP in the code as well as the commit logs after 2019/08/27?
During the development, the OSCPU team has not yet thought of a good name for the SoC. Before this repo is available to the public, they finally decide to name the SoC NutShell. In Chinese, NutShell (果壳) and the nickname of UCAS (国科大) are similar in pronunciation. The name NutShell is welcomed by every student in UCAS.
I found a name Argo in the code as well as the commit logs. What is it?
Argo is the name of a dual-issued OoO core designed by AugustusWillisWang. AugustusWillisWang is one of the students who develop NutShell. Argo is designed based on NutShell, and they share the same SoC architecture.
I found a name COOSCA in the commit logs. What is it?
COOSCA is an internal name of the SoC. Students in the team want a better name, so there comes NutShell. The name COOSCA should be rarely presented in the repo.