引起的較高時(shí)鐘頻率仿真失敗原因
通常如果你的設(shè)計(jì)在較低時(shí)鐘頻率時(shí)通過(guò)了仿真,但是在較高時(shí)鐘頻率時(shí)卻失敗了,你的第一個(gè)問(wèn)題應(yīng)該是你的設(shè)計(jì)在某個(gè)較高時(shí)鐘頻率時(shí)是否達(dá)到了時(shí)序約束的要求。
本文引用地址:http://m.butianyuan.cn/article/201808/385552.htm然而這里我們將舉這樣一個(gè)例子,就是對(duì)于某個(gè)較高時(shí)鐘頻率你已經(jīng)檢查了靜態(tài)時(shí)序分析(STA),而且時(shí)序約束也是正確的。
這種情況是什么引起的較高時(shí)鐘頻率仿真失敗呢?
可能的原因就是仿真方式、設(shè)計(jì)本身或者testbench設(shè)置方式有問(wèn)題。
然而在較低時(shí)鐘頻率通過(guò)了仿真這個(gè)事實(shí)就排除了設(shè)計(jì)/testbench/仿真在設(shè)置上的問(wèn)題。
排除了上面兩項(xiàng),下一個(gè)可能就是脈沖拒絕(reject)或者脈沖錯(cuò)誤。
“脈沖拒絕(reject)”和“脈沖錯(cuò)誤”是Verilog仿真中的概念。
這些概念說(shuō)的是脈沖的持續(xù)時(shí)間小于某個(gè)值(pulse_r)就不會(huì)通過(guò)某個(gè)電路元件。
當(dāng)然脈沖持續(xù)時(shí)間大于pulse_r,但是如果小于另一個(gè)值pulse_e盡管會(huì)通過(guò),但是在仿真中顯示的是“x”。
這個(gè)持續(xù)時(shí)間是以通過(guò)某元器件延遲的百分比來(lái)表示的。
比如通過(guò)某元件的延遲是1ns。
0.5ns的脈沖表示為50%的持續(xù)時(shí)間。
現(xiàn)在假設(shè)設(shè)計(jì)采用的頻率是200MHz。
對(duì)應(yīng)的周期就是5ns。
那么一半就是2.5ns。
在仿真中時(shí)鐘每隔2.5ns變化一次,也就是時(shí)鐘脈沖的寬度是2.5ns。
讓我們假設(shè)內(nèi)部時(shí)鐘網(wǎng)絡(luò)某一脈沖寬度是2.8ns(也就是大于2.5ns)。
分析結(jié)果,pulse-duraTIon(脈沖持續(xù)時(shí)間)《100%。
這個(gè)脈沖可能就會(huì)被“拒絕(rejected)”,也就是說(shuō)盡管時(shí)鐘信號(hào)能夠到達(dá)某個(gè)具體網(wǎng)絡(luò)的輸入端,但是卻不能從這個(gè)網(wǎng)絡(luò)輸出。
因此盡管STA分析顯示200MHz很合適,但是仿真卻不能通過(guò)。
設(shè)計(jì)其他模塊將不能獲得時(shí)鐘脈沖。
解決這個(gè)仿真問(wèn)題的方法是在仿真設(shè)置中修改脈沖拒絕和錯(cuò)誤(reject/error)限制。
例如在ModelSim中我們可以設(shè)置:
+transport_path_delays +transport_int_delays +pulse_r/0 +pulse_e/0
后續(xù)操作還有:
1.將pulse-rejecTIon限制修改為0。(不會(huì)拒絕任何一個(gè)脈沖)
2.將pulse-error限制修改為0。(脈沖寬度低于某個(gè)值時(shí)不會(huì)顯示輸出為“x”)
同時(shí)要將interconnect延遲模式修改為transport,其實(shí)是修改了脈沖濾波選項(xiàng)。
最后的問(wèn)題是我們做這么多的修改就是為了能通過(guò)仿真測(cè)試嗎?
在真正的硅片中的實(shí)際情況是怎樣的?
在硅片中大部分內(nèi)部互連線在每隔幾皮秒后就會(huì)設(shè)置一個(gè)repeater(中繼器)。
因此幾納秒的脈沖會(huì)順利通過(guò)(合適的延遲),這不會(huì)存在問(wèn)題。
具體出現(xiàn)問(wèn)題的情形可能是這樣的:
1.頻率增加(脈沖寬度更小了)
2.器件尺寸增加(某個(gè)路徑的內(nèi)部延遲可能變大了,導(dǎo)致內(nèi)部延遲時(shí)間大于脈沖達(dá)到的傳輸時(shí)間)
『本文轉(zhuǎn)載自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系刪除』
評(píng)論