1
0
forked from tanchou/Verilog
Files
Verilog_Louis/Help/counter2
Gamenight77 f5e73d7379 struct
2025-05-02 15:51:18 +02:00
..
2025-05-02 15:51:18 +02:00
2025-05-02 15:51:18 +02:00
2025-05-02 15:51:18 +02:00
2025-05-02 15:51:18 +02:00
2025-05-02 15:51:18 +02:00
2025-05-02 15:51:18 +02:00

Aim of the project

This project gives an example of the desired structure for a Verilog project. It is composed of the following folders:

  • build : Contains (tcl) scripts to build a Vivado or other project out of this arborescence.
  • constraints : Contains the constraints (if needed) for the project.
  • ip : Contains external dependencies of the project. This folder is used for commodity only in order to simplify test and verification scripts. Its contents should be populated by a build script (or manually copied in some cases). Each subdirectory corresponds to a dependency in the same format as the current document. For old projects, at least src directory should be present. Normally, it should not be under version control.
  • runs : Contains all temporary files built by the runs of different tools (e.g. simulation, verification etc.). It might have a substructure, depending on the tool. It should not be under version control.
  • scripts : Contains different scripts related to the project. Typical examples - launch simulation or verification. The scripts might be in shell, makefile, tcl etc. A preference for tcl should be considered.
  • src : Contains source files for the project. It has subdirectories corresponding to the HDL language used (Verilog, VHDL, Migen, Amaranth, etc)
  • tests : Contains testbenches for the project. It has subdirectories corresponding to the used tool (cocotb, verilog, verilator, etc). For python-based tools, the corresponding structure should allow test discovery using pytest (file names containing test and functions containing test).
  • verification : Contains scripts and files for formal verification.
  • other folders that are related to the editor and that probably should not be under version control.

The project should be under version control (e.g. git) and have corresponding .gitignore specifications.

The root of the project shall only contain:

  • a README.md file that gives the description of the project.
  • .gitignore or similar files, related to the version control.
  • a Makefile or a launcher script named project that have arguments allowing to run different tools. If present, it must contain at least the argument clean that will delete all elements from the run folder (maybe also all non-vcs tracked files).
  • Editor-related files, e.g. workspace.code-workspace for VSCode. These files should not be under version control.