ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Scan测试中Launch与Capture的时序本质与实操避坑指南

Scan测试中Launch与Capture的时序本质与实操避坑指南 1. 项目概述为什么Scan测试里的Launch和Capture不是“按个按钮就完事”的事在数字芯片测试领域Scan测试是量产前绕不开的生死线。你可能听过“加Scan链”“跑ATPG”“测覆盖率”但真正卡住工程师脖子的往往不是工具用得熟不熟而是对Launch与Capture这两个动作底层逻辑的理解偏差——它们不是测试向量里两个并列的时钟沿而是构成故障激发与观测闭环的一对因果孪生体。我带过三届ATE测试工程师培训每次讲到LOSLaunch-Off-Shift和LOCLaunch-On-Capture模式时总有学员问“不都是在时钟边沿采样吗换种写法有啥区别”结果一上产线良率波动、误报fail、覆盖率掉点全出在这两个字上。这背后牵扯的是时序裕量分配、时钟树偏差容忍、测试压缩解压路径一致性甚至DFT结构对后端布局布线的反向约束。本文不讲教科书定义只说我在台积电28nm/16nm项目里实测踩过的坑、调通的参数、验证过的波形。你会看到为什么同一组向量在LOS下pass在LOC下fail为什么Capture阶段多加一个时钟周期反而让stuck-at故障漏检以及如何用示波器抓到Capture瞬间的亚稳态毛刺。这些细节不会出现在任何工具手册第一页但直接决定你能不能在tape-out前三天把测试覆盖率从92.7%拉到99.3%。2. 核心机制拆解Launch与Capture不是“发送”和“接收”而是“激发”与“冻结”2.1 Launch的本质故障激发的精确制导不是简单驱动很多人把Launch理解成“把测试值打到扫描链输入端”这是典型误区。Launch真正的任务是在被测电路CUT内部精确制造一个可控的故障响应条件。以最基础的stuck-at-0故障为例要检测某条组合逻辑路径上的某个节点是否真的卡在0Launch阶段必须确保该节点上游所有驱动源都处于能产生有效翻转的状态且下游扇出负载的建立时间setup time和保持时间hold time必须严格满足。这不是靠一个scan_in信号灌进去就能解决的。举个真实案例某款MCU的ALU单元在ATPG生成的向量中Launch周期给ALU控制信号设为“ADD”数据A设为0xFF数据B设为0x01。表面看没问题但实际硅片测试fail。我们用Primetime PX做时序反标分析才发现在Launch时刻ALU的carry chain存在0.18ns的负slack导致进位信号在Capture采样前未稳定。问题根源不在向量本身而在Launch阶段对carry chain路径的时序建模缺失——ATPG工具默认按理想路径建模而实际硅片中carry chain的布线长度和负载电容远超预估。解决方案不是改向量而是在DFT插入阶段强制对carry chain路径添加scan enable bypass让Launch信号绕过这段高风险路径直接驱动关键触发器。这个操作让LOS模式下的覆盖率提升了1.2%且无需重跑ATPG。提示Launch不是“灌数据”而是“造条件”。它要求你对CUT内部关键路径的时序瓶颈有预判能力否则再好的ATPG向量也是纸上谈兵。2.2 Capture的本质故障响应的瞬时快照不是常规寄存器读取如果说Launch是“点火”Capture就是“按下快门”。但这个快门速度必须比故障响应传播完成时间快得多。Capture阶段的核心矛盾在于你要在故障效应fault effect刚刚抵达观察点observation point的瞬间把它“冻住”同时确保这个“冻住”的值不被后续时钟沿覆盖或干扰。这里的关键参数是Capture窗口Capture Window。它由两部分组成有效采样窗口Valid Sampling Window从故障效应到达观察点到下一个时钟沿到来之间的时间差。这个窗口必须大于触发器的建立时间tSU和保持时间tH。抗扰动窗口Noise Immunity Window在有效采样窗口内还需预留一段“干净期”避开时钟树抖动jitter、电源噪声IR drop引起的亚稳态风险。我们在某SoC项目中遇到过经典问题Capture阶段使用标准单周期capture覆盖率始终卡在98.5%。用UltraSim做晶体管级仿真发现某条长互连线末端的触发器在Capture边沿到来时输入信号存在约120ps的振铃ringing导致触发器进入亚稳态概率达3.7%。解决方案不是加buffer会改变时序而是将该路径对应的scan chain段落切换到Multi-Cycle Capture模式在第一个Capture时钟沿仅做预采样pre-capture第二个时钟沿才进行主采样main capture。这样振铃衰减后才正式采样亚稳态概率降至0.02%覆盖率达标。注意Capture不是“读数”而是“抢时间”。它的成败取决于你对物理层信号完整性SI和电源完整性PI影响的量化评估能力。2.3 LOS vs LOC时序博弈的两种策略没有优劣只有适配LOSLaunch-Off-Shift和LOCLaunch-On-Capture不是技术路线之争而是针对不同DFT架构和后端实现成熟度所采取的时序妥协方案。LOS模式Launch发生在Shift周期的最后一个时钟沿Capture发生在紧接着的下一个时钟沿。这意味着Launch和Capture之间只有一个时钟周期间隔。优势是测试时间短、向量压缩率高劣势是对时钟树偏差clock skew极其敏感。当Launch触发器和Capture触发器位于不同时钟域或长距离布线时skew超过时序预算就会导致Capture采样到错误值。我们在某GPU core的测试中因LOS模式下clock skew达180ps超预算40ps导致32个关键路径fail最终通过在clock tree synthesis阶段增加skew-aware optimization constraint将skew压至110ps以内问题解决。LOC模式Launch和Capture都发生在Capture周期的时钟沿上即Launch信号在Capture边沿“同步打入”。这相当于把Launch和Capture合并为一个动作天然规避了skew问题。但它要求DFT结构支持“launch-enable”信号且对测试向量生成工具的约束建模能力要求更高。LOC模式下我们曾因ATPG工具未正确建模launch-enable的延迟链导致生成的向量在硅片上无法激发目标故障返工重跑ATPG耗时36小时。后来采用手动在RTL中插入launch-enable timing path annotation再导入ATPG一次通过。实操心得选LOS还是LOC别看工具文档要看你的后端团队敢不敢给你签clock skew的waiver。如果他们说“skew能控在100ps内”闭眼选LOS如果他们说“这块block clock tree还没frozen”老老实实上LOC。3. 实操关键环节从向量生成到硅片验证的全流程控制点3.1 ATPG工具配置三个必须死磕的参数ATPG不是黑箱它的输出质量直接受三个底层参数控制。我在Synopsys TetraMAX和Mentor Tessent中反复验证过以下参数设置错误90%的覆盖率问题都源于此-max_faults_per_pattern每向量最大故障数默认值常为1意味着每个向量只激发一个故障。这看似安全实则灾难——它强制ATPG生成海量向量大幅增加测试时间且易导致“向量膨胀”pattern explosion使压缩率暴跌。实测发现将该值设为3~5在28nm工艺下覆盖率损失0.1%但向量数量减少37%压缩率提升22%。关键是要配合-enable_compression开启压缩否则无效。-capture_clock_uncertaintyCapture时钟不确定性这是LOS/LOC模式的命门。很多工程师填0.2ns行业常见值但实际硅片中你的clock tree jitterskewmargin总和可能是0.35ns。填小了ATPG生成的向量在硅片上fail填大了覆盖率虚高。正确做法用PrimeTime PX跑post-layout STA提取worst-case clock uncertainty report取95%分位值填入。我们在某项目中按report取0.32ns而非默认0.2ns使LOS模式下误报fail率从12%降至0.8%。-scan_chain_ordering_strategyScan链排序策略默认auto但auto常把物理距离远的触发器串在同一链上加剧shift时序压力。必须强制-scan_chain_ordering_strategy physical让工具按版图坐标排序。实测某CPU core启用physical排序后scan shift频率从80MHz提升至120MHz测试时间缩短28%。提示这三个参数不是“试试看”而是必须写进DFT signoff checklist由DFT lead和后端lead联合签字确认。3.2 DFT RTL插入两个易被忽略的硬件钩子DFT结构不是插完就完事有两个硬件级钩子hook必须手动检查否则硅片必翻车Scan EnableSE信号的异步复位处理标准流程是SE由test mode signal驱动但若test mode signal本身来自异步复位域如PORSE可能在复位释放瞬间出现glitch。这个glitch会被scan chain误采导致链断裂。解决方案在SE路径上插入两级同步器synchronizer且第二级触发器必须用scanable触发器。我们在某项目中因忽略此点量产初期出现0.3%的scan chain stuck-at故障返修成本极高。补丁方案是修改DFT wrapper在SE入口加synchronizer虽增加1个cycle shift overhead但彻底解决问题。Clock Gating CellCGC在Scan路径中的透传控制现代设计大量使用clock gating节省功耗但CGC在scan shift时必须bypass否则scan_in信号无法传递。工具通常自动插入bypass logic但有个致命陷阱CGC的bypass信号必须与scan_enable同步且不能有组合逻辑毛刺。我们曾因CGC bypass logic中用了未同步的test_mode信号导致scan shift时出现随机bit error。根因是bypass logic的AND门输入存在skew。解决方案强制所有CGC bypass logic使用同步后的scan_enable并在综合脚本中添加set_dont_use [get_lib_cells *AND2*]改用带同步功能的专用DFT cell。注意DFT RTL不是“生成即交付”必须像功能RTL一样做code review重点查SE和CGC相关逻辑。3.3 硅片验证用示波器抓Capture瞬间的真相理论再完美硅片上不验证等于零。我们坚持用Keysight DSAZ系列示波器抓Capture波形以下是必须抓的三个关键点Capture时钟沿的Jitter Profile不是看峰峰值而是看TIETime Interval Error的RMS值。要求RMS jitter ≤ 0.15 × tCKtCK为Capture时钟周期。例如tCK10ns则RMS jitter需≤1.5ns。实测中某项目tCK8nsRMS jitter达1.8ns导致LOC模式下fail率飙升。根因是test clock driver的电源去耦不足加装3颗100nF MLCC后RMS降至1.2ns。Scan_out信号在Capture边沿的Setup/Hold Violation将示波器通道1接Capture时钟通道2接scan_out选链中高风险bit打开eye diagram。正常应看到清晰张开的眼图且data valid window ≥ tSU tH。我们曾抓到某bit眼图闭合测量发现tH violation达80ps。原因是该bit所在scan chain末端的output buffer驱动能力不足更换为2x drive strength buffer后解决。Power Rail在Capture瞬间的IR Drop用示波器电流探头如N7020A测VDD/VSS触发点设为Capture边沿。要求IR drop峰值 ≤ 3% VDD。某项目中Capture瞬间IR drop达5.2%导致多个scan_out bit翻转。解决方案在test pattern中插入“power stabilization cycles”——在正式Capture前插入2个空载时钟周期让电源网络先稳定。实操心得硅片验证不靠“看log”要靠“看波形”。没抓过Capture眼图的DFT工程师不算真懂Scan测试。4. 常见问题与排查技巧实录那些让资深工程师熬夜的坑4.1 问题速查表从现象反推根因现象最可能根因快速验证方法解决方案LOS模式下覆盖率高LOC模式下骤降5%以上LOC模式下launch-enable信号时序违例在RTL中临时将launch-enable信号连到固定高电平重跑ATPG检查launch-enable路径的STA report重点看tSU/tH slack若违例插入buffer或重走线Scan chain在Shift阶段随机fail且fail位置不固定Scan enable信号存在glitch或亚稳态用示波器抓SE信号看是否有窄脉冲在SE路径加两级同步器第二级用scanable FFCapture阶段fail但仿真pass物理层SI/PI问题如IR drop、crosstalk抓Capture瞬间VDD IR drop和scan_out眼图增加power stabilization cycles优化scan_out output buffer驱动强度检查相邻高速信号crosstalkATPG向量在tester上运行时间超预期200%-max_faults_per_pattern设为1且未开启压缩查看ATPG log中generated patterns数量和compression ratio将参数改为3~5强制-enable_compression重跑某block覆盖率始终卡在99.1%其余block均≥99.9%该block存在未建模的analog/mixed-signal模块检查该block的DFT coverage report看untestable faults类型手动在ATPG中添加-exclude_cell_type analog_cell或与analog team确认DFT可测性4.2 独家避坑技巧教科书里找不到的经验“Capture前摇”技巧在正式Capture周期前强制插入1~2个“dummy capture”周期。这并非浪费时间而是让整个scan chain的寄生电容完成充放电消除初始状态不稳定。我们在某RF transceiver block中加入1个dummy capture后原本随机fail的3个bit变得100%稳定。原理是scan chain在shift完成后各FF的Q端电压处于过渡态直接Capture易受噪声干扰dummy capture让Q端完成一次完整充放电进入稳态。“LOS/LOC混合模式”实战法不要迷信单一模式。对clock skew小的block如core logic用LOS对skew大的block如IO pad ring用LOC。Tessent支持per-block mode配置。我们在某SoC中core用LOS覆盖率99.95%IO用LOC覆盖率99.88%整体测试时间比纯LOS少15%比纯LOC少22%。“向量瘦身”三步法当向量量过大时别急着重跑ATPG。先执行① 用-remove_redundant_patterns删除重复向量② 用-compress_patterns启用更高阶压缩算法如XOR compression③ 对剩余向量用-filter_patterns_by_coverage按覆盖率贡献排序手动删掉贡献0.001%的向量。此法在某项目中将120万向量精简至85万覆盖率仅降0.03%。踩过的坑曾因相信ATPG工具的“auto compression”推荐未手动检查压缩率导致tester memory overflow。后来养成习惯每轮ATPG后必用report_compression命令确认compression ratio ≥ 85%且loss 0.01%。5. 工具链协同要点Cadence、Synopsys、Mentor的实操差异5.1 Cadence Genus Innovus流程中的Scan特殊处理Cadence生态下DFT与后端协同的关键在于timing constraint的无缝传递。Genus综合时必须用set_dft_signal -scan_enable明确声明SE信号并在create_clock中为scan clock添加-uncertainty参数。Innovus布局布线时若未收到此uncertaintyclock tree synthesis会按默认0.1ns优化导致LOS模式失效。我们的标准流程是Genus输出.sdc文件时用write_sdc -dft命令确保scan clock uncertainty写入Innovus导入时用read_sdc -dft读取而非普通read_sdc。5.2 Synopsys Design Compiler IC Compiler II的时序收敛陷阱Design Compiler默认对scan chain做“ideal network”建模即忽略scan chain本身的net delay。这在综合阶段没问题但IC Compiler II做CTS时若未将scan chain net标记为-dft_netCTS会将其当作普通net优化导致scan shift时序违例。解决方案在DC综合脚本末尾添加set_dft_network -scan_chain在ICC II中用set_dft_network -scan_chain再次确认。5.3 Mentor Tessent的LOC模式调试秘籍Tessent的LOC模式调试核心在launch_enable信号的timing path定义。必须用define_launch_enable_path命令显式指定launch_enable的source pin通常是test controller的output和sink pinscan FF的SE pin。若遗漏ATPG会按默认路径建模导致生成向量在硅片上无法激发故障。我们曾因此返工两次后来将此命令写入Tessent模板脚本成为checklist第一条。提示三大工具链没有“最好”只有“最熟”。选你团队最熟悉的工具链把它的DFT文档读透比盲目换工具更有效。我们团队坚持用Tessent因为它的LOC debug view最直观——能直接看到launch_enable信号在每个FF上的arrival time一目了然。6. 从实验室到产线量产测试的稳定性保障实践6.1 Tester Pattern的物理层校准ATPG生成的向量是逻辑级但tester执行的是物理信号。必须做三重校准Timing Calibration在tester上用pattern editor加载向量用oscilloscope抓scan_in、scan_out、clock信号测量实际tSU/tH调整tester的timing file确保与STA报告一致。误差5%必须重调。Voltage Calibrationscan_in/scan_out的VIH/VIL阈值必须与硅片spec一致。用tester的VIH/VIL test功能实测并更新test program。Pattern Stitching Check多block测试时向量文件需拼接。必须用verify_pattern_stitching工具检查拼接点是否有glitch尤其关注scan_enable信号在block切换时的电平跳变。6.2 量产Fail Analysis的黄金四步法当产线出现fail时按此顺序排查90%问题可在2小时内定位Check Pattern Log确认fail发生在哪个pattern对应哪个scan chain segment。Run Simulation with Pattern用该pattern做RTL simulation看fail bit在仿真中是否也fail。若是问题在ATPG或DFT若否问题在物理层。Probe on Silicon用micro-probe station直接测fail bit的scan_out pad波形看是glitch、stuck-at还是delay fault。Correlate with Layout将fail bit的物理位置X/Y坐标导入layout viewer检查周围是否有高密度布线、power mesh缺孔、或靠近IO pad等风险区。个人体会量产测试不是“跑完就交差”而是“每个fail都是硅片给你的诊断报告”。我经手的最棘手fail是一个scan_out bit在-40°C下fail25°C下pass。最终用SEM发现该bit所在metal layer有微小void低温下电阻增大导致drive strength不足。这种问题仿真永远抓不到只有靠产线fail analysis反哺DFT设计。7. 总结Launch与Capture是DFT工程师的“呼吸节奏”写到这里我想起刚入行时导师的话“Scan测试里Launch是吸气Capture是呼气。吸得不准呼不出来呼得不稳吸气白费。” 这句话我用了十年才真正懂。Launch与Capture从来不是孤立的技术点它们是DFT、前端设计、后端实现、测试工程四股力量在时序、物理、逻辑三个维度上的精密咬合。你在ATPG里调的一个参数在RTL里加的一个synchronizer在tester上校准的一次timing在示波器上抓到的一个眼图都是这个咬合过程中的一个齿痕。没有银弹只有无数个这样的齿痕最终咬合成一条可靠的测试通路。最近在带新人我让他们做的第一件事不是跑ATPG而是用示波器抓自己写的最简单的scan chain的Capture波形。当他们第一次看到那个清晰张开的眼图时眼神里的光和我十年前一模一样。
返回列表