接著上文,MCU芯片設計了mbist、scan chain之后,功能仿真失敗?
有同學問,假設我們只是force ilm_sram的時鐘使之偏斜可以不?答:仿真cpu必掛死,dlm也會有問題的,不信證明給你看。
定位到CPU指令預測跳轉,該預測為跳轉的指令進入到執行階段時候,需要根據操作數據a、b是否相等來決定是否真正跳轉,若預測錯誤即不跳轉則flush pipieline,重新取跳轉地址的指令。跳轉則繼續commit。
但是操作數a從cpu regfile取出來是x態,追蹤發現操作數a是長指令回寫到regfile的,是lsu長指令。
繼續追蹤到dlm_sram輸出x態,顯然dlm_sram也需要force一下時鐘。又有同學問,和ilm_sram一起簡單粗暴force為同一個時鐘可以不?來吧,這樣就又有新問題了。
?
發現dlm_sram想把ffc ffd ffe三地址寫0,fff想寫0x8000, 卻只有ffc ffd寫入0,ffe fff皆寫失敗,因為時鐘被force偏離了dlm_sram的要求,盡管滿足了ilm_sram。為什么不滿足dlm sram?因為各個sram的控制信號延時也不一樣啊。
因此,下圖看到sram讀出ffc的值0,其他讀出來都是x,導致pc值變成x態,取指令失敗,cpu掛起。
因此,ilm sram和dlm sram被force為統一時鐘后,也可能錯誤的,因為force的時鐘滿足了ilm sram的偏斜,卻沒能滿足dlm sram的傾斜,因為cs/we等信號延時也不一樣的。
如下圖,黃線是ilm_sram,行為ok,紅線是dlm_sram,行為fail。
實際上,解決辦法不是force,我們應該刪除force語句,具體方法參見知識星球。???????????
審核編輯:湯梓紅
-
芯片
+關注
關注
455文章
50851瀏覽量
423903 -
mcu
+關注
關注
146文章
17162瀏覽量
351309 -
cpu
+關注
關注
68文章
10870瀏覽量
211874 -
仿真
+關注
關注
50文章
4087瀏覽量
133644 -
指令
+關注
關注
1文章
607瀏覽量
35727
原文標題:MCU芯片設計了mbist、scan chain之后,功能仿真失敗(二)
文章出處:【微信號:全棧芯片工程師,微信公眾號:全棧芯片工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論