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. 迭代優化:結合綜合報告與增量編譯快速驗證修改效果。
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。