jake的个人空间 http://blog.eetop.cn/1592 [收藏] [复制] [分享] [RSS]

日志

数字电路DFT

热度 12已有 2280 次阅读2021-1-15 02:44 |系统分类:芯片设计

设计 day1 就应该考虑 DFT 了,尤其是设计时钟模块,复位模块时。

 

数字电路最常用的 DFT 就是加 scan chAIn ATPG 工具产生 scan pattern 可以很高效地判断片子内部是否有缺陷。 测试时间是成本的重要部分。Die ATE 上多花 1ms 的测试时间,都会增加成本。 Scan pattern 因其高效,被视为最经济的 DFT

 

DFT 简而言之就两个词:

-        Controllability 可控性

-        Observability  可观察性

可控性Controllability 主要包括

-        时钟可控。 每一个时钟都应该加上 scan mux。在 ATPG mode 下,scan mux 切换到 scan clock 替换功能时钟 (functional clock) 驱动 flip flop 如果设计中用到 ICG (integrated clock gating) cell ATPG mode ICG 保持“透明” transparent scan clock 要畅通无阻通过 ICG 通常 ICG 会有一个 TE pin,连上 atpg_mode 信号就可以保证每个 scan clock pulse 都通过了。

-        复位可控。 每一个复位都应该加上 scan mux。在 ATPG mode 下,scan mux 切换到 scan reset 替换功能复位。 如果因为pin 紧张,无法提供 scan reset,可以在 ATPG mode 下把复位 tie 1

 

Observability  可观察性

如果电路内部某个 gate stuck at fault,是否都能观察到。 绝大部分 gate 如果有 stuck at fault 都会被 scan chain 捕捉到。输出的 scan pattern 与预期不一致,就说明片子内部有缺陷了。

ATPG 工具报告中的 test coverage可用来评估可观察性好坏。 如果test coverage % 比较低,就要研究如何让内部更多的信号可以被 scan chain 观察到了。 具体要看是哪部分电路覆盖率低,分析是否设计中有错造成部分 flip flop 没有加到 scan chain 里。 有些 gate 是无法完全覆盖的,如 scan mux, scan tie off   

 

提高 test coverage 的常用技巧

ATPG mode 下,把 registered output 反馈 (loop back) 到输入并和输入 mux 一下。 这样在 ATPG mode 下,不可控的输入也变得可控了。 切记:registered output Registered output flop 产生的。 这个 flop 如果在 scan chain 里,那它的值是可以被 scan pattern 决定的,这个也就是 scan pattern controllable 的。如果某个 output 是完全由组合逻辑产生的,那是不能 loop back和输入 mux 的。

 

综合工具插入 scan chain 后通常可以生成 DFT DRC 报告。 要看一下。 如果 DFT DRC 过不了,肯定有什么地方错了。

 

PnR (place & route) 是, 可以做 scan reordering,根据物理位置,优化 scan chain 

 

芯片规模不大,或是百万门级规模但功能单一,完全可以由设计人员自己做 DFT ,不需要专职的 DFT engineer

发表评论 评论 (24 个评论)

回复 andywang3791 2021-2-20 19:33
Hi, Jake, ICG里的TE是否接Scan_enable覆盖率更高一些?
另外design里的sram/flash这些macro在scanmode下如何处理呢?
回复 jake 2021-2-21 00:58
andywang3791: Hi, Jake, ICG里的TE是否接Scan_enable覆盖率更高一些?
另外design里的sram/flash这些macro在scanmode下如何处理呢?
试过用scan_enable驱动ICG TE,覆盖率反而降了。
另一个项目多一个专用的test mode signal驱动ICG TE,覆盖率确实提高了。
回复 jake 2021-2-21 01:03
andywang3791: Hi, Jake, ICG里的TE是否接Scan_enable覆盖率更高一些?
另外design里的sram/flash这些macro在scanmode下如何处理呢?
以前做过的项目 SRAM 的 BIST 是连接在 scan chain 里的。 启动 SRAM BIST,检查 BIST 结果是通过软件读写 BIST 寄存器实现的。
FLASH subsystem 没有接触过,无法给出建议,抱歉。
回复 andywang3791 2021-2-22 09:06
jake: 试过用scan_enable驱动ICG TE,覆盖率反而降了。
另一个项目多一个专用的test mode signal驱动ICG TE,覆盖率确实提高了。 ...
有点疑惑,看到一些资料说接Scan enable覆盖率会高一些,在capture阶段通过ICG的EN端来产生capture的clock,请问您说的test mode signal是否特指scan mode,在soc中通常testmode还包括scan/mbist/boundary scan等模式
回复 andywang3791 2021-2-22 09:07
jake: 以前做过的项目 SRAM 的 BIST 是连接在 scan chain 里的。 启动 SRAM BIST,检查 BIST 结果是通过软件读写 BIST 寄存器实现的。
FLASH subsystem 没有接触过,无 ...
想问下SRAM在scan-chain中,是否要做bypass处理?
回复 jake 2021-2-22 10:25
andywang3791: 有点疑惑,看到一些资料说接Scan enable覆盖率会高一些,在capture阶段通过ICG的EN端来产生capture的clock,请问您说的test mode signal是否特指scan mode,在so ...
SOC DFT 可以多加一个 test mode 信号,dft_icg_en -> ICG TE,这个 dft_icg_en 是 scan_mode 之外的 test mode 信号。 工具在生成 pattern 的时候是可以支持的。
回复 jake 2021-2-22 10:27
andywang3791: 想问下SRAM在scan-chain中,是否要做bypass处理?
SRAM 矩阵不应该在 scan chain 中的。
回复 andywang3791 2021-2-22 11:56
jake: SOC DFT 可以多加一个 test mode 信号,dft_icg_en -> ICG TE,这个 dft_icg_en 是 scan_mode 之外的 test mode 信号。 工具在生成 pattern 的时候是可以支持的 ...
Thanks,Jake,所以需要加一个test mode pin,该信号只用作去连接ICG的TE pin,这个pin在scan mode下需要一直为高吗?这个pin除了连ICG TE,是否还可以有其他用途
回复 jake 2021-2-22 21:55
andywang3791: Thanks,Jake,所以需要加一个test mode pin,该信号只用作去连接ICG的TE pin,这个pin在scan mode下需要一直为高吗?这个pin除了连ICG TE,是否还可以有其他用 ...
是的,多一个 pin,只用于 ICG TE。 这个 pin 的值由 scan pattern 决定。 绝大部分时间是高。 其他 DFT 功能如果需要,可以再加 pin。
回复 andywang3791 2021-2-23 08:58
jake: 是的,多一个 pin,只用于 ICG TE。 这个 pin 的值由 scan pattern 决定。 绝大部分时间是高。 其他 DFT 功能如果需要,可以再加 pin。 ...
有点疑惑,为什么说由scan pattern决定呢?这个pin也是由ATE驱动,那是什么时候驱动为低呢
回复 jake 2021-2-24 00:00
andywang3791: 有点疑惑,为什么说由scan pattern决定呢?这个pin也是由ATE驱动,那是什么时候驱动为低呢
这个 dft_icg_en 和 scan_enable 类似,由 pattern 决定何时为高何时为低。 绝大部分时间 dft_icg_en 应该为高。 为低的时候,根据电路中 ICG EN (functional enable) 是否为高,理论上工具是知道那些 flop 可以 capture 哪些不 capture。 有空我会做个试验,跑一下 Modus。 换工作后以前的设计看不到了。
回复 andywang3791 2021-2-24 15:06
jake: 这个 dft_icg_en 和 scan_enable 类似,由 pattern 决定何时为高何时为低。 绝大部分时间 dft_icg_en 应该为高。 为低的时候,根据电路中 ICG EN (functional en ...
Thanks jake,如果连SE,在scan enable为低时候,同样取决于function enable,听起来这个dft_icg_en确实和scan enable类似,不清楚为什么说用scan enable coverage会低一些
回复 jake 2021-2-24 22:47
andywang3791: Thanks jake,如果连SE,在scan enable为低时候,同样取决于function enable,听起来这个dft_icg_en确实和scan enable类似,不清楚为什么说用scan enable covera ...
我的理解是 scan_enable 决定 shift 还是 capture,如果 scan_enable 复用控制 ICG TE,会和 capture 有冲突,造成 coverage 降低
回复 andywang3791 2021-3-20 22:06
Hi, Jake

请教两个问题关于scan下的TestMode定义:
1. set_DFT_signal -type TestMode,这里的TestMode特指scan mode,还是泛指所有test mode包括MBIST/BSD/Analog test等?
2. 我的chip有一个TEST_MODE的pad,泛指所有测试模式,其中scan/mbist/bsd/analog test靠另两个pad TEST_MODE_SEL来选,那么我的set_dft_signal -type TestMode该如何来定义
回复 jake 2021-3-21 04:56
andywang3791: Hi, Jake

请教两个问题关于scan下的TestMode定义:
1. set_DFT_signal -type TestMode,这里的TestMode特指scan mode,还是泛指所有test mode包括MBIST/BSD/Ana ...
1.  综合 DFT insertion 定义的 TESTMODE 是 atpg/scan 专属的信号,通常就是 scan_mode/atpg_mode。 复杂一些的 SOC 会多几个,基本都是在 scan 时必须保持固定 1 或 0 的信号。

2. 芯片通常有 chip_top, dig_top,dig_core 这样的分层结构。 dig_top 是需要综合的,但 chip_top 不是。 dig_top上会有一个 atpg_mode 这样的 input port,综合时 DFT 信号定义就用到这个 port。dig_top 的 atpg_mode 连接哪个 pad, 或是复用哪个 pad 是在 chip_top 实现的。 虽然都是一些简单电路,但仍然要仔细检查每一个连接。 在你的这个芯片里,dig_top atpg_mode 可能就是 TEST_MODE PAD & (TEST_MODE_SEL==2'b01)。 这里具体时 2'b01 还是 2'b10, 2'b11 是你来定的。 chip_top 尽量不要有 flip flop, 因为 chip_top 不经过综合,chip_top 的 flop 不会加到 scan chain 里。

有一个技巧是在 digtop 里用一个不在 scan chain 里的 flop 作为 atpg_mode/scan_mode。 测试时先写一个或几个特殊的数据到某一地址,当数据符合时这个 flop 被置为 1, 这时 dig_top 里的 atpg_mode 信号就是 1,芯片就可以跑 test pattern/test_vector 了。 因为这个 flop 不在 scan chain 里, scan pattern 不会更改这个 flop 的值。 这点非常重要,要确保。 test pattern 跑完后芯片复位,清掉这个 flop,退出 atpg mode/scan mode。 这个技巧的好处是省 pad,尤其是只有 7,8 个 pad 的芯片,每个 pad 都是成本。 pad 少不代表片子简单。 有些内部可以是个 SOC。
回复 andywang3791 2021-3-21 20:29
jake: 1.  综合 DFT insertion 定义的 TESTMODE 是 atpg/scan 专属的信号,通常就是 scan_mode/atpg_mode。 复杂一些的 SOC 会多几个,基本都是在 scan 时必须保持固定 ...
Hi,Jake,我们的dig_top是带digital pad综合的,所以在set_dft_signal时port会是pad,然后会hookup到内部pin,所以对于TestMode signal的定义应该是多个pad组合的值,所以如果我set_dft_signal -type Testmode -port TEST_MODE, 然后hookup到内部的TEST_MODE&(TEST_MODE_SEL==2'b01)处,是否可以?
另外请教下对于综合你都是不带pad吗?这样会不会就不能cover pad的delay?然后dig_core是指内部的cpu core吗?thanks a lot
回复 jake 2021-3-22 11:26
andywang3791: Hi,Jake,我们的dig_top是带digital pad综合的,所以在set_dft_signal时port会是pad,然后会hookup到内部pin,所以对于TestMode signal的定义应该是多个pad组合 ...
我觉得可以这样,在 TEST_MODE&(TEST_MODE_SEL==2'b01) 处例化一个 buffer,这样 DFT insertion 时可以指定 buffer 的输出作为 hookup pin。 我觉得理论上是可以的。 这个 buffer 需要 dont_touch 或 preserve。
我以前的设计都是混合信号片子里的 dig_core,数字 I/O 绝大部分是异步。I2C 接口之类需要考虑 pad delay。 通常设计开始时估算一下。 最后 chip_top 会生成包含 pad delay, chip_top to dig_core route delay 的 SPEF,STA 时先建个 chip top 的 model, 算出 delay, 再代入 dig_core STA 就可以了。 初始设计时估算保守一些,应该问题不大。
dig_core 是个很泛泛的称呼,代表数字电路。 我上一家公司的芯片 99% 是不带 cpu core 的  
回复 andywang3791 2021-3-29 19:02
jake: 我觉得可以这样,在 TEST_MODE&(TEST_MODE_SEL==2'b01) 处例化一个 buffer,这样 DFT insertion 时可以指定 buffer 的输出作为 hookup pin。 我觉得理论上是可以 ...
Jake, thanks a lot,有个疑问,芯片内部的POR reset在scan mode下是否要由外部scan reset pin来代替,达到可控的效果,但是这样会不会导致在上电过程中灌入scan pattern而没有等到POR释放?
回复 jake 2021-3-30 01:49
andywang3791: Jake, thanks a lot,有个疑问,芯片内部的POR reset在scan mode下是否要由外部scan reset pin来代替,达到可控的效果,但是这样会不会导致在上电过程中灌入scan ...
POR reset/PorZ 在scan mode下肯定要可控,如果片子有scan reset,应该把 PorZ 和 scan reset MUX 一下。
上电过程中,scan mode 必须为 0,这样才能保证 PorZ 顺利通过 MUX。  
你的片子如果还是用 TEST_MODE&(TEST_MODE_SEL==2'b01) 作为scan mode, 应该至少保证 TEST_MODE 这个信号在上电过程中为 0。也许可以把PAD的输出和 PorZ AND一下。
回复 andywang3791 2021-3-30 09:04
jake: POR reset/PorZ 在scan mode下肯定要可控,如果片子有scan reset,应该把 PorZ 和 scan reset MUX 一下。
上电过程中,scan mode 必须为 0,这样才能保证 PorZ  ...
POR和Scan reset目前是用scan mode做mux的,还是用TEST_MODE&(TEST_MODE_SEL==2'b01) 作为scan mode,如果不做其他逻辑,保证上电过程TEST_MODE为0,比如在ATE测台上给芯片上电后固定等10ms再把驱动TEST_MODE,是否可以
12下一页

facelist

您需要登录后才可以评论 登录 | 注册

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询 |  EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2021-4-12 05:25 , Processed in 0.055124 second(s), 19 queries , Gzip On.

返回顶部