很多小伙伴開始學(xué)習(xí)時(shí)序約束的時(shí)候第一個(gè)疑惑就是標(biāo)題,有的人可能會(huì)疑惑很久。不明白時(shí)序約束是什么作用,更不明白怎么用。
FPGA內(nèi)部結(jié)構(gòu)=LUT+觸發(fā)器+走線+嵌入式模塊(RAM,乘法器等)。下圖大致描述了它的抽象結(jié)構(gòu)。
以上公式告訴我們:信號(hào)是通過走線和各個(gè)模塊產(chǎn)生連接。然后信號(hào)通過走線必然有延遲,有人認(rèn)為電信是光速走線延時(shí)應(yīng)該很短,可以忽略(全局時(shí)鐘線的延時(shí)在時(shí)序緊張的情況下是不可忽略的),然而走線延遲可能超過你的想像。
1.電信號(hào)在走線槽里面?zhèn)鞑ゲ⒉皇枪馑?,走線上有分布電感和地平面有分布電容,二者值越大,對(duì)電容充電時(shí)間越長(zhǎng),走線延遲越長(zhǎng),這寫參數(shù)自然由工藝和封裝來決定,和我們?cè)O(shè)計(jì)無關(guān),但是卻對(duì)我們的設(shè)計(jì)方法產(chǎn)生重大影響,傳輸模型如下:
2.除了傳輸線模型的延時(shí)以外,走線本身會(huì)經(jīng)過很多類似路由器的結(jié)構(gòu)去改變走線方向,在資源緊張的情況下可能會(huì)走過多個(gè)路由,這也就是為什么FPGA內(nèi)部走線會(huì)很繞的原因,經(jīng)過多級(jí)路由的走線延時(shí)會(huì)大大增加,在時(shí)序報(bào)告里面也可以看到的走線延遲=傳輸線延遲+路由延遲。
3.如果設(shè)計(jì)里面組合邏輯很多那么信號(hào)就會(huì)經(jīng)過多個(gè)LUT,這也會(huì)產(chǎn)生延遲,在時(shí)序報(bào)告里面可以看見組合邏輯延遲和邏輯級(jí)數(shù)這2個(gè)選項(xiàng)。
綜合以上3點(diǎn),F(xiàn)PGA內(nèi)部延時(shí)不可忽略!并且常常達(dá)到ns級(jí)!。
上圖為實(shí)際生成的數(shù)字電路模型,從中看出
根據(jù)上圖公式,tnet和tlogic一旦增加,最小時(shí)鐘周期就會(huì)增加,也就意味著系統(tǒng)可以跑的最高頻率會(huì)下降。
那么編譯器怎么知道哪個(gè)是你的時(shí)鐘,你的主時(shí)鐘需要跑多少M(fèi)HZ呢?如果編譯器設(shè)計(jì)高了,會(huì)編譯時(shí)間增長(zhǎng)甚至報(bào)錯(cuò),低了會(huì)導(dǎo)致實(shí)際上板產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn),從而導(dǎo)致錯(cuò)誤。所以為了避免以上問題,我們需要高速編譯器這個(gè)時(shí)鐘到底要多快,還有,相位關(guān)系,占空比。這樣編譯器才能根據(jù)我們的需求去對(duì)比延時(shí)所算出來會(huì)不會(huì)競(jìng)爭(zhēng)冒險(xiǎn)。所有的時(shí)序約束都是要告訴編譯器,我的時(shí)鐘和數(shù)據(jù)要滿足怎樣的關(guān)系,然后交給編譯器去計(jì)算最糟糕的情況下能不能滿足條件,還差多少ns就會(huì)不滿足條件。
所以,為了告訴編譯器時(shí)鐘參數(shù)就有了
create_clock -name clk -period 10 [get_ports sysclk],這句xdc命令告訴編譯器,時(shí)鐘clk,從sysclk(get ports 后面攝取的是頂層要分配引腳的物理引腳,get pins后面攝取的是生成的某個(gè)寄存器或者器件的引腳,get nets攝取的是里面生成的某根線)這個(gè)引腳輸入,時(shí)鐘周期是10ns,由于相位和占空比未聲明,所以初相位為0,占空比為50%。如下圖:
如果想調(diào)節(jié)初相位90°和占空比25%:
create_clock -name devclk -period 10 -waveform {2.5 5} [get_ports sysclk]
這里-waveform {2.5 5}代表第一個(gè)跳變沿在第2.5ns處產(chǎn)生,第二個(gè)跳變沿在5ns處產(chǎn)生從而形成下圖的時(shí)鐘,這樣就可以把所有的相位和占空比關(guān)系都描述清除。
編譯器會(huì)根據(jù)時(shí)鐘sysclk的周期和相位,在整個(gè)sysclk時(shí)鐘域,計(jì)算延遲后對(duì)比sysclk和對(duì)應(yīng)寄存器的數(shù)據(jù)端口進(jìn)行對(duì)比,看是否滿會(huì)產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn),不滿足的地方會(huì)報(bào)告出來。
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3626瀏覽量
129772 -
乘法器
+關(guān)注
關(guān)注
8文章
206瀏覽量
37202 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2016瀏覽量
61369 -
LUT
+關(guān)注
關(guān)注
0文章
50瀏覽量
12580 -
FPGA系統(tǒng)
+關(guān)注
關(guān)注
0文章
10瀏覽量
7062
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論