This is my personal project structure and Makefile for the FPGA boards which features an iCE40 FPGA. This particular example is based on the Icestorm Template here. The template has been tested on both the TinyFPGA and the Upduino development boards.
The purpose of this template is to provide a multi-directory structure that allows for clear file output and organisation.
docs
- Contains GitHub contribution documentation, as well as eventual location for generated project docsexamples
- Full projects using the template for referenceloads
- Files (.bin) to load onto the FPGApar
- Place and route files (generated file and .pcf file)scripts
- Python scripts to assist in various taskssim
- Testbench files and sim resultssrc
- Source design filessyn
- Synthesis generated files
To generate your Verilog project, run: python scripts/generate_verilog.py
To generate a testbench from a Verilog top-level module, run: python scripts/generate_testbench.py
To generate a physical constraints file from a Verilog top-level module, run: python scripts/generate_pcf.py
To synthesise then place and route, run: make
To simulate, run: make sim