??上一篇我們講過(guò)set_input_delay:
set_input_delay如何約束?
什么是output_delay?
顧名思義,output_delay就是指輸出端口的數(shù)據(jù)相對(duì)于參數(shù)時(shí)鐘邊沿的延時(shí)。
對(duì)于系統(tǒng)同步,FPGA和下游器件是同一個(gè)時(shí)鐘源,output delay的設(shè)置方式如下圖所示:
image-20220922214836390
image-20220923191831151
對(duì)于我們常用的源同步場(chǎng)景,output delay的設(shè)置方式如下圖所示:
image-20220923191055430
set_output_delay語(yǔ)法
set_output_delay[?clock][?reference_pin ][?clock_fall] [?rise][?fall][?max][?min][?add_delay][?network_latency_included] [?source_latency_included][?quiet][?verbose]
Name | Description |
---|---|
[-clock] | Relative clock |
[-reference_pin] | Relative pin or port |
[-clock_fall] | Delay is relative to falling edge of clock |
[-rise] | Specifies rising delay |
[-fall] | Specifies falling delay |
[-max] | Specifies maximum delay |
[-min] | Specifies minimum delay |
[-add_delay] | Don't remove existing input delay |
[-network_latency_included] | Specifies network latency of clock already included |
[-source_latency_included] | Specifies source latency of clock already included |
[-quiet] | Ignore command errors |
[-verbose] | Suspend message limits during command execution |
|
Delay value |
|
List of ports |
下面來(lái)詳細(xì)說(shuō)明一下:
-clock:input_delay一般是相對(duì)時(shí)鐘而言的,而且默認(rèn)是相對(duì)于上升沿,我們可以通過(guò)clock_fall參數(shù)來(lái)指定下降沿,這里的時(shí)鐘可以是虛擬時(shí)鐘;
-reference_pin:指定相對(duì)于某個(gè)pin上的時(shí)鐘邊沿,跟-clock的參數(shù)其實(shí)是一個(gè)意思,畢竟時(shí)鐘也是通過(guò)pin輸入進(jìn)來(lái)的;
-clock_fall:指定相對(duì)于時(shí)鐘下降沿
-rise:指定端口的上升轉(zhuǎn)換的輸入延遲
-fall:指定端口的下降沿的輸入延遲
-max:最大延遲
-min:最小延遲,我們做input delay主要就是約束這兩個(gè)參數(shù)
-add_delay:以增量的方式添加延遲,如果不加該參數(shù),默認(rèn)行為是替換現(xiàn)有的延時(shí)
-network_latency_included:表示參考時(shí)鐘的網(wǎng)絡(luò)延遲也包含在延遲中
-source_latency_included:跟上一個(gè)參數(shù)類似的含義,該參數(shù)表示時(shí)鐘的源端延遲包含在延時(shí)中
-quiet:忽略指令的錯(cuò)誤信息,即便指令錯(cuò)了也依然返回TCL_OK
-verbose:命令執(zhí)行期間忽略消息數(shù)量的限制,就是說(shuō)會(huì)返回該指令的所有的message
delay:延遲值
objects:端口列表
Vivado Timing Constraints Wizard
還是一樣通過(guò)Vivado的Timing Constraints Wizard工具來(lái)進(jìn)行約束會(huì)方便很多:
對(duì)應(yīng)的約束如下:
set_output_delay-clock[get_clocks{clk}]-min-add_delay-1.0[get_ports{led[*]}] set_output_delay-clock[get_clocks{clk}]-max-add_delay2.0[get_ports{led[*]}]
可以看出,對(duì)于源同步系統(tǒng),output delay其實(shí)就是下游器件的建立時(shí)間和保持時(shí)間的要求。
Examples
1.輸出數(shù)據(jù)比時(shí)鐘延遲3ns的delay:
create_clock-nameclk-period10[get_portsclk_in] set_output_delay-clockclk3[get_portsDOUT]
2.輸入數(shù)據(jù)相對(duì)于時(shí)鐘的下降沿有2ns的delay:
set_output_delay-clock_fall-clockclk2[get_portsDOUT]
3.設(shè)置延遲5ns,同時(shí)參數(shù)時(shí)鐘的網(wǎng)絡(luò)延遲也包含在內(nèi):
set_output_delay5.0-clockclk-network_latency_included[get_portsDOUT]
4.雙沿時(shí)鐘的約束,對(duì)上升沿和下降沿都需要進(jìn)行約束
create_clock-nameclk_ddr-period6[get_portsDDR_CLK_OUT] set_output_delay-clockclk_ddr-max2.1[get_portsDDR_OUT] set_output_delay-clockclk_ddr-max1.9[get_portsDDR_OUT]-clock_fall-add_delay set_output_delay-clockclk_ddr-min0.9[get_portsDDR_OUT] set_output_delay-clockclk_ddr-min1.1[get_portsDDR_OUT]-clock_fall-add_delay
具體案例
比如某器件手冊(cè)的輸出時(shí)鐘與數(shù)據(jù)的setup和hold要求如下圖:
該時(shí)鐘雙沿采樣,在時(shí)鐘邊沿到來(lái)后,結(jié)合output_delay的最大最小延遲的定義,可以知道:
最大延遲為Tsetup
最小延遲為-Thold
但需要注意的是,輸出延遲的時(shí)鐘位置,一般輸出時(shí)鐘都會(huì)經(jīng)過(guò)一級(jí)BUFG,再作為數(shù)據(jù)的隨路時(shí)鐘輸出,那我們就需要在輸出的pad上先create_generate一個(gè)時(shí)鐘,然后output delay是相對(duì)于該時(shí)鐘進(jìn)行的。
image-20220924171932035
因此output delay的約束如下:
crate_clock-nameclk_in-period10[get_portsclk_p] create_generated_clock-name{tx_clk}-source[get_ports{clk_tx}]-multiply_by1-divide_by1{get_portsclk_p}-master_clock[get_clocks{clk_in}]-add_delay set_output_delay-clock[get_clocksclk_tx]-min-0.8[get_portsDOUT]-add_delay set_output_delay-clock[get_clocksclk_tx]-max1.0[get_portsDOUT]-add_delay set_output_delay-clock[get_clocksclk_tx]-min-0.8[get_portsDOUT]-clock_fall-add_delay set_output_delay-clock[get_clocksclk_tx]-max1.0[get_portsDOUT]-clock_fall-add_delay
因此,只要記?。?/p>
min_delay就是下游器件的 -hold time
max_delay是下游器件的setup time
如果是雙沿的話,就是半個(gè)時(shí)鐘周期,而且還需要對(duì)時(shí)鐘的下降沿進(jìn)行約束
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618420 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7256瀏覽量
91862 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1901瀏覽量
133229 -
Output
+關(guān)注
關(guān)注
0文章
31瀏覽量
10756
原文標(biāo)題:set_output_delay如何約束?
文章出處:【微信號(hào):傅里葉的貓,微信公眾號(hào):傅里葉的貓】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
AFE58JD28 SPI讀取時(shí)候,為什么115寄存器經(jīng)常讀寫錯(cuò)誤?


FPGA靜態(tài)時(shí)序分析——IO口時(shí)序(Input Delay /output Delay)
IC中inout port需要同時(shí)設(shè)置input_delay和output_delay嗎?
How Delay Lines Work

延遲線比較-Delay Lines Comparison

芯片延遲Delay測(cè)試的學(xué)習(xí)課件PDF文件免費(fèi)下載

AD9514: 1.6 GHz Clock Distribution IC, Dividers, Delay Adjust, Three Output Data Sheet

stm32 delay文件總結(jié)

FPGA基礎(chǔ)資源之IOB的應(yīng)用
innovus的incredible delay是什么?
set_output_delay的本質(zhì)是什么?淺談set_ouput_delay時(shí)序

怎樣查看input/output delay是否生效

評(píng)論