MCU芯片设计了mbist、scan chain之后,功能仿真失败?

描述

接着上文,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语句,具体方法参见知识星球。‍‍‍‍‍‍‍‍‍‍‍

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分