有人希望能談?wù)勗谧?a target="_blank">FPGA設(shè)計(jì)的時(shí)候,如何理解和使用過(guò)約束。我就以個(gè)人的經(jīng)驗(yàn)談?wù)劊?/p>
什么是過(guò)約束;
為什么會(huì)使用過(guò)約束;
過(guò)約束的優(yōu)點(diǎn)和缺點(diǎn)是什么;
如何使用過(guò)約束使自己的設(shè)計(jì)更為健壯。
什么是過(guò)約束(overconstraint)
所謂過(guò)約束,就是給目標(biāo)時(shí)鐘一個(gè)超過(guò)其設(shè)定運(yùn)行頻率的約束。比如實(shí)際運(yùn)行的時(shí)鐘頻率是100MHz,我們?cè)诮o這個(gè)時(shí)鐘添加約束的時(shí)候,要求它能運(yùn)行在120MHz。
為什么會(huì)使用過(guò)約束
通常在兩種情況下,我們可能會(huì)使用過(guò)約束。
第一種情況,F(xiàn)PGA的時(shí)序報(bào)告不準(zhǔn)確,為了確保邏輯的實(shí)際運(yùn)行頻率能滿足要求,做過(guò)約束來(lái)保留設(shè)計(jì)余量。
FPGA的時(shí)序報(bào)告是基于FPGA的時(shí)序模型計(jì)算出來(lái)的,時(shí)序模型來(lái)源于實(shí)驗(yàn)室的測(cè)試和對(duì)生產(chǎn)過(guò)程的嚴(yán)格控制,是要充分考慮PVT(Process,Voltage,Temperature)的影響計(jì)算出來(lái)的。對(duì)比較成熟的FPGA廠家來(lái)說(shuō),研發(fā),生產(chǎn),測(cè)試都有標(biāo)準(zhǔn)流程控制,這一部分的數(shù)據(jù)還是比較可靠的。如果是新的廠家,大家可能要做好時(shí)序模型不準(zhǔn)確的心理準(zhǔn)備。在工藝不變的情況下,信號(hào)的傳輸,翻轉(zhuǎn)速率隨電壓,溫度的變化而變化。一般來(lái)說(shuō),溫度越低,電壓越高,信號(hào)的傳輸,翻轉(zhuǎn)越快,反之越慢。而FPGA的設(shè)計(jì)軟件在做STA的時(shí)候,往往是根據(jù)最差的工作條件下的(Worst Case)給出的。所以我們會(huì)看到這樣的現(xiàn)象,時(shí)序報(bào)告顯示的時(shí)序是不滿足設(shè)計(jì)要求的,但邏輯運(yùn)行到FPGA上功能又是正常的。這是因?yàn)镕PGA的實(shí)際運(yùn)行條件要比Worst Case好,實(shí)際的時(shí)序也優(yōu)于報(bào)告的結(jié)果。如果是這種情況,可以不考慮使用過(guò)約束。
第二種情況,對(duì)某些關(guān)鍵的時(shí)鐘域,時(shí)序不太容易滿足,施加一個(gè)更高的時(shí)鐘約束,以期望軟件能跑出一個(gè)滿意的結(jié)果。如果是這種情況,需要注意的是EDA軟件在做布局布線的時(shí)候,會(huì)根據(jù)邏輯功能和時(shí)鐘頻率分配布局布線資源。過(guò)約束加的不合理,會(huì)造成非關(guān)鍵路徑占用有限的布局布線資源,反而會(huì)使布局布線的結(jié)果更差。所以在做過(guò)約束的時(shí)候,要根據(jù)你的設(shè)計(jì)合理設(shè)置,不能簡(jiǎn)單的把所有時(shí)鐘都做過(guò)約束。
過(guò)約束的優(yōu)點(diǎn)和缺點(diǎn):
過(guò)約束的優(yōu)點(diǎn)顯而易見(jiàn),會(huì)讓的設(shè)計(jì)運(yùn)行的余量更大。缺點(diǎn)除了我們上面討論的,如果在你的設(shè)計(jì)里面有跨時(shí)鐘域的信號(hào)傳遞,而你沒(méi)有對(duì)跨時(shí)鐘域的路徑做約束,軟件在分析跨時(shí)鐘域的delay的時(shí)候,由于變成過(guò)約束后,源時(shí)鐘和目的時(shí)鐘的頻率相關(guān)性變化了,這部分的delay約束就變成了無(wú)限小,布局布線更困難了。這是我們?cè)谧鲞^(guò)約束設(shè)計(jì)的時(shí)候要特別注意的。
過(guò)約束還有一個(gè)問(wèn)題是,比如你的設(shè)計(jì)頻率是100MHz,添加的約束是120MHz。那么在做STA的時(shí)候,軟件還是按照120MHz來(lái)分析。即使你的布局布線的時(shí)序結(jié)果是119MHz,已經(jīng)滿足設(shè)計(jì)要求,但在時(shí)序報(bào)告上,還會(huì)顯示時(shí)序不滿足。這給我們的時(shí)序分析帶來(lái)一些麻煩。
如何使用過(guò)約束使自己的設(shè)計(jì)更為健壯
在使用過(guò)約束的時(shí)候,一般情況下,以增加20%-30%為宜,太大的余量并沒(méi)有太大的意義。如果該時(shí)鐘有跨時(shí)鐘域的操作,一定要通過(guò)專門的約束(Multicycle或max delay)在明確定義這部分的延時(shí)要求。
在Lattice的設(shè)計(jì)軟件中,為了配合過(guò)約束的使用,增加的一個(gè)PAR_ADJ屬性:
FREQUENCY NET“sys_clk” 100.000000 MHz PAR_ADJ 20.000000 ;
這樣的約束會(huì)告訴軟件,用100+20=120MHz做布局布線的時(shí)候,而用100MHz的約束來(lái)做STA,這樣就不會(huì)發(fā)生我們前面遇到的困擾了。
GUI的界面是這樣的:

原文標(biāo)題:FPGA的過(guò)約束
文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1660文章
22412瀏覽量
636332
原文標(biāo)題:FPGA的過(guò)約束
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Vivado時(shí)序約束中invert參數(shù)的作用和應(yīng)用場(chǎng)景
輸入引腳時(shí)鐘約束_Xilinx FPGA編程技巧-常用時(shí)序約束詳解
精準(zhǔn)計(jì)時(shí)與低功耗的完美融合
開(kāi)源RISC-V處理器(蜂鳥(niǎo)E203)學(xué)習(xí)(二)修改FPGA綜合環(huán)境(移植到自己的Xilinx FPGA板卡)
時(shí)序約束問(wèn)題的解決辦法
關(guān)于綜合保持時(shí)間約束不滿足的問(wèn)題
蜂鳥(niǎo)e203移植fpga上如何修改約束文件
保險(xiǎn)絲 vs. 壓敏電阻:過(guò)流與過(guò)壓保護(hù)選型及應(yīng)用
技術(shù)資訊 I 圖文詳解約束管理器-差分對(duì)規(guī)則約束
PCB Layout 約束管理,助力優(yōu)化設(shè)計(jì)
PCB走線寬度1mm過(guò)1A電流的依據(jù)是什么
FPGA時(shí)序約束之設(shè)置時(shí)鐘組
國(guó)產(chǎn)FPGA往事
一文詳解Vivado時(shí)序約束
如何理解和使用做FPGA設(shè)計(jì)時(shí)的過(guò)約束?
評(píng)論