【vivado約束學習二】 IO延時約束

【vivado約束學習二】 IO延時約束

1 I/O延遲約束介紹

要在設計中精確建模外部時序,必須爲輸入和輸出端口提供時序信息。 Xilinx Vivado集成設計環境(IDE)僅在FPGA邊界內識別時序,因此必須使用以下命令指定超出這些邊界的延遲值:
1,set_input_delay
2,set_output_delay

2 輸入延遲(Input Delay)

set_input_delay命令指定輸入端口上相對於設計接口處時鐘邊沿的輸入路徑延遲。
在考慮應用板時,輸入延遲表示以下各項之間的相位差:
A.數據從外部芯片通過電路板傳播到FPGA的輸入封裝引腳。
B.相關的板上參考時鐘
輸入延遲值可以是正的或負的,這取決於設備接口處的時鐘和數據相對相位。
雖然-clock選項在Synopsys設計約束(SDC)標準中是可選的,但它是Vivado IDE所必需的。 相對時鐘可以是設計時鐘或虛擬時鐘。
使用set_input_delay命令選項
例1:此示例定義了相對於先前定義的sysClk的輸入延遲,用於最小和最大分析。

> create_clock -name sysClk -period 10 [get_ports CLK0] 
> set_input_delay -clock sysClk 2 [get_ports DIN]

例2:此示例定義相對於先前定義的虛擬時鐘的輸入延遲。

> create_clock -name clk_port_virt -period 10 
> set_input_delay -clock clk_port_virt 2 [get_ports DIN]

例3:此示例爲min分析和最大分析相對於sysClk的定義了不同的輸入延遲值。

> create_clock -name sysClk -period 10 [get_ports CLK0] 
> set_input_delay -clock sysClk -max 4 [get_ports DIN] 
> set_input_delay -clock sysClk -min 1 [get_ports DIN]

例4:要限制I / O端口之間的純組合路徑,必須在I / O端口上相對於先前定義的虛擬時鐘定義輸入和輸出延遲。以下示例在端口DIN和DOUT之間的組合路徑上設置5 ns(10 ns - 4 ns - 1 ns)約束:

> create_clock -name sysClk -period 10 [get_ports CLK0] 
> set_input_delay -clock sysClk 4 [get_ports DIN] 
> set_output_delay -clock sysClk 1 [get_ports DOUT] 

例5:此示例指定相對於DDR時鐘的輸入延遲值。

> create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN] 
> set_input_delay -clock clk_ddr -max 2.1 [get_ports DDR_IN] 
> set_input_delay -clock clk_ddr -max 1.9 [get_ports DDR_IN] -clock_fall -add_delay 
> set_input_delay -clock clk_ddr -min 0.9 [get_ports DDR_IN] 
> set_input_delay -clock clk_ddr -min 1.1 [get_ports DDR_IN] -clock_fall -add_delay

3 輸出延遲(Output Delay)
set_output_delay命令指定輸出端口相對於設計接口處的時鐘邊沿的輸出路徑延遲。
在考慮開發板時,此延遲表示以下兩者之間的相位差:
A.數據從FPGA的輸出封裝引腳傳播,通過電路板傳輸到另一個器件
B. 相對參考板時鐘。
輸出延遲值可以是正數或負數,具體取決於FPGA外部的時鐘和數據相對相位。
使用set_output_delay命令選項:
例1:此示例定義了相對於先前定義的sysClk的輸出延遲,用於最小和最大分析。

> create_clock -name sysClk -period 10 [get_ports CLK0] 
> set_output_delay -clock sysClk 6 [get_ports DOUT]

例2:此示例定義相對於先前定義的虛擬時鐘的輸出延遲。

> create_clock -name clk_port_virt -period 10 
> set_output_delay -clock clk_port_virt 6 [get_ports DOUT]

例3:此示例指定相對於DDR時鐘的輸出延遲值,其具有用於min(hold)和max(setup)分析的不同值。

> create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN] 
> set_output_delay -clock clk_ddr -max 2.1 [get_ports DDR_OUT] 
> set_output_delay -clock clk_ddr -max 1.9 [get_ports DDR_OUT] -clock_fall  -add_delay 
> set_output_delay -clock clk_ddr -min 0.9 [get_ports DDR_OUT] 
> set_output_delay -clock clk_ddr -min 1.1 [get_ports DDR_OUT] -clock_fall  -add_delay
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章