DFT时怎么考虑IR问题

1.DFT设计时怎么处理IR问题

在 DFT 阶段谈 IR-drop(动态+静态) 不是去算 mV 数值 ,而是确保 测试向量不会把芯片瞬间拉到"电压塌陷" ,导致 良率误杀过度老化。核心思路是:

"让 ATPG 在生成向量时就看得见电源网格,别把太多高翻转堆在同一向量、同一周期、同一区域。"

下面把 DFT 如何考虑 IR 问题拆成 四步做法 + 三类 signoff


1.1. 矢量级 Toggle Masking / Low-Power-ATPG

  • 默认 ATPG 追求 高覆盖率会把所有 scan cell 翻个遍di/dt 爆炸

  • Low-Power-ATPG 选项:

    -- max_toggle = 15 % (可设)

    -- regional_toggle = 20 %

    → 工具 逐向量统计翻转密度超过门限就重新填充

  • 结果:di/dt ↓30 %Vmin 测试裕量↑ATE 不再误杀


1.2. 区域级 Power Domain Aware

  • 对不同电源域(PD1/PD2)设 独立 toggle budget

  • 掉电域 的 wrapper cell 强制 mask不让它翻转

  • 同时上电域cycle-shift向量 stagger ),把翻转峰错开 1-2 周期


1.3. 网格级 Vector-Based IR Analysis

  • PR 后提取 SPEF + 电流模型 → 导入 RedHawk/Voltus

  • 把 ATPG 产生的 worst-pattern set(典型 10-50 条) 注入 动态 IR 引擎

  • 工具报出 Vmin-drop > 10 % 的向量返回 DFT 重新 mask / 重新填充

  • 闭环迭代 直到 最坏向量 ΔV < 7 %(工艺厂给的测试裕量)。


1.4. 时钟级 At-Speed IR Screening

  • Transition ATPG最高功能频率

  • 同一向量launch + capture 沿相距仅 1 周期IR 塌陷最猛

  • DFT 约束

    -- max_launch_cycle_power = X mW

    -- max_simultaneous_output_switching = N %

    At-Speed 向量若超功率工具自动拆分 launch/capture 到两周期cycle-skew ),把电流峰削平


1.5. DFT-IR signoff 三件套

|---------------------------|-----------------|-------------------|
| 静态 IR | RedHawk/Voltus | ΔV < 5 % Vdd |
| 动态 IR (worst-pattern) | Vector-based IR | ΔV < 7 % Vdd |
| EM 电流密度 | Ansys/Calibre | Jrms < Jmax*0.8 |


1.6 总结

DFT 考虑 IR 不是去算电源,而是"让 ATPG 自带电源意识"
低翻转、分区域、错周期、回注 IR 引擎闭环
确保测试向量不会把芯片拉到"测试假失败"或"过度老化"

2.launch和capture如何拆到两个pattern

不是说拆分出来的两个pattern一个只有launch,一个只有capture,这是不可能的。launch和capture一定是一起出现的,对于同一个寄存器D pin capture前级发过来数据的同时,通过Q pin launch数据给后级。对于相邻两级DFF,前一时钟前一级DDF launch数据,当前时钟当前DFF capture数据。

这里说launch pattern和capture pattern是把launch翻转率高的cell放到launch pattern;把capture翻转率高的cell放到capture pattern。

DUT 看到的波形仍然是"launch 拍紧接 capture 拍"两条都含有完整的 shift-in / launch / capture / shift-out 时序,区别只在于:

  • 第一条向量

    -- shiftlaunch (在功能周期 N 上升沿发射)

    -- capture 也在同一向量内发生(周期 N+1 上升沿),

    -- 但 工具把"高翻转"的 cell 尽量只放 launch 相关capture 相关翻转被 mask/reloc 到第二条

  • 第二条向量

    -- shiftlaunch 已不存在(或极少),

    -- capture 仍是周期 N+1 沿,

    -- 把剩余高翻转移过来让两条向量的瞬时电流都 < 门限

因此 "第一条只有 launch 翻转峰,第二条只有 capture 翻转峰"功耗分布策略不是把 launch/capture 沿拆掉
DUT 仍然在同一对功能周期内完成 launch→capture时序关系、捕获边沿、路径延迟全部保持 At-Speed只是峰值电流被错峰

3.DFT时候控制ICG的TE/EN来降低IR问题是怎么做的

DFT 里把 ICG(Integrated Clock Gating)Test Enable (TE)Functional Enable (EN) 分开控,用来 "错峰放 clock""把大片 flip-flop 同时时钟上升沿" 拆成"分批跳变" ,从而 ↓di/dt、↓IR-drop、↓串扰 ,但 不影响测试覆盖率

下面按 插入阶段 → 控制策略 → 向量生成 → signoff 四步说明:


3.1. 插入阶段:DFT ICG vs Functional ICG

  • Functional EN (EN_func)(灰色)

    -- 功能模式下 省电用可随 RTL 已存在

  • DFT TE (TE_dft)(红色)

    -- DFT 插入阶段每一个 ICG 再加一条 OR 路径
    clk_out = (EN_func | TE_dft) & clk_in

    -- TE_dft 默认 0功能行为不变测试模式下 TE_dft 由 scan enable 或 ATPG 直接驱动


3.2. 控制策略:两条"错峰"命令

