<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA實(shí)戰(zhàn)開(kāi)發(fā)技巧(5)

          FPGA實(shí)戰(zhàn)開(kāi)發(fā)技巧(5)

          作者: 時(shí)間:2017-10-13 來(lái)源:網(wǎng)絡(luò) 收藏

          一般來(lái)講,添加約束的原則為先附加全局約束,再補(bǔ)充局部約束,而且局部約束比較寬松。其目的是在可能的地方盡量放松約束,提高布線(xiàn)成功概率,減少I(mǎi)SE 布局布線(xiàn)時(shí)間。典型的全局約束包括和偏移約束。在添加全局時(shí)序約束時(shí),需要根據(jù)時(shí)鐘頻率劃分不同的時(shí)鐘域,添加各自的;然后對(duì)輸入輸出端口信號(hào)添加偏移約束,對(duì)片內(nèi)邏輯添加附加約束。

          本文引用地址:http://www.ex-cimer.com/article/201710/365617.htm

          1.

          周期約束是附加在時(shí)鐘網(wǎng)路上的基本時(shí)序約束,以保證時(shí)鐘區(qū)域內(nèi)所有同步組件的時(shí)序滿(mǎn)足要求。在分析時(shí)序時(shí),周期約束能自動(dòng)處理寄存器時(shí)鐘端的反相問(wèn)題,如果相鄰的同步元件時(shí)鐘相位相反,則其延遲會(huì)被自動(dòng)限制為周期約束值的一半,這其實(shí)相當(dāng)于降低了時(shí)鐘周期約束的數(shù)值,所以在實(shí)際中一般不要同時(shí)使用時(shí)鐘信號(hào)的上升沿和下降沿。

          硬件設(shè)計(jì)電路所能工作的最高頻率取決于芯片內(nèi)部元件本身固有的建立保持時(shí)間,以及同步元件之間的邏輯和布線(xiàn)延遲。所以電路最高頻率由代碼和芯片兩部分共同決定,相同的程序,在速度等級(jí)高的芯片上能達(dá)到更高的最高工作頻率;同樣,在同一芯片內(nèi),經(jīng)過(guò)速度優(yōu)化的代碼具有更高的工作頻率,在實(shí)際中往往取二者的平衡。

          在添加時(shí)鐘周期之前,需要對(duì)電路的期望時(shí)鐘周期有一個(gè)合理的估計(jì),這樣才不會(huì)附加過(guò)松或過(guò)緊的周期約束,過(guò)松的約束不能達(dá)到性能要求,過(guò)緊的約束會(huì)增加布局布線(xiàn)的難度,實(shí)現(xiàn)的結(jié)果也不一定理想。常用的工程策略是:附加的時(shí)鐘周期約束的時(shí)長(zhǎng)為期望值的90%,即約束的最高頻率是實(shí)際工作頻率的110% 左右。

          附加時(shí)鐘周期約束的方法有兩個(gè):一是簡(jiǎn)易方法,二是推薦方法。簡(jiǎn)易方式是直接將周期約束附加到寄存器時(shí)鐘網(wǎng)線(xiàn)上,其語(yǔ)法如下所示:

          [ 約束信號(hào)] PERIOD = { 周期長(zhǎng)度} {HIGH | LOW} [ 脈沖持續(xù)時(shí)間];其中,[] 內(nèi)的內(nèi)容為可選項(xiàng),{} 中的內(nèi)容為必選項(xiàng),“|”表示選擇項(xiàng)。[ 約束信號(hào)] 可為“Net net_name”或“TIMEGRP group_name”,前者表示周期約束作用到線(xiàn)網(wǎng)所驅(qū)動(dòng)的同步元件上,后者表示約束到TIMEGRP所定義的信號(hào)分組上( 如觸發(fā)器、鎖存器以及RAM 等)。{ 周期長(zhǎng)度} 為要求的時(shí)鐘周期,可選用ms、s、ns以及ps 等單位,默認(rèn)值為ns,對(duì)單位不區(qū)分大小寫(xiě)。{HIGH | LOW} 用于指定周期內(nèi)第一個(gè)脈沖是高電平還是低電平。[ 脈沖持續(xù)時(shí)間] 用于指定第一個(gè)脈沖的持續(xù)時(shí)間,可選用ms、s、ns 以及ps 等單位,默認(rèn)值為ns,如果缺省該項(xiàng),則默認(rèn)為50% 的占空比。如語(yǔ)句:

          Net“ clk_100MHz” period = 10ns High 5ns;

          指定了信號(hào)clk_100MHz 的周期為10ns,高電平持續(xù)的時(shí)間為5ns,該約束將被添加到信號(hào)clk_100MHz所驅(qū)動(dòng)的元件上。

          推薦方法常用于約束具有復(fù)雜派生關(guān)系的時(shí)鐘網(wǎng)絡(luò),其基本語(yǔ)法為:

          TIMESPEC“ TS_idenTIfier” = PERIOD“ TNM_reference” {周期長(zhǎng)度}

          {HIGH | LOW} [ 脈沖持續(xù)時(shí)間];

          其中,TIMESPEC 是一個(gè)基本時(shí)序相關(guān)約束,用于標(biāo)志時(shí)序規(guī)范。“TS_identifier”由關(guān)鍵字TS 和用戶(hù)定義的identifier 表示,二者共同構(gòu)成一種時(shí)序規(guī)范,稱(chēng)為T(mén)S 屬性定義,可在約束文件中任意引用,大大地豐富了派生時(shí)鐘的定義。在使用時(shí),首先要定義時(shí)鐘分組,然后再添加相應(yīng)的約束,如:

          NET“ clk_50MHz” =“ syn_clk”;

          TIMESPECT“ TS_syn_clk” = PERIOD“ syn_clk” 20 HIGN 10;

          TIMESPEC 利用識(shí)別符定義派生時(shí)鐘的語(yǔ)法為:

          TIMESPEC“ TS_identifier2” = PERIOD“ timegroup_name” “ TS_identifier1”

          [* | /] 倍數(shù)因子 [+| -] phasevalue [ 單位]

          其中,TS_identifier2 是要派生定義的時(shí)鐘,TS_identifier1 為已定義的時(shí)鐘,“倍數(shù)因子”用于給出二者周期的倍數(shù)關(guān)系,phasevalue 給出二者之間的相位關(guān)系。如:

          定義系統(tǒng)時(shí)鐘clk_syn :

          TIMESPEC“ clk_syn” = PERIOD“ clk” 5ns;

          下面給出其反相時(shí)鐘clk_syn_180 以及2 分頻時(shí)鐘clk_syn_half :

          TIMESPEC“ clk_syn_180” = PERIOD“ clk_180” clk_syn PHASE + 2.5ns;

          TIMESPEC“ clk_syn_180” = PERIOD“ clk_half” clk_syn / 2;

          2.偏移約束

          偏移約束也是一類(lèi)基本時(shí)序約束,規(guī)定了外部時(shí)鐘和數(shù)據(jù)輸入輸出引腳之間的相對(duì)時(shí)序關(guān)系,只能用于端口信號(hào),不能應(yīng)用于內(nèi)部信號(hào),包括OFFSET_IN_BEFORE,OFFSET_IN_AFTER,OFFSET_OUT_BEFORE,OFFSET_OUT_ AFTER 等4 類(lèi)基本約束。偏移約束的基本語(yǔ)法為:

          OFFSET = [IN | OUT]“ offset_time” [units] {BEFORE | AFTER}“ clk_name”

          [TIMEGRP“ group_name”];

          其中[IN | OUT] 說(shuō)明約束的是輸入還是輸出。“offset_time”為數(shù)據(jù)和有效時(shí)鐘沿之間的時(shí)間差,{BEFORE| AFTER} 表明該時(shí)間差是在有效時(shí)鐘之前還是之后,“clk_name”為有效時(shí)鐘的名字,[TIMEGRP “group_name”] 是用戶(hù)添加的分組信號(hào),在缺省時(shí),默認(rèn)為時(shí)鐘clk_name 所驅(qū)動(dòng)的所有觸發(fā)器。偏移約束通知布局布線(xiàn)器輸入數(shù)據(jù)的到達(dá)時(shí)刻,從而可準(zhǔn)確調(diào)整布局布線(xiàn)的過(guò)程,使約束信號(hào)建立時(shí)間滿(mǎn)足要求。

          1)“OFFSET IN”偏移約束

          “OFFSET IN ”偏移約束是輸入偏移約束,有OFFSET_IN_AFTER 和OFFSET_IN_BEFORE 兩種,前者定義了輸入數(shù)據(jù)在有效時(shí)鐘到達(dá)多長(zhǎng)時(shí)間后可以到達(dá)芯片的輸入管腳,這樣可以得到芯片內(nèi)部的延遲上限,從而對(duì)那些與輸入引腳相連的組合邏輯進(jìn)行約束;后者定義數(shù)據(jù)比相應(yīng)的有效時(shí)鐘沿提前多少時(shí)間到來(lái),是與其相連的組合邏輯的最大延時(shí),否則在時(shí)鐘沿到來(lái)時(shí),數(shù)據(jù)不穩(wěn)定,會(huì)發(fā)生采樣錯(cuò)誤。輸入偏移的時(shí)序關(guān)系如圖5-10所示。

          圖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 所示。

          圖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 外,所有的 內(nèi)部元件都可以用TNM 來(lái)命名,其語(yǔ)法規(guī)則為:

          {NET|INST|PIN}“ ob_name” TNM =“ New_name”;

          其中“ob_name”為NET、INST 以及PIN 的名稱(chēng),New_name 為分組的名稱(chēng)。例如:

          INST ff1 TNM = MY_FF1;
          NIST ff2 TNM = MY_FF1;

          將實(shí)例ff1 與ff2 添加到新分組MY_FF1 中。

          此外,TNM 語(yǔ)法也支持通配符“?”和“*”,提高了在大規(guī)模設(shè)計(jì)中添加分組約束的效率。

          當(dāng)TNM 約束附加在線(xiàn)網(wǎng)上時(shí),則該路徑上所有的同步元件都會(huì)被添加到分組中,但不會(huì)穿過(guò)IBUFG 組件;

          當(dāng)TNM 約束附加到宏或原語(yǔ)的管腳上,則被該引腳驅(qū)動(dòng)的所有同步元件會(huì)被添加到新分組中;當(dāng)TNM 約束附加到原語(yǔ)或宏上,則將原語(yǔ)或宏添加到新的分組中。

          TNM_NET 約束專(zhuān)門(mén)用來(lái)完成網(wǎng)線(xiàn)的分組,與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)線(xiàn)上,則該網(wǎng)線(xiàn)的驅(qū)動(dòng)源為同步點(diǎn);附加在同步元件的輸出管腳上,則同步元件中驅(qū)動(dòng)該管腳的源為同步點(diǎn);附加在同步元件上,則輸出管腳為同步點(diǎn);附加在同步元件的輸入管腳上,則該引腳被定義成同步點(diǎn)。

          4)TPTHRU 約束

          TPTHRU 用于定義一個(gè)或一組路徑上的關(guān)鍵點(diǎn),可使用戶(hù)定義出任意期望的路徑。其相應(yīng)的語(yǔ)法為:

          {NET|INST|PIN}“ ob_name” TPTHRU =“ New_name”;

          例如,在圖5-12 所示場(chǎng)景中,從A1 到A2 有兩條路徑,其中邏輯1 的延遲很大,需要提取出來(lái)完成特定的約束:

          圖5-12 TPTHRU約束示例場(chǎng)景

          INST“ A1” TNM =“ S”;
          INST“ A2” TNM =“ E”;
          NET“ A1toA2_1” TPTHRU =“ M”;
          TIMESPEC“ SME” = FROM“ S” THRU“ M” TO“ B” 10;

          其中第三句指令利用TPTHRU 定義了中間點(diǎn)“M”,然后第4 句在此基礎(chǔ)上定義了通過(guò)M 點(diǎn)的整條路徑,從兩條平行的路徑中挑出了期望路徑。

          4.局部約束

          局部約束包括FROM_TO 約束、最大延時(shí)約束、最大偏移約束、虛假路徑、系統(tǒng)時(shí)鐘抖動(dòng)約束、多周期路徑和多時(shí)鐘域約束等。在實(shí)際開(kāi)發(fā)中,正如本章前沿所述,時(shí)序是設(shè)計(jì)出來(lái),而不是靠約束自動(dòng)得到的,因此這里不再對(duì)局部約束作過(guò)多討論。



          關(guān)鍵詞: FPGA 周期約束

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();