跳转到内容
新建笔记

Vivado 从 RTL 到上板

输入典型文件职责
Design Sources.sv、.v、.vhd、IP、Block Design定义可综合电路
Constraints.xdc定义时钟、I/O、时序例外和物理要求
Simulation SourcesTestbench、模型、测试数据产生激励并自动检查功能

约束不是最后补的“引脚表”。主时钟和外部接口时序应在架构阶段建立,使综合和实现从一开始就按真实目标优化。

flowchart TD
SRC["RTL / IP / XDC"] --> SIM["行为仿真"]
SRC --> SYN["Synthesis<br/>RTL → 网表"]
SYN --> OPT["opt_design"] --> PLACE["place_design"] --> PHYS["phys_opt_design 可选"] --> ROUTE["route_design"]
ROUTE --> REPORT["时序、DRC、资源、功耗"] --> BIT["write_bitstream"]
  • 综合:推断逻辑、优化并映射到 LUT、触发器、RAM、DSP 等原语。
  • 实现:逻辑优化、布局、物理优化和布线。
  • Bitstream:在实现后的器件配置上生成,不等同于综合网表。
  • 顶层器件和源文件集合是否正确。
  • 是否出现锁存器、多驱动、组合环、未使用端口或位宽截断。
  • RAM/DSP/SRL 是否按预期推断。
  • 时钟是否走专用资源,资源是否超预算。
  • report_timing_summary:建立/保持和未约束路径。
  • report_drc:电气、时钟、布局和配置问题。
  • report_clock_interaction / CDC 报告:跨域关系和同步结构。
  • 资源与功耗报告:是否接近器件或热设计边界。

图形界面适合探索,稳定工程应导出或维护 Tcl 构建脚本,固定:器件型号、源文件、IP 参数、XDC、综合/实现策略和输出路径。不要把临时生成目录当成唯一工程源。

下面是从工程根目录运行的阶段示例,假定 rtl/ 与 constraints/top.xdc 已准备好,器件也已按实际工程选择。涉及 SystemVerilog package、include、IP 或混合语言时,要另行明确依赖与编译顺序,不能只依赖文件名排序。

file mkdir build
set rtl_files [lsort [glob -nocomplain ./rtl/*.sv]]
if {[llength $rtl_files] == 0} { error "No RTL files found" }
read_verilog -sv $rtl_files
read_xdc ./constraints/top.xdc
synth_design -top top -part xc7a35tfgg484-2
opt_design
place_design
route_design
report_timing_summary -file timing_summary.rpt
write_bitstream -force build/top.bit

实际脚本还应在关键报告不通过时返回失败,避免“生成了 bit 文件”被误认为构建成功。