moerjielovecookie

Sawen_Blog

一个普通工科牲的博客网站
x
github
follow
email

Vivado中关于综合的设置

0.1.1 1. 综合策略(Synthesis Strategy)#

  • 作用:控制综合工具优化设计的方向(性能、面积、功耗)。
  • 选项
    • Vivado Synthesis Defaults:默认策略,平衡性能和资源。
    • AreaOptimized_high:优先减少资源占用(如 LUT、寄存器)。
    • PerformanceOptimized_high:优先时序性能(降低关键路径延迟)。
    • PowerOptimized_high:优化功耗(需配合电源约束)。
  • 配置位置
    • Vivado 的 Project Settings > Synthesis > Strategy
    • 命令行:set_property strategy <strategy_name> [current_run]

0.1.2 2. 关键优化属性#

0.1.2.1 (1) 资源控制#

  • MAX_FANOUT
    • 限制信号的最大扇出,减少高扇出网络导致的时序问题。
    • 设置方式:在 RTL 代码或 XDC 约束中添加 set_property MAX_FANOUT <value> [get_nets <net_name>]
  • RAM_STYLE
    • 指定 RAM 实现方式(block 使用 BRAM,distributed 使用 LUTRAM)。
    • 示例:set_property RAM_STYLE block [get_cells <ram_instance>]
  • USE_DSP48
    • 强制乘法器使用 DSP48 单元(而非 LUT),提升性能。
    • 设置方式:set_property USE_DSP48 yes [get_cells <mult_instance>]

0.1.2.2 (2) 时序优化#

  • Retiming
    • 跨寄存器调整逻辑位置,平衡关键路径延迟。
    • 启用方式:在综合设置中勾选 Perform register retiming
  • Control Set Optimization
    • 合并相同控制信号(复位 / 使能)的寄存器,减少控制集数量。
    • 选项:Auto(默认)或 Aggressive

0.1.3 3. 跨时钟域(CDC)处理#

  • 异步路径约束
    • 对跨时钟域路径设置 set_false_pathset_clock_groups,避免无效时序分析。

    • 示例:

      set_clock_groups -asynchronous -group {clkA} -group {clkB}
      
  • 同步器识别
    • Vivado 自动识别常见的同步器结构(如双寄存器),无需额外约束。

0.1.4 4. 增量综合(Incremental Synthesis)#

  • 作用:仅重新综合修改部分,缩短编译时间。
  • 启用条件
    • 需在首次综合后生成 checkpoint 文件(.dcp)。
    • 后续运行时勾选 Incremental Synthesis 选项。
  • 适用场景:小型设计迭代,避免全流程耗时。

0.1.5 5. 约束文件(XDC)关键设置#

  • 时钟定义

    create_clock -period 10 [get_ports clk]  ; 定义10ns周期时钟
    
  • 输入 / 输出延迟

    set_input_delay 2.0 -clock [get_clocks clk] [get_ports data_in]
    set_output_delay 1.5 -clock [get_clocks clk] [get_ports data_out]
    
  • 多周期路径

    set_multicycle_path 2 -setup -from [get_pins {regA|C}] -to [get_pins {regB|D}]
    

0.1.6 6. 综合报告分析#

生成报告的命令:report_timing_summary -file timing.rpt
关键指标:

  • WNS (Worst Negative Slack):最差负裕量(需 ≥0)。
  • 资源利用率:LUT、FF、BRAM、DSP 占用比例。
  • 时钟频率:检查是否满足目标频率(Target Frequency)。

0.1.7 7. 常见问题与调优#

  • 高扇出网络
    • 解决方案:插入 BUFG(全局缓冲)或复制寄存器。
  • 关键路径未优化
    • 检查逻辑层级,手动添加流水线(pipeline)。
  • 控制集过多
    • 减少复位 / 使能信号种类,或启用 Control Set Optimization

0.1.8 总结#

Vivado 综合设置的核心是通过策略、属性、约束协同优化设计目标(性能 / 面积 / 功耗)。建议:

  1. 初始阶段:使用默认策略,逐步添加约束。
  2. 时序违例:优先调整 PerformanceOptimized_highRetiming
  3. 资源紧张:启用 AreaOptimized_high 和资源共享(如 Resource Sharing)。
  4. 迭代优化:结合综合报告与增量编译快速验证修改效果。
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。