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