Update README

This commit is contained in:
2023-03-20 12:00:33 +08:00
parent a5ea6b4009
commit 54c21479da
2 changed files with 55 additions and 74 deletions
+55 -10
View File
@@ -1,17 +1,62 @@
# Vivado Git Repository
Since the day I was admitted to my lab, the vivado project management has always been a pain in the ass for me and my lab fellows. And I didn't realize how vital revision control is to a software/hardware developer until the day I accidentally overwrote the initial version of one of my modules and it's gone ever since. So after couple of days learning vivado revision control tricks, this repository came out.
This repository includes all the design sources and third-party reference used in my vivado project.
The target of this repository is to stores vivado-related project and verilog/vhdl files, and maybe associated MATLAB files, or even related documentations explaining how the modules work and things needed to be taken care of when interfacing with the modules.
## Table of Contents
- [Vivado Git Repository](#vivado-git-repository)
- [Table of Contents](#table-of-contents)
- [Background](#background)
- [How this repository is constructed?](#how-this-repository-is-constructed)
- [Top Level](#top-level)
- [Basic Project Structure](#basic-project-structure)
## Background
Since the day I joined my lab, managing Vivado projects has always been a challenge for me and my colleagues. It was not until I accidentally overwrote the initial version of one of my modules that I realized how crucial revision control is for software/hardware developers. After spending a couple of days learning Vivado revision control tricks, I created this repository.
## How this repository is constructed?
This repository include all the design sources and third-party reference used in my vivado project.
This repository is designed to store Vivado-related project files and Verilog/VHDL files primarily, but it can also hold associated MATLAB files and related documentation explaining how the modules work and things that need to be taken care of when interfacing with the modules.
| Directory Name | Description | Synthesis Required | Implementation Required | Bitstream Required |
| :------------: | :--------------------------------------------------------------- | :--: | :--: | :--: |
| adi_library | ADI no-OS IP Library, build with Xilinx Vivado 2019.1. | N/A | N/A | N/A |
| common | Common Verilog/VHDL modules that can work solely without other IPs. | Yes | No | No |
| modules | Verilog/VHDL modules that work with other IPs, thus the modules are FPGA-specific and they are managed in project mode. In the future the modules may also be categorised by different Vivado versions. | Yes | No | No |
| projects | Project or board specific vivado projects, that can be run on hardware. | Yes | Yes | Yes |
| template | Project initialization template. | N/A | N/A | N/A |
### Top Level
The structure of the top level structure is shown in the table below.
| Name | Description | Synthesis Required | Implementation Required | Bitstream Required |
| :--------------------: | :------------------------------------------------- | :--: | :--: | :--: |
| adi_library | ADI no-OS IP Library, built with Xilinx Vivado 2019.1. | N/A | N/A | N/A |
| common | Common Verilog/VHDL modules that can work solely without other IPs. | Yes | No | No |
| custom_ips (empty yet) | Custom IPs. | Yes | No | No |
| modules | Verilog/VHDL modules that work with other IPs, thus the modules are FPGA-specific and they are managed in project mode. In the future the modules may also be categorised by different Vivado versions. | Yes | No | No |
| projects | Project or board specific vivado projects, that can be run on hardware. | Yes | Yes | Yes |
| template | Project initialization template. | N/A | N/A | N/A |
| .gitignore | gitignore file that tells git which files to ignore. | N/A | N/A | N/A |
| README.md | This readme. | N/A | N/A | N/A |
### Basic Project Structure
As listed above, modules and projects are managed in project mode, in which Vivado automatically manages the source files, constraints, IPs, run results, and so on. However, the directory structures are not friendly to revision control systems because they contain many redundant files that do not require revision control, such as synthesis and implementation results, simulation intermediate files.
Fortunately, Vivado designers have already considered almost everything related to revision control. According to the *Vivado Design Suite User Guide: Design Flows Overview* ([UG892](https://docs.xilinx.com/v/u/2019.1-English/ug892-vivado-design-flows-overview)), the only thing we need to do is store our design sources outside of the Vivado project directory.
The basic project structure is based on [UG892](https://docs.xilinx.com/v/u/2019.1-English/ug892-vivado-design-flows-overview) and several Vivado quick take videos.
1. [*Using Vivado Design Suite with Revision Control*](https://www.xilinx.com/video/hardware/vivado-design-suite-revision-control.html): explains basic concepts of Vivado revision control.
2. [*Configuring and Managing Reusable IP in Vivado*](https://www.xilinx.com/video/hardware/configuring-managing-reusable-ip-vivado.html): include how to use Vivado Manage IP project.
3. [*IP Revision Control*](https://www.xilinx.com/video/hardware/ip-revision-control.html): mainly focus on the new feature of Vivado 2021.1 that makes revision control easier.
The structure is provided in the following table. It should be noted that anything listed below, except for the project directory, will be under revision control. For more details, one can refer to the .gitignore file.
| Name | Description |
| :---------: | :---------- |
| constraints | All XDC constraint files and Tcl commands used as constraints. |
| docs | Any design related docs, specs, reports, etc. |
| ip | The IP source files and output products. |
| ipi-bds | The IP Integrator block design source file (.bd), along with IP subdirectory including IP source files and output products. |
| project | The Vivado projects. Each subdirectory contains a single Vivado project. Note that even if there is only one project, it should be included in a subdirectory so that the .gitignore file can correctly identify unwanted files. |
| rtl | All RTL-based source files including .include files. |
| scripts | Run scripts used to compile the design including any pre and post scripts used when launching runs, along with any other custom scripts. |
| testbenches | Simulation test benches and stimulus files. |
-64
View File
@@ -1,64 +0,0 @@
# ---------------------------- Vivado & SDK common -----------------------------
# ignore the vivado project
project/*/*
# folders (and all of their contents) that should always be ignored,
# anywhere in the repo
.Xil/
# file patterns that should always be ignored (journal files, log
# files, dump files that are created upon Vivado/SDK errors)
*.jou
*.log
*.backup.jou
*.backup.log
*.upgrade_log
*.dmp
vivado_pid*
*~
# ------------------------------ Vivado Specific -------------------------------
# preserve hardware manager projects and sources
!project/*/*.hw/
# preserve design run results
!project/*/*.runs/
project/*/*.runs/*
!project/*/*.runs/impl_*/
project/*/*.runs/impl_*/*
!project/*/*.runs/impl_*/*.bit
!project/*/*.runs/impl_*/*.ltx
# -------------------------------- SDK Specific --------------------------------
!project/*/*.sdk/
# exclude some obscure hidden SDK folders
project/*/*.sdk/.metadata/
project/*/*.sdk/.sdk/
project/*/*.sdk/RemoteSystemsTempFiles/
project/*/*.sdk/webtalk/
# hw_platform : exclude the entire hw_platform folder, as everything can be
# generated from the .hdf file. Make sure to include the bitstream in the .hdf
# file when exporting from Vivado!
project/*/*.sdk/*_hw_platform_*/
# BSP: only keep `.cproject`, `.project`, `.sdkproject`, `.system.mss` and
# Makefile, the ps7_cortexa9_0 lib files are regenerated automatically
project/*/*.sdk/*_bsp/*
!project/*/*.sdk/*_bsp/*.cproject
!project/*/*.sdk/*_bsp/*.project
!project/*/*.sdk/*_bsp/*.sdkproject
!project/*/*.sdk/*_bsp/system.mss
!project/*/*.sdk/*_bsp/Makefile
# Application: ignored file patterns, exclude Debug & Release folders
project/*/*.sdk/**/*.o
project/*/*.sdk/**/*.d
project/*/*.sdk/**/*.a
project/*/*.sdk/*/Debug/
project/*/*.sdk/*/Release/
# REF: https://support.xilinx.com/s/question/0D52E00006iHpHzSAK/which-files-and-folders-of-an-sdk-project-should-be-checked-into-git-and-which-ones-should-be-ignored?language=en_US