在源同步輸出介面中,FPGA為目標器件提供時鐘。在邊緣對齊的源同步介面中,時鐘轉換與數據轉換同時發生。圖1所示為源同步輸出介面示例。
使用以下步驟約束邊緣對齊的源同步輸出介面:
- 創建基本時鐘和生成的時鐘
- 添加輸出延遲約束
- 添加虛假路徑例外,從時序分析和報告中排除無效路徑
有關這些步驟中的任意步驟或下面描述的計算和約束的更多詳細資訊,請參閱 約束和分析源同步介面 (PDF)。
時鐘
FPGA的輸入埠上需要一個基頻時鐘。
所有鎖相環 (PLL) 輸出都需要生成的時鐘。雙倍數據速率邊沿對齊源同步輸出使輸出時鐘與數據時鐘對齊。
FPGA的輸出時鐘埠上需要一個生成的時鐘。生成的時鐘是數據總線輸出延遲值的時鐘參考。
輸出延遲約束
您可以使用最大偏斜規範來計算輸出延遲值。最大偏斜規格指示數據總線各個位離開FPGA的允許時間變化。
輸出最大延遲的值是時鐘週期 - 最大偏斜值。
輸出最小延遲值是最大偏斜值。
錯誤路徑異常
在這個邊緣對齊的示例中,數據在上升-上升和下降-下降源和目標時鐘轉換時傳輸。使用假路徑異常來減少上升-下降和下降-上升時鐘轉換,因為數據不會在相對邊沿的時鐘轉換上傳輸。
範例 SDC 檔
# 在 FPGA 的輸入埠上創建一個基本時鐘 ,create_clock -name input_clock -週期 10 [get_ports clk_in] # 在 PLL 輸出上創建生成的時鐘 # 輸出 clk[0] 驅動數據寄存器 # 輸出 clk[1] create_generated_clock -name data_clock -source [get_pins pll|inclk[0]] \ [get_pins pll|clk[0]] create_generated_clock -name clock_clock -source [get_pinspll|inclk[0] \ [get_pins pll|clk[1]] # 在 FPGA create_generated_clock -name output_clock -source [get_pins pll|clk[1]] \ [get_ports clk_out] # 添加最大和最小輸出延遲約束 # 假設偏斜要求為 +/- 250ps # 使用上面列出的輸出延遲值的公式 set_output_delay -max -clock output_clock [expr { 10 - 0.250 }] \ [get_ports data_out*] set_output_delay -max -clock output_clock -clock_fall \ [expr { 10 - 0.250 }] [get_ports data_out*] -添加 set_output_delay -min -clock output_clock 0.250 [get_ports data_out*] set_output_delay -min -clock output_clock -clock_fall 0.250 \ [get_ports data_out*] -add # 為跨時鐘傳輸添加錯誤的路徑異常 set_false_path -setup -end -rise_from [get_clocks data_clock] \ -fall_to [get_clocks output_clock] set_false_path -設置-結束 -fall_from [get_clocks data_clock] \ -rise_to [get_clocks output_clock] set_false_path -保留 -結束 -rise_from [get_clocks data_clock] \ -fall_to [get_clocks output_clock] set_false_path -保留 -結束 -fall_from [get_clocks data_clock] \ -rise_to [get_clocks output_clock]