1. 偏移約束的作用
偏移約束(Offset Constraint)用來(lái)定義一個(gè)外部時(shí)鐘引腳(Pad)和數(shù)據(jù)輸入輸出引腳之間的時(shí)序關(guān)系,這種時(shí)序關(guān)系也被稱為器件上的Pad-to-Setup或Clock-to-Out路徑這些約束對(duì)與外部元器件相連的接口十分重要,在這里,需要解釋兩個(gè)術(shù)語(yǔ):
Pad-to-Setup:也被稱為OFFSET IN BEFORE約束,是用來(lái)保證外部輸入時(shí)鐘和外部輸入數(shù)據(jù)的時(shí)序滿足FPGA內(nèi)部觸發(fā)器的建立時(shí)間要求的如下圖TIN_BEFORE約束使得FPGA在進(jìn)行DATA_IN和CLK_SYS布線時(shí)努力保證DATA_IN相對(duì)于CLK_SYS的延時(shí)小于TIN_BEFORE
Clock-to-Out:也被稱為OFFSET OUT AFTER約束,是用來(lái)滿足下游器件建立保持(setup/hold)要求或輸出時(shí)鐘和數(shù)據(jù)之間時(shí)序要求的
OFFSET IN BEFORE 或OFFSET OUT AFTER約束允許用戶指定外部輸入或輸出引腳相對(duì)于時(shí)鐘邊沿到內(nèi)部數(shù)據(jù)的延時(shí)
1.1輸入偏移約束時(shí)序參考圖
1.2輸出偏移約束時(shí)序參考圖
Xilinx FPGA有三個(gè)層次的約束:
Global OFFSET:為所有輸入或輸出指定相對(duì)某個(gè)特定時(shí)鐘的約束;
Group OFFSET:為一組輸入或者輸出指定相對(duì)驅(qū)動(dòng)他們的時(shí)鐘的約束
Net-Specific OFFSET:為某個(gè)特定的輸入或者輸出指定相對(duì)其驅(qū)動(dòng)時(shí)鐘的約束;
在進(jìn)行約束的詳細(xì)講解之前,必須明確兩個(gè)概念:
建立時(shí)間setup time
指在觸發(fā)器始終上升沿到來(lái)之前,數(shù)據(jù)必須保持穩(wěn)定的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能被打入觸發(fā)器;
保持時(shí)間hold time
指觸發(fā)器的時(shí)鐘上升沿到來(lái)之后數(shù)據(jù)必須穩(wěn)定不變的時(shí)間,如果保持時(shí)間不夠,數(shù)據(jù)不能被打入觸發(fā)器;
1.3建立保持時(shí)間時(shí)序圖
2. OFFSET IN約束
OFFSET IN約束用來(lái)設(shè)定Pad-to-Setup時(shí)序要求OFFSET IN是對(duì)數(shù)據(jù)時(shí)鐘關(guān)系的一種說(shuō)明它當(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ù)從引腳傳播到同步元件并在同步元件建立起來(lái)的所需的時(shí)間比如 “OFFSET = IN 2 ns BEFORE clock_pad”這個(gè)約束,限定數(shù)據(jù)必須在下一個(gè)時(shí)鐘邊沿到來(lái)之前2ns內(nèi)讀取,因此FPGA會(huì)規(guī)劃使得數(shù)據(jù)相對(duì)時(shí)鐘邊沿的超前2ns之內(nèi)
2.1OFFSET 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è)簡(jiǎn)單例子
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.3OFFSET IN的簡(jiǎn)單例子時(shí)序
該約束為:
TIMESPEC TS_clock = PERIOD clock_grp 10 ns HIGH 50%;
OFFSET = IN 3 ns BEFORE clock;
2.4OFFSET 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約束用來(lái)定義clock-to-pad時(shí)序要求OFFSET OUT約束是對(duì)外部clock-to-data的說(shuō)明并且必須考慮clock_delay、clock edge和DLL/DCM時(shí)鐘相位等
3.1. OFFSET OUT AFTER約束
OFFSET OUT AFTER約束定義了數(shù)據(jù)從同步元件傳播到管腳最長(zhǎng)允許時(shí)間可以形象地理解為時(shí)鐘邊沿到達(dá)器件邊界時(shí)數(shù)據(jù)離開器件邊界的時(shí)間“OFFSET = OUT 2 ns AFTER clock_pad”約束意思是從FPGA數(shù)據(jù)端口傳輸?shù)较掠纹骷臄?shù)據(jù)在參考時(shí)鐘2ns之后一定可讀
3.1OFFSET OUT AFTER約束帶校準(zhǔn)功能的電路
下面公式規(guī)定了數(shù)據(jù)時(shí)鐘的這種關(guān)系:
TQ + TClock2Out + TClock 《= Toffset_OUT_AFTER;
OFFSET OUT AFTER約束沿著參考時(shí)鐘路徑和數(shù)據(jù)路徑的最大延時(shí)不超過(guò)偏移值
3.1.1. OFFSET OUT AFTER約束的一個(gè)簡(jiǎn)單例子
同樣的,OFFSET OUT的Slack也定義了輸出約束的松弛時(shí)間:
Slack = (Requirement - (Clock Arrival + Clock Path + Data Path))
3.2OFFSET OUT 約束的簡(jiǎn)單例子
其約束應(yīng)寫為:
TIMESPEC TS_clock = PERIOD clock_grp 10 ns HIGH 50%;
OFFSET = OUT 3 ns AFTER clock;
3.3OFFSET OUT 時(shí)序約束報(bào)告
時(shí)序報(bào)告中Slack=-0.865ns,不滿足時(shí)序約束要求
3.2. OFFSET OUT BEFORE約束
同樣地,OFFSET OUT BEFORE和OFFSET OUT AFTER約束本質(zhì)上沒(méi)有什么不同,只是形式上的不一樣的,其約束效果完全一樣
-
FPGA
+關(guān)注
關(guān)注
1629文章
21738瀏覽量
603461 -
fpga編程
+關(guān)注
關(guān)注
0文章
4瀏覽量
4633
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論