DATA_IN
TIN_AFTER TIN_BEFORE
TP
CLK_SYS
圖5-10 輸入偏移的時(shí)序關(guān)系
例如:
NET“ DATA_IN” OFFSET = IN 10.0 BEFORE“ CLK_50MHz”;
表明在時(shí)鐘信號(hào)CLK_50MHz 上升沿到達(dá)前的10ns 內(nèi),輸入信號(hào)DATA_IN 必須到達(dá)數(shù)據(jù)輸入管腳。
NET“ DATA_IN” OFFSET = IN 10.0 AFTER“ CLK_50MHz”;
表明在時(shí)鐘信號(hào)CLK_50MHz 上升沿到達(dá)后的10ns 內(nèi),輸入信號(hào)DATA_IN 必須到達(dá)數(shù)據(jù)輸入管腳。
2)“OFFSET OUT”偏移約束
“OFFSET OUT”偏移約束是輸出偏移約束,有OFFSET_OUT_AFTER 和OFFSET_OUT_BEFORE 兩種,前者定義了輸出數(shù)據(jù)在有效時(shí)鐘沿之后多長(zhǎng)時(shí)間穩(wěn)定下來(lái),是芯片內(nèi)部輸出延時(shí)的上限;后者定義了在下一個(gè)時(shí)鐘信號(hào)到來(lái)之前多長(zhǎng)時(shí)間必須輸出數(shù)據(jù),是下一級(jí)邏輯建立時(shí)間的上限。輸出偏移的時(shí)序關(guān)系如圖5.3.11 所示。
Q_OUT
TOUT_BEFORE TOUT_AFTER
TP
CLK_SYS
圖5-11 輸出偏移的時(shí)序關(guān)系
例如:
NET“ DATA_OUT” OFFSET = OUT 10.0 BEFORE“ CLK_50MHz”;
表明在時(shí)鐘信號(hào)CLK_50MHz 上升沿到達(dá)前的10ns 內(nèi),輸出信號(hào)DATA_OUT 信號(hào)必須離開(kāi)數(shù)據(jù)輸出管腳。
NET“ DATA_OUT” OFFSET = OUT 10.0 AFTER“ CLK_50MHz”;
表明在時(shí)鐘信號(hào)CLK_50MHz 上升沿到達(dá)后的10ns 內(nèi),輸出信號(hào)DATA_OUT 信號(hào)必須一直保持在數(shù)據(jù)輸
出管腳上。
3.分組約束
分組約束可有效管理大量的觸發(fā)器、寄存器和存儲(chǔ)器單元,將其分為不同的組,每組附加各自的約束,在大型設(shè)計(jì)中有著廣泛的應(yīng)用。
1)TNM/TNM_NET 約束
TNM/TNM_NET 約束用于選出可構(gòu)成一個(gè)分組的元件,并對(duì)其重新命名,然后整體添加約束。除了IBUFG和BUFG 外,所有的FPGA 內(nèi)部元件都可以用TNM 來(lái)命名,其語(yǔ)法規(guī)則為:
{NET|INST|PIN}“ ob_name” TNM =“ New_name”;
其中“ob_name”為NET、INST 以及PIN 的名稱,New_name 為分組的名稱。例如:
48.
FPGA開(kāi)發(fā)全攻略—工程師創(chuàng)新設(shè)計(jì)寶典上冊(cè) 基礎(chǔ)篇
INST ff1 TNM = MY_FF1;
NIST ff2 TNM = MY_FF1;
將實(shí)例ff1 與ff2 添加到新分組MY_FF1 中。
此外,TNM 語(yǔ)法也支持通配符“?”和“*”,提高了在大規(guī)模設(shè)計(jì)中添加分組約束的效率。
當(dāng)TNM 約束附加在線網(wǎng)上時(shí),則該路徑上所有的同步元件都會(huì)被添加到分組中,但不會(huì)穿過(guò)IBUFG 組件;
當(dāng)TNM 約束附加到宏或原語(yǔ)的管腳上,則被該引腳驅(qū)動(dòng)的所有同步元件會(huì)被添加到新分組中;當(dāng)TNM 約束附
加到原語(yǔ)或宏上,則將原語(yǔ)或宏添加到新的分組中。
TNM_NET 約束專門(mén)用來(lái)完成網(wǎng)線的分組,與TNM 不同的是,TNM 可以穿越IBUFG/BUFG。因此,如果把TNM 約束添加到端口上,則只能定義該端口;而要是把TNM_NET 添加到端口上,則可穿越BUFG,受該端口驅(qū)動(dòng)的所有組件都將被添加到分組中。
2)TIMEGRP 約束
TIMEGRP 用于分組合并和拆分,將多個(gè)分組形成一個(gè)新的分組。其合并分組的語(yǔ)法為:
TIMEGRP“ New_group” =“ Old_group1” “ Old_group2” … ;
其中,New_group 為新建的分組,而Old_group1 和Old_group2 以及…為要合并的已有分組。
拆分分組的語(yǔ)法為:
TIMEGRP“ New_group” =“ Old_group1” EXCEPT“ Old_group2”;
其中Old_group2 是Old_group1 的子集,New_group 為Old_group1 中除去Old_group2 之外所有的部分。
3)TPSYNC 約束
TPSYNC 用于將那些不是管腳和同步元件的組件定義成同步元件,以便可以利用任意點(diǎn)來(lái)作為時(shí)序規(guī)范的
終點(diǎn)和起點(diǎn)。其相應(yīng)的語(yǔ)法為:
{NET|INST|PIN}“ ob_name” TPSYNC=“ New_part”;
將TPSYNC 約束附加在網(wǎng)線上,則該網(wǎng)線的驅(qū)動(dòng)源為同步點(diǎn);附加在同步元件的輸出管腳上,則同步元件
中驅(qū)動(dòng)該管腳的源為同步點(diǎn);附加在同步元件上,則輸出管腳為同步點(diǎn);附加在同步元件的輸入管腳上,則該
引腳被定義成同步點(diǎn)。
4)TPTHRU 約束
TPTHRU 用于定義一個(gè)或一組路徑上的關(guān)鍵點(diǎn),可使用戶定義出任意期望的路徑。其相應(yīng)的語(yǔ)法為:
{NET|INST|PIN}“ ob_name” TPTHRU =“ New_name”;
例如,在圖5-12 所示場(chǎng)景中,從A1 到A2 有兩條路徑,其中邏輯1 的延遲很大,需要提取出來(lái)完成特定的約束:
電子發(fā)燒友App


































評(píng)論