朋友们,有提高DFT coverage的好办法没
autofix 可以吗?
是有点低,最好的办法是修改代码,肯定是设计代码的时候没考虑DFT的功能。
通常test coverage比较低由以下原因造成,当然假定你的设计比较规范:
1。Memory比较多, 而且没有做bypass logic
2. IP比较多,也没有做bypass logic
3.pad controller有很多分支,在测试模式下无法全测到
小编说代码没法改,估计是主体逻辑设计没法改,建议把memory的bypass logic加上,增加几个点还是可能的。
谢谢啊。你说的3点全中。呵呵,不过memory有bist控制模块,还有不少fifo...另外bypass logic 没做过,能给个实例吗,多谢
bypass logic具体我也没有做过,想了解了解!
我理解memory的bypass logic就是一套用于测试的总线,当选中的时候,可以通过
这套总线对memory进行读写的测试?
那不就是BIST模块吗,这个一般来说对于MEMORY是必须的
学习学习了
bypass 顧名思義就是把 input bypass 到 output 阿,
這樣做可以增加 observability and controlabilty 。
只要可以 control input pattern 和 觀察結果就是可以測。
针对pll, adc, memory这些模块,scan-insertion的时候通常视为black-box, 里面的逻辑是没法测的,这些block的端口以及相关逻辑都没法测。
所谓bypass logic,就是把这些black-box的输入和输出在scan mode下关联起来,做法如下:
1。把所有的输组合成一个向量invector
2。把invector每N个bit一组,异或之后用时钟打一拍,这样得到一个invector_d的向量,
3。假定你的输出为DOUT, 写成 assign DOUT = scan ? { invector_d} : DOUT_org;
其中大括号里面需要把invector_d复制,使得和DOUT_org宽度匹配
再声明一点,在atpg的时候,如果能考虑写memory aptg model, bypass logic也可以不加,不过我做过的项目都加了。当然也用了memory atpg model.
谢了啊
学习一下
