版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
引言
本章博客主要介绍DFT的DRC相关的知识,本博客知识针对本人的理解水平所记录的笔记,对于本人的水平都觉得很简单的东西,或者说以本人的水平完全不能理解的,就没有记录。
DRC
典型的DFT串Scan的的Flow如下:
其中,我们可以看到DRC其实做了两次,一次是Pre- DFT的时候做,一次是post-DFT的时候做
可以看出做DFT DRC可以有三个阶段,一个是RTL阶段,一个是Pre-DFT阶段(此时所有的FF已经更换成了scan-FF),还有一个阶段是post-DFT阶段(已经串好了scan)
如上图所示,是在RTL阶段就诊断出了D1错误,也就是时钟不可控制,此时,可以通过增加一个mux,而不影响电路的实际功能。
在执行综合的时候compile -scan时候,需要执行
set test _degault_scan_style_multiplexed_flip_flop
这样才能保证在执行compile -scan的时候全部FF选择scan FF
如上图所示,如果是shift regist 类型的电路,此时可以只添加一个mux即可,这样可以节约面积和时间。另外,如果是在compile- ultral模式的话,能自动识别到这种类型的电路结构。当然你也可以关闭这样的功能,用下面的命令。
对于那种有SO端的cell,可以不通过Q端来连接,从而减小Q端的负载。
首先,得到scan FF之后,需要编译,采用compile -scan 然后进行创建测试协议,然后进行串scan 做make insertion, 这个时候由于可能会增加了mux等,需要再编译一次,并且后面增加参数 -incremental 告诉工具是在已经串好的scan上面做的编译。
三种状态,第一种是没有替换成scan FF, 第二种属于已经替换成了scan FF, 第三种代表已经串好了 scan FF
上图代表在做scan-shift的时候可能会遇到的问题,因为我们做scan,前提条件是要保证
D1代表的是pre DFT时候的clock不可控
D2代表的是pre DFT时候的set不可控(异步时序)
D3代表的是pre DFT时候的reset不可控(异步时序)
对于如上图所示的们门控型的DRC。通过增加两个或门,保证再scan_mode下一定为1,从而一定会通过时钟,而不影响function mode下面的功能
如上图所示,对于分频电路,由于在串scan的时候,会把分频电路里面的clock divider也串起来,因此,需要增加一个mux,但是这样同时也增加了skew,导致hold violation。
常见的violation如下图:
官方资料:介绍了所有的 PRE DFT DRC
DFT Compiler RTL Test Design Rule Checking User Guide.pdf
DRC的检查是有限的,不要盲目的依赖DRC tool
首先他们不会把门级延迟和net延迟考虑进去
他们没有意识到时钟树的延迟的skew,静态时序分析需要在测试模式和功能模式下都要满足,所以需要在TetraMax上面跑仿真。
如上图所示,如果在设计里面有一些ip,读的是他的lib,但是并没有描述他的function,所以可以将其读作black box
加入Lockup latch之后的电路图
CLK1低电平的时候,Lockup Latch是transparent,CLK1高电平的时候Lockup Latch一直保持上一拍的数据,这样即使CLK2有延迟,只要不超过CLK1高电平持续时间,就能保证hold timing没有问题。
上两图片转自:
https://blog.csdn.net/NBA_kobe_24/article/details/105990121
推荐文章:
https://blog.csdn.net/NBA_kobe_24/article/details/105990121
https://xw.qq.com/cmsid/20180606A1JYAJ00?f=newdc
上图是clock off,也就是时钟端口关闭时候的仿真值
pin data的类型如上图所示。
如上图所示横杠前面的数据X 代表clock off的值,横杠后面的数据代表clock on的值
clock off的话就只有一个值
42:59有介绍 06 DFT DRC
下面介绍了spf文件
https://wenku.baidu.com/view/d6882120effdc8d376eeaeaad1f34693daef1093.html
https://blog.csdn.net/qq_42183548/article/details/80274479