接著上文,MCU芯片設(shè)計(jì)了mbist、scan chain之后,功能仿真失敗?
有同學(xué)問(wèn),假設(shè)我們只是force ilm_sram的時(shí)鐘使之偏斜可以不?答:仿真cpu必掛死,dlm也會(huì)有問(wèn)題的,不信證明給你看。
定位到CPU指令預(yù)測(cè)跳轉(zhuǎn),該預(yù)測(cè)為跳轉(zhuǎn)的指令進(jìn)入到執(zhí)行階段時(shí)候,需要根據(jù)操作數(shù)據(jù)a、b是否相等來(lái)決定是否真正跳轉(zhuǎn),若預(yù)測(cè)錯(cuò)誤即不跳轉(zhuǎn)則flush pipieline,重新取跳轉(zhuǎn)地址的指令。跳轉(zhuǎn)則繼續(xù)commit。
但是操作數(shù)a從cpu regfile取出來(lái)是x態(tài),追蹤發(fā)現(xiàn)操作數(shù)a是長(zhǎng)指令回寫到regfile的,是lsu長(zhǎng)指令。
繼續(xù)追蹤到dlm_sram輸出x態(tài),顯然dlm_sram也需要force一下時(shí)鐘。又有同學(xué)問(wèn),和ilm_sram一起簡(jiǎn)單粗暴force為同一個(gè)時(shí)鐘可以不?來(lái)吧,這樣就又有新問(wèn)題了。
?
發(fā)現(xiàn)dlm_sram想把ffc ffd ffe三地址寫0,fff想寫0x8000, 卻只有ffc ffd寫入0,ffe fff皆寫失敗,因?yàn)闀r(shí)鐘被force偏離了dlm_sram的要求,盡管滿足了ilm_sram。為什么不滿足dlm sram?因?yàn)楦鱾€(gè)sram的控制信號(hào)延時(shí)也不一樣啊。
因此,下圖看到sram讀出ffc的值0,其他讀出來(lái)都是x,導(dǎo)致pc值變成x態(tài),取指令失敗,cpu掛起。
因此,ilm sram和dlm sram被force為統(tǒng)一時(shí)鐘后,也可能錯(cuò)誤的,因?yàn)閒orce的時(shí)鐘滿足了ilm sram的偏斜,卻沒(méi)能滿足dlm sram的傾斜,因?yàn)閏s/we等信號(hào)延時(shí)也不一樣的。
如下圖,黃線是ilm_sram,行為ok,紅線是dlm_sram,行為fail。
實(shí)際上,解決辦法不是force,我們應(yīng)該刪除force語(yǔ)句,具體方法參見(jiàn)知識(shí)星球。???????????
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
453文章
50396瀏覽量
421788 -
mcu
+關(guān)注
關(guān)注
146文章
16987瀏覽量
350301 -
cpu
+關(guān)注
關(guān)注
68文章
10825瀏覽量
211140 -
仿真
+關(guān)注
關(guān)注
50文章
4041瀏覽量
133413 -
指令
+關(guān)注
關(guān)注
1文章
606瀏覽量
35650
原文標(biāo)題:MCU芯片設(shè)計(jì)了mbist、scan chain之后,功能仿真失敗(二)
文章出處:【微信號(hào):全棧芯片工程師,微信公眾號(hào):全棧芯片工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論