DFT DRC DFT_C6 DFT_C9 S rule 的解法笔记

tessent dft run 过程中会报告DFT_C6 和 DFT_C9 的error 类似

DFT_C6

意思是说你的FF/CK 是一个定值,不可控。
这种情况可能是designer 电路在这个项目中不用,但是又不想删除所以保留下来。对于dft来说有两种解法
method1: bypass 一条testclock 接到上面来让它可控。(这个其实能提高coverage但是这个不用的ff个人感觉dft测不测都无所谓)
method2: 直接用add_nonscan_instance 来让它不上chain

DFT_C9
类似这样


意思是复位或者ck端往前trace时候发现是由 ff/q 驱动的,这样不可控。

解法,给它bypass一下,跟DFT_C6 method1 一样。

如何bypass
open_visulizer 打开tessent gui (貌似只能setup, analysis 打开,insert好像不行)

然后打开search


把绿色这个驱动的instance贴到search里面然后schematic 显示

然后点pin trace driver trace load 。找到hier pin。

然后下一步就是用命令做一个我黑色线画的事情用mux做一个bypass

用intercept_connect 来做。 然后select就是你的dft enable信号如果select 1 走 input2 这一路这样就bypass了

补充,
C6 drc 描述的是ff的CK 不可控。
C9 描述的是ff的reset端不可控。

对于C6这种CK不可控的情况在用intercept_connect 的时候一定要用-leaf_instance_prefix 来指定你创建mux的instance 前缀
image

因为这些CK 可控后,需要在前面垫occ 来在ATPG 的情况下能够进行 clock select 和 clock chopping 。
来进行shift capture .

垫occ的时候会在occ specify 里面写入

让occ在前面有occ_node的instance mux/Z 后面垫occ

有的时候C6 时候不需要垫occ因为有时候你bypass的那个clock network 前面就有occ 所以不需要垫。这个得具体问题具体分析

关于S rule . S rule 得处于set_context dft -scan 用 check_design_rule 可以报告出来。
类似

open_visualizer

可以看到sel 没有接用命令接上就解了

关于S2 可能是你的ff是用来分频的div ff 所以本来就不用上chain。所以用add_nonscan -instance 应该就能解掉。

1 个赞

老师好,请问关于ATPG log里报的 C6的DRC warning,这类问题怎么去解决或者避免呢?warning 信息为"clock may capture data affected by itself",

我记不清了,一般看tessent ug 是很专业的说明的,然后再针对具体问题具体分析。我印象里是意思是那种有clock date path (STA 里统称对于clock接到ff/D上的电路结构 ) 的电路会导致C6,就是你的clock toggle 会直接导致flipflop capture data toggle。 我理解要么不理它或者通过给input constraint定值来规避掉。 感觉也不能砸,顶多覆盖率下降么。 当然我dft 并不是很专业,这个你可以再研究研究,上面只是我个人看法。