|---------------------------------------------|-----------------------------|------------|
| set_dft_clock_gating_test_enable true | 让工具 自动插 TE 端口 | Insertion |
| set_atpg_clock_gating_test_enable control | 告诉 ATPG "TE 可以当 0/1 变量" | PatternGen |

→ 结果:
EN_func 仍按功能意图开关TE_dft 成为 ATPG 的新"旋钮"向量阶段可以选 0 选 1


3.3. 向量生成:ATPG 把 TE 当普通 PI

  • 低功率模式

    -- set_max_toggle 20 % + set_clock_gating_test_enable 1

    -- ATPG 优先 把 TE_dft=1打开全部 ICG再把高翻转拆到多拍瞬时电流峰↓

  • 高覆盖补漏

    -- 对 难测试故障允许 TE_dft=0关闭部分 ICG把时钟重新隔离保证故障可观测coverage 不掉

  • 区域级错峰

    -- PowerDomain 1 设 TE=1PowerDomain 2 设 TE=0再交替分区电流峰时间错开


3.4. Signoff:两步验证

  1. 形式验证

    -- TE_dft=0功能波形 vs 原网表 LEC 必须 pass

    -- TE_dft=1scan shift/launch/capture 无 X-state

  2. 向量级 IR 检查

    -- 把 worst-toggle pattern 丢进 RedHawk/VoltusΔV < 7 % 才放行;

    -- 若 IR 仍超再收紧 toggle budget 或 加 cycle-skew


3.5. 效果量化(28 nm 例)

|-----------|--------|----------------|
| 峰值 toggle | 48 % | 22 % |
| 瞬态电流 | 1.00 I | 0.55 I |
| ΔV worst | 110 mV | 65 mV |
| 覆盖率 | 99.2 % | 99.2 %(无 loss) |


3.6 总结

DFT 把 ICG 的 TE 当"错峰旋钮"ATPG 可以按向量需要把大片时钟"分批打开"把同一拍的高翻转拆到多拍从而瞬态电流↓、IR↓再通过 TE=0 补漏保证 coverage最后用 IR 工具 signoff实现"测得全 + 测得稳"

4. extest mode下 子系统非grayBox的逻辑寄存器为什么可以被gating

在 EXTEST 模式下,子系统里未被 GrayBox 带走的"非 GrayBox 逻辑寄存器" (即内核里原来的功能寄存器、EDT 通道、OCC 等)之所以仍然可以被 ICG 做 clock gating,根本原因是:

EXTEST 只测"wrapper 外侧"互连,不依赖内核任何寄存器翻转

因此工具主动把内核时钟"关死"既省电又降 IR对测试结果毫无影响

下面把"为什么能 gate"拆成三步:


4.1. EXTEST 的测试对象决定"内核无需翻转"

  • EXTEST 只驱动/采样 wrapper chain 的边界扫入/扫出

  • wrapper 内侧→内核→wrapper 外侧 这条数据路径 被 wrapper cell 物理隔离

  • 因此 内核寄存器翻不翻转 都不会改变 wrapper 边界上的期望向量


4.2. 工具在生成 EXTEST 向量时自动 mask 掉内核翻转

  • set_attribute_value scan_out<core> --name ignore_for_graybox --value true

    core chain 的输出 标成 don't care

  • ATPG 在 external mode只对外层 comb 逻辑推故障内核任何节点都设为 X

  • 于是 ICG 可以把内核时钟完全 kill 掉 (TE=0),向量仍 100 % pass


4.3. OCC/ICG 的 TE 信号在 EXTEST 下被扫描寄存器直接编程

  • Parent OCCexternal mode 下只提供 wrapper shift & capture 时钟

  • Child OCCclock-gater 使能scan-programmable 寄存器 控制;

  • ATPG 把对应位点成 0内核 ICG 被永久关闭动态功耗 ↓30 %--50 %IR-drop 裕量↑


4.4. 结果量化(28 nm 实例)

|-------------|----|--------|--------|---------------------|
| 不 gate | 全开 | 1.00 I | 110 mV | Pass |
| EXTEST gate | 全关 | 0.55 I | 65 mV | Pass(无 coverage 损失) |


4.5 总结

EXTEST 只测 wrapper 外侧内核翻不翻转都"don't care"
工具索性把内核 ICG 全部关死既省功耗又降 IR测试照样 pass ------这就是 "非 GrayBox 逻辑寄存器仍能被 gating" 的根本原因

相关推荐
cy4130261 天前
怎么理解jtag/ssn tdi/tdo(input/output)要在一个clk内收时序
jtag·dft
cy41302625 天前
SSN和ijtag在scan中的应用与区别
dft
材料科学研究2 个月前
量子计算与AI融合:材料科学新突破
人工智能·量子计算·dft·第一性原理
LaoZhangGong1232 个月前
IR红外遥控器和接收器
c语言·遥控器·红外·ir
星野云联AIoT技术洞察2 个月前
OpenMQTTGateway 技术全解:统一多协议到 MQTT 的开源网关
lora·esp32·智能家居·ble·ir·iot网关·openmqttgateway
star1111113 个月前
VASP计算其他性质(备忘录)
dft·vasp
poemyang4 个月前
Java编译器优化秘籍:字节码背后的IR魔法与常见技巧
java虚拟机·编译原理·ir·即时编译器
最爱干饭了6 个月前
Memory Repair (八)
学习·memory·dft·repair
旺旺脆兵兵8 个月前
Tessent Scan Stream Network (SSN) 在芯片设计DFT中的架构、实现原理及组成
dft