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 三件套

静态 IRRedHawk/VoltusΔV < 5 % Vdd
动态 IR (worst-pattern)Vector-based IRΔV < 7 % Vdd
EM 电流密度Ansys/CalibreJrms < 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 时序,区别只在于:

  • 第一条向量
    – shift → launch(在功能周期 N 上升沿发射)
    – capture 也在同一向量内发生(周期 N+1 上升沿),
    – 但 工具把“高翻转”的 cell 尽量只放 launch 相关capture 相关翻转被 mask/reloc 到第二条

  • 第二条向量
    – shift → launch 已不存在(或极少),
    – 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=1 时 scan shift/launch/capture 无 X-state

  2. 向量级 IR 检查
    – 把 worst-toggle pattern 丢进 RedHawk/VoltusΔV < 7 % 才放行;
    – 若 IR 仍超再收紧 toggle budget 或 加 cycle-skew


3.5. 效果量化(28 nm 例)

峰值 toggle48 %22 %
瞬态电流1.00 I0.55 I
ΔV worst110 mV65 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 OCC 在 external mode 下只提供 wrapper shift & capture 时钟

  • Child OCC 的 clock-gater 使能 由 scan-programmable 寄存器 控制;

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

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

不 gate全开1.00 I110 mVPass
EXTEST gate全关0.55 I65 mVPass(无 coverage 损失)


4.5 总结


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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值