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]
- Vivado 的
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>]
。
- 指定 RAM 實現方式(
- 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_path
或set_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 綜合設置的核心是通過策略、屬性、約束協同優化設計目標(性能 / 面積 / 功耗)。建議:
- 初始階段:使用默認策略,逐步添加約束。
- 時序違例:優先調整
PerformanceOptimized_high
和Retiming
。 - 資源緊張:啟用
AreaOptimized_high
和資源共享(如Resource Sharing
)。 - 迭代優化:結合綜合報告與增量編譯快速驗證修改效果。