type
Post
status
Published
date
Apr 13, 2025
slug
vivado_sys_imp
summary
tags
FPGA
category
FPGA
icon
password
上次编辑时间
Jul 18, 2025 03:51 AM
AI summary

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]

2 2. 关键优化属性

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>]

2.2 (2) 时序优化

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

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

  • 异步路径约束
    • 对跨时钟域路径设置 set_false_pathset_clock_groups,避免无效时序分析。
    • 示例:
    • 同步器识别
      • Vivado 自动识别常见的同步器结构(如双寄存器),无需额外约束。

    4 4. 增量综合(Incremental Synthesis)

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

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

    • 时钟定义
      • 输入/输出延迟
        • 多周期路径

          6 6. 综合报告分析

          生成报告的命令:report_timing_summary -file timing.rpt关键指标:
          • WNS (Worst Negative Slack):最差负裕量(需 ≥0)。
          • 资源利用率:LUT、FF、BRAM、DSP 占用比例。
          • 时钟频率:检查是否满足目标频率(Target Frequency)。

          7 7. 常见问题与调优

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

          8 总结

          Vivado 综合设置的核心是通过策略、属性、约束协同优化设计目标(性能/面积/功耗)。建议:
          1. 初始阶段:使用默认策略,逐步添加约束。
          1. 时序违例:优先调整 PerformanceOptimized_highRetiming
          1. 资源紧张:启用 AreaOptimized_high 和资源共享(如 Resource Sharing)。
          1. 迭代优化:结合综合报告与增量编译快速验证修改效果。