1. 偏移約束的作用
偏移約束(Offset Constraint)用來定義一個(gè)外部時(shí)鐘引腳(Pad)和數(shù)據(jù)輸入輸出引腳之間的時(shí)序關(guān)系,這種時(shí)序關(guān)系也被稱為器件上的Pad-to-Setup或Clock-to-Out路徑。這些約束對與外部元器件相連的接口十分重要,在這里,需要解釋兩個(gè)術(shù)語:
Pad-to-Setup:也被稱為OFFSET IN BEFORE約束,是用來保證外部輸入時(shí)鐘和外部輸入數(shù)據(jù)的時(shí)序滿足FPGA內(nèi)部觸發(fā)器的建立時(shí)間要求的。如下圖TIN_BEFORE約束使得FPGA在進(jìn)行DATA_IN和CLK_SYS布線時(shí)努力保證DATA_IN相對于CLK_SYS的延時(shí)小于TIN_BEFORE。
Clock-to-Out:也被稱為OFFSET OUT AFTER約束,是用來滿足下游器件建立保持(setup/hold)要求或輸出時(shí)鐘和數(shù)據(jù)之間時(shí)序要求的。
OFFSET IN BEFORE 或OFFSET OUT AFTER約束允許用戶指定外部輸入或輸出引腳相對于時(shí)鐘邊沿到內(nèi)部數(shù)據(jù)的延時(shí)。
1?1 輸入偏移約束時(shí)序參考圖
1?2 輸出偏移約束時(shí)序參考圖
Xilinx FPGA有三個(gè)層次的約束:
Global OFFSET:為所有輸入或輸出指定相對某個(gè)特定時(shí)鐘的約束;
Group OFFSET:為一組輸入或者輸出指定相對驅(qū)動(dòng)他們的時(shí)鐘的約束
Net-Specific OFFSET:為某個(gè)特定的輸入或者輸出指定相對其驅(qū)動(dòng)時(shí)鐘的約束;
在進(jìn)行約束的詳細(xì)講解之前,必須明確兩個(gè)概念:
建立時(shí)間setup time
指在觸發(fā)器始終上升沿到來之前,數(shù)據(jù)必須保持穩(wěn)定的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能被打入觸發(fā)器;
保持時(shí)間hold time
指觸發(fā)器的時(shí)鐘上升沿到來之后數(shù)據(jù)必須穩(wěn)定不變的時(shí)間,如果保持時(shí)間不夠,數(shù)據(jù)不能被打入觸發(fā)器;
1?3 建立保持時(shí)間時(shí)序圖
2. OFFSET IN約束
OFFSET IN約束用來設(shè)定Pad-to-Setup時(shí)序要求。OFFSET IN是對數(shù)據(jù)時(shí)鐘關(guān)系的一種說明。它當(dāng)分析建立時(shí)間要求(data_delay+setup-clock_delay-clock_arrival要求滿足約束條件)的時(shí)候,需要考慮時(shí)鐘延時(shí)(clock delay)、時(shí)鐘邊沿(clock edge)、DLL/DCM引入的時(shí)鐘相位。
2.1. OFFSET IN BEFORE 約束
OFFSET IN BEFORE約束限定了數(shù)據(jù)從引腳傳播到同步元件并在同步元件建立起來的所需的時(shí)間。比如 “OFFSET = IN 2 ns BEFORE clock_pad”這個(gè)約束,限定數(shù)據(jù)必須在下一個(gè)時(shí)鐘邊沿到來之前2ns內(nèi)讀取,因此FPGA會(huì)規(guī)劃使得數(shù)據(jù)相對時(shí)鐘邊沿的超前2ns之內(nèi)。
2?1 OFFSET IN BEFORE約束帶校準(zhǔn)功能的電路
上圖FPGA在布線時(shí)會(huì)盡力去滿足如下不等式:
TData + TSetup - TClock 《= Toffset_IN_BEFORE;
2.1.1. VALID約束
OFFSET IN約束往往和VALID約束一起使用。OFFSET IN約束在建立時(shí)間分析中作為建立時(shí)間要求使用,而VALID約束在保持時(shí)間約束中作為保持時(shí)間要求使用。VALID約束指定了輸入數(shù)據(jù)的持續(xù)時(shí)間。在默認(rèn)情況下,F(xiàn)PGA指定VALID和OFFSET的值相等,也即FPGA在默認(rèn)情況下認(rèn)為保持時(shí)間為0。
2?2 帶有VALID約束的輸入偏移約束
2.1.2. OFFSET IN約束的一個(gè)簡單例子
FPGA的分析工具在綜合時(shí)經(jīng)常會(huì)用到一個(gè)詞:Slack,即松弛時(shí)間,當(dāng)Slack》0時(shí),該路徑設(shè)計(jì)滿足時(shí)序要求;當(dāng)Slack《0時(shí),該路徑不滿足時(shí)序要求。
Slack = (Requirement - (Data Path - Clock Path - Clock Arrival))
2?3 OFFSET IN的簡單例子時(shí)序
該約束為:
TIMESPEC TS_clock = PERIOD clock_grp 10 ns HIGH 50%;
OFFSET = IN 3 ns BEFORE clock;
2?4 OFFSET IN約束時(shí)序報(bào)告
從時(shí)序約束報(bào)告的Slack的值可以看出,Data不能被Clock成功打入觸發(fā)器FF0.
2.2. OFFSET IN AFTER約束
OFFSET IN AFTER和OFFSET IN BEFORE在本質(zhì)上是一樣的,只是形式上不一樣,其約束效果是完全一樣的。OFFSET IN AFTER的約束公司如下:
TData + TSetup - TClock 《= TPeriod – Toffset_IN_AFTER;
3. OFFSET OUT約束
OFFSET OUT約束用來定義clock-to-pad時(shí)序要求。OFFSET OUT約束是對外部clock-to-data的說明并且必須考慮clock_delay、clock edge和DLL/DCM時(shí)鐘相位等。
3.1. OFFSET OUT AFTER約束
OFFSET OUT AFTER約束定義了數(shù)據(jù)從同步元件傳播到管腳最長允許時(shí)間。可以形象地理解為時(shí)鐘邊沿到達(dá)器件邊界時(shí)數(shù)據(jù)離開器件邊界的時(shí)間。“OFFSET = OUT 2 ns AFTER clock_pad”約束意思是從FPGA數(shù)據(jù)端口傳輸?shù)较掠纹骷臄?shù)據(jù)在參考時(shí)鐘2ns之后一定可讀。
3?1 OFFSET OUT AFTER約束帶校準(zhǔn)功能的電路
下面公式規(guī)定了數(shù)據(jù)時(shí)鐘的這種關(guān)系:
TQ + TClock2Out + TClock 《= Toffset_OUT_AFTER;
OFFSET OUT AFTER約束沿著參考時(shí)鐘路徑和數(shù)據(jù)路徑的最大延時(shí)不超過偏移值。
3.1.1. OFFSET OUT AFTER約束的一個(gè)簡單例子
同樣的,OFFSET OUT的Slack也定義了輸出約束的松弛時(shí)間:
Slack = (Requirement - (Clock Arrival + Clock Path + Data Path))
3?2 OFFSET OUT 約束的簡單例子
其約束應(yīng)寫為:
TIMESPEC TS_clock = PERIOD clock_grp 10 ns HIGH 50%;
OFFSET = OUT 3 ns AFTER clock;
3?3 OFFSET OUT 時(shí)序約束報(bào)告
時(shí)序報(bào)告中Slack=-0.865ns,不滿足時(shí)序約束要求。
3.2. OFFSET OUT BEFORE約束
同樣地,OFFSET OUT BEFORE和OFFSET OUT AFTER約束本質(zhì)上沒有什么不同,只是形式上的不一樣的,其約束效果完全一樣。
審核編輯 :李倩
-
FPGA
+關(guān)注
關(guān)注
1626文章
21678瀏覽量
602019 -
元器件
+關(guān)注
關(guān)注
112文章
4694瀏覽量
92041 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
1996瀏覽量
61057
原文標(biāo)題:FPGA編程技巧系列之輸入輸出偏移約束詳解
文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論