VivadoAndTcl: synth_design

本文详细解释了Vivado工具中的综合命令及其众多选项,包括设计命名、硬件选择、约束文件、顶层模块设置、代码目录管理、参数设定以及各种优化策略,如面积优化、性能优化和时序调整等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该命令用于综合vivado工程并打开那个综合后的设计。其可以添加非常多的综合设计选项,列举如下:

  1. name: 给综合设计起一个名字。
  2. part: 指定综合设计所使用的芯片。
  3. constrset: 指定综合设计时所使用的约束文件。
  4. top: 指定综合设计的顶层文件。
  5. include_dirs: 指定代码里`include文件的目录,可以通过创建列表来包含多个目录。
  6. generic: 用于指定顶层模块的parameter参数的值。
  7. verilog_define: 定义一些代码中要用到的常量或者符号。
  8. flatten_hierarchy: 在进行LUT映射的时候,对结构进行一定程度的打平。
    1. rebuilt: 该选项为默认选项,其功能是重新生成RTL代码原有的层级。
    2. full: 完全打平整个设计的层级结构。
    3. none: 对原设计不做任何层级改变。
  9. gated_clock_conversion: 门控时钟综合选项(不建议使用门控时钟,除非时钟资源不够用)。
  10. directive: 指定综合设计的策略。
    1. default: 运行默认综合过程。
    2. runtimeoptimized: 以运行时间为主的优化策略。
    3. AreaOptimized_high: 面积优化,主要会应用AreaMapLargeShiftRegToBRAM和AreaThresholdUseDSP策略。
    4. AreaOptimized_medium: 执行一般的面积优化,对加法、进位链等进行优化。
    5. AlternateRoutability: 通过减少使用MUXFs和CARRYs来提升整体的可布通性,同时该方法会减少LUT combining来降低部分区域布线的拥塞(对整体也许并不会有大的提升,因为降低了LUT的复用会增加LUT的用量)。
    6. AreaMapLargeShiftRegToBRAM: 将大型移位寄存器映射为BRAM
    7. AreaMultThresholdDSP: 优化乘法器,更多地使用dsp来进行乘法运算
    8. FewerCarryChains: 使用LUTs来代替进位链。
    9. PerformanceOptimized: 通过使用更大面积来获得逻辑级数的减少。
    10. LogicCompaction: 通过对乘法器的LUTs和进位链进行trade-off,以将乘法器模块在一个更小的区域里进行布线。
  11. rtl: 评估HDL源代码并打开RTL设计。
  12. lint: 在源文件上运行rtl linter来检查代码语法正确性。
  13. dataflow: 评估HDL源代码并打开数据流设计。数据流设计是RTL设计的一个抽象,可以轻松的跟踪设计里的高带宽数据路径,数据流设计仅仅展示RAMs、DSPs和其他IP blocks。
  14. rtl_skip_ip: 字面意思,跳过ip核打开rtl设计。
  15. rtl_skip_constraints: 字面意思,跳过约束打开rtl设计。
  16. bufg: 指定最多使用多少个bufg.
  17. no_lc: 禁止进行LUT combining。
  18. shreg_min_size: 指定最少用于SRL的寄存器数量。
  19. mode: (default or out_of_context)指定综合的模式。
  20. fsm_extraction: 指定状态机编码格式(off、one_hot、sequential、johnson、gray、auto),选择auto即可,vivado会自动选择最优的状态机编码格式。
  21. keep_equivalent_registers: 保持等效寄存器。
  22. resource_sharing: 不同信号之间共享加法器或者减法器来降低面积。
  23. cascade_dsp: 指定在DSP输出结果中添加加法器。
  24. control_set_opt_threshold: 根据control_set_opt_threshold设置来优化控制集。
  25. incremental: 指定增量编译的DCP文件。
  26. max_bram: 设置综合时最大可使用的BRAM。
  27. max_uram: 设置综合时最大可使用的URAM。
  28. max_dsp: 设置综合时最大可使用的DSP。
  29. max_bram_cascade_height: 设置BRAM最大级联高度。
  30. max_uram_cascade_height: 设置URAM最大级联高度。
  31. retiming: 重定时(Retiming)是一种时序优化技术,用在不影响电路输入/输出行为的情况下跨组合逻辑寄存器从而提高设计性能。
  32. no_retiming: 关闭自动调整时序功能。
  33. no_srlextract: 使用简单寄存器而不是移位寄存器来实现设计。
  34. no_timing_driven: 关闭时序驱动综合算法来获得更好的编译速度。
### Vivado Synthesis 阶段卡在 Running Synth_design 的解决方案 当 Vivado 在合成阶段卡在 `Running synth_design` 时,可能是由于多种原因引起的。以下是可能的原因分析以及对应的解决方法: #### 可能原因及对应措施 1. **资源占用过高** 如果计算机的 CPU 或内存被其他程序大量占用,则可能导致 Vivado 合成过程变慢甚至卡住。建议关闭不必要的后台进程,并确保有足够的计算资源供 Vivado 使用[^3]。 2. **设计复杂度增加** 添加新的 IP 核(如 ILA)可能会显著提高设计的复杂度,从而延长综合时间。如果最近的设计更改涉及新增复杂的逻辑模块或较大的数据路径操作,可以尝试简化设计或者分步验证新加入的功能模块是否正常工作。 3. **代码中的潜在问题** 设计中可能存在未检测到的语法错误或其他隐含问题,这些问题虽然不会立即报错,但却会影响综合效率。因此,在执行综合前应仔细检查 RTL 代码的质量,确认其符合标准并已通过静态分析工具测试[^2]。 4. **日志文件审查** 查看 Vivado 提供的日志文件可以帮助定位具体瓶颈所在。通常情况下,这些日志能够指出哪些部分耗费了较多的时间或是存在冲突的地方。打开 Tcl Console 并输入命令查看详细进度信息: ```tcl puts [get_property LOG_FILE_NAME [current_run]] ``` 5. **重新构建项目** 当遇到持续性的卡顿现象而无法找到确切原因时,考虑删除 .XPR 文件夹下的临时生成物后再重新编译整个工程也是一个可行的办法。这一步骤有助于排除因缓存损坏而导致的问题。 6. **更新软件版本** 若上述方法均未能解决问题,那么有可能是当前使用的 Vivado 版本本身存在问题或者是 bug 所致。此时应当查阅 Xilinx 官方网站上的 Release Notes ,了解是否存在针对该类情况发布的补丁包;必要时升级至最新稳定版以获得更好的兼容性和性能表现。 ```bash # 更新Vivado的方法可以通过官网下载安装最新的服务包(Services Pack),按照指引完成安装即可。 ``` --- ### 总结 通过对硬件资源配置、源码质量控制、日志数据分析等多个角度入手排查,大多数由 `Running synth_design` 引发的延迟状况都可以得到有效缓解乃至彻底消除。同时保持良好的开发习惯——定期备份重要成果、及时保存修改后的文档也是预防此类事件发生的重要手段之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值