1
0
forked from tanchou/Verilog
This commit is contained in:
Gamenight77
2025-05-02 15:51:18 +02:00
parent 0faab53c30
commit f5e73d7379
105 changed files with 707398 additions and 1 deletions

22
Help/counter2/README.md Normal file
View File

@@ -0,0 +1,22 @@
# 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.