控制/MCU
MCU芯片设计添加了mbist、scan chain之后,仿真失败怎么办?首先diff代码,看代码改动了什么,是否改正确,然后做2-3个formal/lec检查,保证DFT实现过程不改变function 功能。此外还要注意顶层的dft端口控制信号是否在testbench中正确例化等等,比如注意jtag端口可做cpu debug,可做mbist测试,注意tdo输出选择控制。
回到正题,DFT插入后,由于增加了大量的mux来完成时钟、复位可控,导致中端网标中的cell有工艺库文件指定的delay参数,默认是1ns,那么会造成clk delay,比如插入两级mux就会形成2ns延时,而我们的mcu运行时钟是250mhz,时钟周期4ns,sram时钟再取个反,刚好易造成sram timing问题,sram输出x态,cpu取指令失败。
如下,cs/we等sram控制信号刚好和sram的时钟对齐,造成sram model输出x态,cpu去取指令失败,mcu boot失败。
可以先强行force时钟,选一个可以采样cs/we等sram控制信号的时钟给sram,好巧不好,cpu执行了一部分指令,又停止了,继续定位。
查看risc-v汇编指令是否正确读写:
发现程序末尾有x态哦,发现x态,同学们会问,指令为什么会有x态,肯定是bug或timing问题造成的吧,我们接着看:
而上面x态是由于cpu有16位指令,并且程序有跳转,那么为什么cpu执行指令一部分后就停止了呢? 是我把cpu取指令模块改错了?于是开始看cpu代码。。。
实际上x态后程序依然能正确执行,本质上是16位指令及程序调转的原因。接着debug。
接着定位,发现是取指令握手卡住,解决办法?后仿真怎么确保时钟对齐的问题? 答案参见全栈芯片工程师【知识星球】。
欢迎加入【全栈芯片工程师】知识星球,手把手教你设计MCU、图像传感器、ISP图像处理,从算法、前端到后端全流程设计。
实战MCU+ISP图像处理芯片版图
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !