热度 23| |
设计 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。
jake: 您现在的方案是 TEST_MODE&(TEST_MODE_SEL==2'b01) buffer后的信号作为scan_mode,对吧?“POR和Scan reset目前是用scan mode做mux的” -- 这样做是对的。实际上 ...
andywang3791: 是的,TEST_MODE&(TEST_MODE_SEL==2'b01)这之后加一个sizeonly的buffer,作为scan mode,不过保证上电过程TEST_MODE为0只能靠ATE去延迟,design里并没有保证,所 ...
jake: 1. 综合 DFT insertion 定义的 TESTMODE 是 atpg/scan 专属的信号,通常就是 scan_mode/atpg_mode。 复杂一些的 SOC 会多几个,基本都是在 scan 时必须保持固定 ...
wa12jun: hi,jack.请问一下设计中例化的门控单元te是接scan_mode还是scan_en,我这边尝试接scan_en,好像总是会报violation
hmuing: 您好,想请教一下,这个atpg_mode如何设置为1了,正常测试的时候可以先指令设置好后再测试,但是现在TetraMAX中,因为这个信号无法设置为1导致blocked error,sc ...
jake: 跑Tetramax的时候需要一个wrapper,在里面例化digtop的时候直接把atpg_mode接1
hmuing: 谢谢哈,但是我还要一个问题不太理解,就是我整个功能都实现了,但扫描链中出现了部分串QN的情况而不是全部串Q,所以仿真的时候scan_out和scan_in并不一致,工具 ...
jake: 1. 综合 DFT insertion 定义的 TESTMODE 是 atpg/scan 专属的信号,通常就是 scan_mode/atpg_mode。 复杂一些的 SOC 会多几个,基本都是在 scan 时必须保持固定 ...
hmuing: hi,Jack,关于dig层por的一个问题咨询一下,正常功能下test_mode=0,通过外部打指令方式将test_mode置1,但这个flop的复位端por是从模拟模块输入过来的,实际测 ...
jake: "而por不是chip_top层的port,做不到先是0,延迟一段时间再变为1,所以导致test_mode初值不是0,打指令失败,出现不定态,导致错误" -- 生成向量的时 ...
hmuing: 我是这样设置的,但是导入tmax中trace不了,test_mode这个flop的Q端还是xxx,而复位端已经变成111了
jake: 有点不对劲。test_mode这个flop很特殊,RN直接连por。 por 0->1后test_mode Q应该是0