| |
最近的一个项目,scan部分出了些问题,最后才找到,这算是积累了一些经验,在这里总结一下。
首先说一下问题 ,原来的scan仿真平台用的是DPV平台,由于我一开始对这个平台不熟悉,而以前用过Dual pattern flow,所以用了其中的parallel平台进行仿真,问题就出在了我只用了parallel平台进行仿真,而且就我目前所知道的来看这个平台无法仿出一些信息,至于有哪些信息我现在还不能确认,至少是不能仿出load_unload的timing信息吧。总之由于没有用serial进行仿真,导致pattern中的X态没有被发现,直到片子送出去了在后来的仿真过程中才发现这个问题 ,这便产生了很大的隐患,具体的隐患原因在于:
尚未确定这些X pattern是如何产生的,很可能是某些IP产生的,如flash IP,那么就有可能产生的pattern会无意中写入flash而改变其中的内容,我们的flash中有一块区域作为otp而存在,在中测是向其中写入数据,如果scan在otp初始化之后进行,那么就有可能改变其中的数据,这样就会产生不确定的结果。
虽然在ATE机上这些X pattern没有什么影响,ATE机不会对其进行检查,但是在scan设计中还是要避免这些X pattern的出现。
根据这次经验教训,我做了如下总结,希望从流程上来技术性地解决这个问题 。
1._stildpv.v仿真时打印没有错误,这是最基本的,说明dut输出与stil中的pattern一致。
2.浅层次(到core一层)dump波形,要把所有的pattern都跑一遍,用得到的xdump/fsdb中检查没有X pattern。如果有X pattern要找到开始的时间点,在3中进行深入dump。
3.深层次(fsdbdump为0)dump波形,查找到X pattern产生的原因,X pattern在ATE机上不会被检查,只是这样的状态是由于dut内部设计不好引起的,可能有隐患,要确认是否需要解决
4. 如果知识储备够了并且时间允许,最好将Dual pattern flow, unified pattern flow和DPV仿真都走一遍。以最大程度熟悉scan仿真平台,并且要深入了解scan仿真流程,这对于将来上ATE机调试很有用处。