This repository contains the code for the mini projects for ECE 554 @ UW-Madison, Spring 2023.
Group members:
- Julien de Castelnau
- Elan Graupe
All of the mentioned programs should be in $PATH.
makepython3- Modelsim:
vsim - Quartus executables:
quartus_sh,quartus_pgm
- To build a SOF file for the DE1-SoC:
make fpga - To simulate all testbenches:
make sim - To simulate a specific testbench called
MyTB(see Repository Structure):make sim TB=MyTB - To open the modelsim GUI for
MyTB:make gui TB=MyTB
- To open the quartus project: Double click the
*.qsfinfpga/de1_soc.- Make sure the assembly file you want is built and placed in
out/out.hex. See below simulation steps for building asm files.
- Make sure the assembly file you want is built and placed in
- To simulate MiniLab0:
- Create the ModelSim project manually. Add
tb/MiniLab0/MiniLab0_tb.svto the project. Add all of the files inrtl/(the design files) to the project. - Create
out/in the root of the repository if it does not already exist. - From the root of the repository, run
python3 sw/assemble.py fw/MiniLab0.asm -o out/out.hex. - Start simulation with
MiniLab0_tbas the toplevel and run.
- Create the ModelSim project manually. Add
doc/: Contains all documentation related to the project.fpga/: Contains quartus projects for each board, having their own directory with a Makefile inside. For instance,fpga/de1_soc.fw/: Contains all firmware to be run on the FPGA itself. Assembly files, potentially C files in the future, etc.out/: A folder autogenerated by the scripts. The memory modules look for the instruction memory listing in this folder,out.hex.rtl/: Contains all of the synthesizable design logic.sw/: Accessory software to run on the host PC. Automation scripts live here. E.g assembler, testbench runnertb/: Contains a folder within for each testbench, plus a folder (tb/pkg/) for all packages containing tasks,functions,parameters, etc. for the testbenches.tb.json: A JSON file used by the automation scripts to associate each testbench folder with a top level Verilog module, and a firmware file to automatically build.