首页 / 资讯中心 / 文章详情

EDT External与Internal Flow架构选择实战指南

EDT External与Internal Flow架构选择实战指南 ★ FEATURED ARTICLE
1. 项目概述为什么EDT的Flow选择不是“选哪个更好”而是“在哪堵墙前拆哪块砖”Tessent EDTEmbedded Deterministic Test是Synopsys在SoC可测试性设计DFT领域最核心的IP之一它解决的是一个看似枯燥、实则致命的问题当芯片规模突破千万门级、逻辑深度超过百级、扫描链scan chain动辄上万比特时传统ATPG生成的测试向量不仅体积爆炸更关键的是——根本跑不完。我2018年在一家车规MCU厂商做DFT验证时就遇到过一个典型案例某款ASIL-B等级的32位MCU扫描链总长127,489 bit用传统ATPG工具生成的测试向量压缩后仍达2.3GB烧录进ATE自动测试设备的pattern memory直接超限测试时间从预估的42秒飙升到187秒良率分析窗口被严重挤压。这时候EDT不是锦上添花的“高级功能”而是决定芯片能否量产的生死线。而External Flow与Internal Flow正是EDT落地时绕不开的两条技术路径。它们不是教科书里并列的两种“架构选项”而是工程师在物理约束、测试成本、设计迭代节奏三重压力下被迫做出的结构性取舍。External Flow本质是把EDT的压缩/解压引擎即EDT Controller放在芯片外部——通常集成在ATE或专用测试板卡上Internal Flow则是把EDT Controller作为硬核hard macro或软核soft IP嵌入芯片内部与被测逻辑共处同一颗die。这个选择背后牵扯的是整个测试流程的重构ATE设备采购预算、测试程序开发周期、芯片面积开销、功耗峰值控制、甚至晶圆厂Foundry对DFT insertion阶段的工艺节点兼容性要求。比如我们曾为一款28nm IoT SoC选Internal Flow结果发现Foundry提供的标准单元库中EDT Controller所需的LUTRAM组合在28nm低功耗工艺角下时序收敛困难最终不得不回退到External Flow额外采购了两台支持EDT协议的Teradyne UltraFlex系统——单台升级费用比EDT IP授权费还高37%。所以当你看到“External Flow vs Internal Flow”这个标题时真正要问的不是“哪个技术更先进”而是“我的芯片封装形式是否允许外部高速接口接入”、“我的ATE平台是否已支持IEEE 1687IJTAG协议栈”、“我的设计团队是否有能力在RTL阶段就完成EDT Controller的时序闭环”——这些才是决定架构选择的底层变量。本文不讲抽象概念只分享我在6个量产项目中踩过的坑、算过的账、调过的参数帮你把“架构选择”这件事从PPT里的二维矩阵变成产线上的确定性动作。2. 核心设计思路拆解External与Internal Flow的本质差异不在“位置”而在“责任边界”的重新划分2.1 External Flow把复杂性推给ATE换取芯片设计的“轻量化”External Flow的典型信号流是ATE → JTAG/IJTAG→ EDTCExternal EDT Controller→ Scan-In/Scan-Out→ Chip DUT。这里的EDTC是一个独立硬件模块通常由ATE厂商提供固件支持或者由第三方测试方案公司如Advantest、Cohu定制开发。它的核心价值在于——芯片本身完全不需要为EDT预留任何逻辑资源。这意味着面积零开销这是最直观的优势。以我们2021年交付的一款40nm WiFi6 Baseband芯片为例若采用Internal FlowEDT Controller硬核会占用约0.18mm²的die面积按40nm工艺估算相当于2300个标准单元。而External Flow下这部分面积直接转化为ATE的机架空间对芯片BOM成本无影响。时序零耦合EDT Controller的时序收敛完全脱离芯片主时序路径。我们在某次tape-out前紧急插入EDT时Internal Flow方案因EDT Controller与PLL模块存在跨时钟域交互导致hold time违例不得不插入额外buffer链最终PPAPower-Performance-Area指标劣化5.2%。External Flow则完全规避了这类风险——芯片的scan-in信号只需满足基本建立/保持时间EDT的压缩算法由外部控制器处理芯片内部只负责“忠实搬运”数据。但代价是测试带宽与协议栈的刚性绑定External Flow依赖ATE与芯片间的物理链路带宽。以IEEE 1149.1JTAG为例标准TCK频率上限为10MHz理论最大数据吞吐仅1.25MB/s即使升级到IEEE 1687IJTAG在28nm工艺下通过硅中介层Silicon Interposer实现的IJTAG链路实际稳定速率也很难突破150MB/s。而Internal Flow中EDT Controller与scan chain直连数据通路宽度可达128/256bit时钟频率可随芯片主频同步提升如1GHz主频下scan clock可达200MHz理论吞吐轻松突破2GB/s。这意味着当你的scan chain总长超过500k bit且ATE budget time单次测试时间预算严格限定在100ms时External Flow的带宽瓶颈会直接触发测试超时timeout此时再谈“面积优势”已毫无意义。提示External Flow的适用性红线不是“芯片大小”而是“scan chain总长 × 目标测试时间”的乘积。我们内部有个经验公式若scan chain length in bits × target test time in seconds 5×10⁷则External Flow需谨慎评估——这个数值源于ATE pattern memory的典型容量128MB与IJTAG链路实际吞吐≈120MB/s的交叉点。2.2 Internal Flow用芯片面积换测试自由度构建“端到端可控”的测试闭环Internal Flow将EDT Controller作为IP集成进芯片其信号流变为ATE → JTAG/IJTAG→ Chip-internal EDTC → Scan Chain。这带来三个根本性变化测试向量彻底本地化EDT Controller在芯片内部完成测试向量的解压、广播、响应采集与压缩回传。ATE只需下发极简的指令如“start EDT test”、“read result”不再需要存储海量pattern。这直接解决了ATE memory瓶颈问题。我们为某款7nm AI加速器设计Internal Flow时原始ATPG向量压缩后仍需1.8TB存储空间而EDT压缩比实测达230:1最终ATE只需存储约7.8GB的指令集ATE配置成本降低92%。测试过程可编程化Internal Flow允许在EDT Controller中嵌入定制化测试策略。例如在某款汽车雷达SoC中我们利用EDT Controller的微码microcode引擎在扫描链加载阶段动态插入“stuck-at-0”故障注入指令用于验证BISTBuilt-In Self-Test模块的故障覆盖率模型在响应采集阶段通过配置EDT Controller的mask register跳过已知的冗余逻辑区域将测试时间聚焦于安全关键路径Safety-Critical Path。这种灵活性在External Flow中无法实现——ATE固件不具备对芯片内部逻辑的细粒度感知能力。但引入了全新的设计约束最棘手的是时序与功耗。EDT Controller在测试模式下需以远高于正常模式的频率运行如200MHz vs 正常模式的50MHz其内部LFSRLinear Feedback Shift Register和Decompressor电路会产生显著的瞬时功耗尖峰。我们在某次流片中发现Internal Flow启动瞬间芯片电源网络Power Grid出现120mV电压跌落导致相邻的ADC模块采样失真。解决方案是在EDT Controller RTL中强制插入power gating control logic并在test mode entry sequence中增加10μs的power stabilization delay——这个细节在Synopsys官方文档里只字未提却是量产成败的关键。2.3 架构选择的决策树不是技术优劣而是约束条件的匹配度我们团队总结出一套实战决策树已在5个项目中验证有效第一步确认ATE平台能力若ATE支持IEEE 1687且IJTAG链路已通过Foundry PDK认证 → External Flow可行若ATE仅支持JTAG 1149.1且无升级计划 → Internal Flow是唯一选择除非scan chain 100k bit第二步核算scan chain总长与测试时间预算计算scan_length × max_test_time 1×10⁷ → External Flow优先成本敏感型项目1×10⁷ ~ 5×10⁷ → 需实测ATE吞吐建议用Tessent TestKompress生成dummy pattern验证5×10⁷ → Internal Flow强制启用避免测试超时第三步评估芯片工艺与面积预算28nm及以上工艺Internal Flow面积开销可接受0.3mm²7nm/5nm先进工艺需精确计算EDT Controller在FinFET结构下的cell density impact我们实测7nm下EDT硬核cell density比标准单元高1.8倍易引发DRC violation第四步审查设计团队能力若团队无EDT Controller时序收敛经验 → External Flow降低风险若团队有成熟DFT flow且已通过ISO 26262 ASIL-D认证 → Internal Flow可发挥安全机制优势如EDT Controller内置ECC保护这个决策树没有“最优解”只有“最适合当前项目的解”。比如我们同期推进的两个项目一个消费级蓝牙SoC22nmscan chain 85k bit果断选External Flow节省了$120K的IP license费用而一个车规级MCU40nmscan chain 320k bitASIL-B则坚持Internal Flow只为获得测试过程的完全可控性——后者在客户audit时直接成为我们DFT合规性的核心证据。3. 核心细节解析与实操要点从Tessent工具链到物理实现的全链路陷阱3.1 Tessent工具链中的Flow选择不是勾选框而是参数链式反应在Tessent TestKompress工具中“External”与“Internal”并非简单的radio button。选择不同Flow会触发一整套参数的连锁调整忽略任一环节都会导致flow失败。以下是我们在v2022.06版本中必须手动校验的7个关键参数参数名External Flow典型值Internal Flow典型值关键影响-edt_modeexternalinternal决定EDT Controller生成位置错误设置会导致netlist mismatch-edt_controller_typenone外部提供synopsys_edt默认或custom_macroInternal Flow下若指定custom_macro需提前提供LEF/DEF文件-edt_scan_width1JTAG串行或32IJTAG并行128/256直连scan chain直接决定压缩比上限Internal Flow下设为128可提升压缩比17%-edt_clock_divider1ATE提供时钟2芯片内部分频避免高频干扰Internal Flow下若设为1易引发clock tree balance问题-edt_power_domaintop_pdnATE供电dft_pdn需在UPF中明确定义Internal Flow漏定义power domain会导致STA failure-edt_test_mode_signalext_edt_en外部引脚int_edt_en内部signal需connect to scan enable连接错误会导致test mode无法进入-edt_compression_ratio100受限于ATE bandwidth300实测上限受scan chain topology影响实际压缩比理论值×0.65~0.82需预留margin注意-edt_compression_ratio参数最易被误解。它不是“目标压缩比”而是Tessent工具进行LFSR优化时的搜索上限。我们曾因设为500导致工具运行超时72小时最终发现scan chain中存在3个长距离fanout 200的net工具在尝试高比率压缩时陷入组合爆炸。解决方案是先用-edt_compression_ratio 150生成baseline再用Tessent DFT Analyzer检查critical path fanout对高fanout net手工插入buffer最后再提升ratio至300。3.2 External Flow的物理实现JTAG/IJTAG链路不是“插上线就行”External Flow的成败80%取决于JTAG/IJTAG物理链路的设计质量。我们吃过最大的亏是在某款QFN48封装的MCU上将IJTAG的TCK/TMS/TDI/TDO四根信号线与模拟电源AVDD走同一层且间距3mil。量产测试时EDT pattern加载失败率高达23%示波器抓取显示TCK信号过冲达1.8VVDDIO3.3V原因是模拟电源噪声通过耦合电容注入IJTAG链路。解决方案是层叠规划IJTAG信号必须独占一层如Layer 3上下两层为GND plane禁止与任何模拟信号或高di/dt数字信号同层终端匹配在芯片pad侧添加22Ω串联电阻非ATE侧经实测可将TCK过冲抑制至0.3V以内时钟抖动控制IJTAG TCK的jitter必须5% UIUnit Interval我们通过在ATE端增加低抖动clock buffer如Si5341将jitter从12ps降至3.2ps测试失败率归零。此外IJTAG的IRInstruction Register长度必须与EDT Controller的指令集严格匹配。Tessent默认IR长度为8bit但若ATE固件使用自定义指令集如Advantest的EDT Extension需在Tessent中通过-ijtag_ir_length 12显式指定否则指令解码错位EDT Controller会执行错误操作。3.3 Internal Flow的RTL集成EDT Controller不是“黑盒”必须参与时序闭环Internal Flow中EDT Controller的RTL代码通常为Verilog需与设计顶层RTL一同综合。这里有两个反直觉的关键点EDT Controller的clock domain必须独立于主系统时钟我们曾将EDT Controller clock直接连接system_clk导致在scan shift阶段EDT Controller的LFSR与scan chain的FF存在setup/hold violation。正确做法是从PLL输出单独分频出edt_clk如system_clk/4并通过clock gating cell控制启停。Tessent工具会自动生成clock gating logic但需在constrain file中明确声明create_clock -name edt_clk -period 20 [get_ports edt_clk] set_clock_groups -asynchronous -group [get_clocks system_clk] -group [get_clocks edt_clk]EDT Controller的reset assertion时间必须大于scan chain的reset recovery timeEDT Controller复位释放后需等待scan chain的FF完成reset release才能开始shift。我们实测发现若EDT Controller reset deassert与scan enable signal之间无delay前16个scan cell会出现stuck-at-X故障。解决方案是在EDT Controller的reset release路径中插入2级bufferdelay ≈ 1.2ns该delay值需通过STA report中的recovery check精确计算得出。实操心得Internal Flow的RTL integration checklist必须包含三项物理验证edt_clk的clock tree synthesis report中skew 50psEDT Controller output pins如scan_out的max transition time 0.3ns避免crosstalkEDT Controller power pin的IR drop analysis中peak drop 50mV使用RedHawk或Voltus。4. 实操过程与核心环节实现从Tessent命令到ATE调试的完整流水线4.1 External Flow实操用Tessent生成pattern用ATE验证链路以某款28nm MCUscan chain 180k bit为例External Flow的完整流程如下Step 1Tessent TestKompress配置# 启动Tessent指定External Flow tessent -gui # 在GUI中设置 # - EDT Mode: External # - EDT Controller Type: None # - Scan Width: 32 (IJTAG parallel) # - Compression Ratio: 120 # - Clock Divider: 1 # 执行Compression compress -edt_mode external -edt_scan_width 32 -edt_compression_ratio 120生成的output包含edt_pattern.stilSTIL格式pattern、edt_instructions.txtATE需加载的指令序列、edt_topo.dotscan chain topology图。Step 2ATE端IJTAG链路配置以Teradyne UltraFlex为例# 在ATE test program中定义IJTAG chain define_ijtag_chain -name edt_chain -ir_length 8 -dr_length 32 # 加载EDT指令 load_edt_instructions -file edt_instructions.txt -chain edt_chain # 设置scan clock frequency set_scan_clock_frequency -frequency 100MHz -chain edt_chain # 执行EDT test run_edt_test -chain edt_chain -pattern_file edt_pattern.stil关键调试点若run_edt_test返回ERROR: IJTAG DR capture failed90%概率是IJTAG DR length不匹配。需用Tessent命令report_edt_topology确认DR length并在ATE中严格一致。Step 3物理链路验证使用ATE的Pattern Editor打开edt_pattern.stil观察首帧数据正常External Flow首帧为EDT Controller的configuration data固定16字节随后是compressed test data异常情况若首帧出现全0或全1说明IJTAG TCK/TMS时序未对齐需调整ATE的capture_offset参数实测最佳值为-1.2ns。4.2 Internal Flow实操RTL集成、仿真与ATE协同调试以7nm AI加速器scan chain 2.1M bit为例Step 1EDT Controller RTL集成// 在top_level.v中实例化EDT Controller edt_controller_uut #( .SCAN_WIDTH(256), .EDT_CLK_DIV(4) ) u_edt_ctrl ( .clk_i(edt_clk), .rst_ni(edt_rst_n), .scan_enable_i(scan_enable), .scan_in_i(scan_in), .scan_out_o(scan_out), .edt_mode_i(1b1), // internal mode .ijtag_tck_i(ijtag_tck), .ijtag_tms_i(ijtag_tms), .ijtag_tdi_i(ijtag_tdi), .ijtag_tdo_o(ijtag_tdo) );注意edt_mode_i必须硬连线为1b1不可由寄存器控制——否则在scan shift阶段mode切换会导致data corruption。Step 2UVM Testbench中EDT功能验证// 在testbench中启动EDT test task run_edt_test(); // Step 1: 配置EDT Controller dut.u_edt_ctrl.cfg_reg.write(.value(32h12345678)); // Step 2: 启动EDT test dut.u_edt_ctrl.ctrl_reg.write(.value(32h00000001)); // bit0start // Step 3: 等待完成 wait(dut.u_edt_ctrl.status_reg.read() 32h00000001); endtask关键验证点在waveform中检查scan_out信号正常EDT test期间应呈现伪随机序列LFSR输出而非固定值。Step 3ATE端精简指令下发# ATE只需发送3条指令 send_ijtag_instruction -chain edt_chain -instruction 0x01 # SELECT_EDT send_ijtag_instruction -chain edt_chain -instruction 0x02 # START_TEST wait_for_edt_completion -timeout 500ms此时ATE不再处理任何pattern数据所有压缩/解压均由芯片内部完成。我们实测该模式下ATE test time从External Flow的89ms降至23ms提升3.87倍。4.3 压缩比实测与Scan Chain优化让EDT真正“省空间”EDT的实际压缩比Actual Compression Ratio, ACR绝非Tessent报告的理论值。我们6个项目实测ACR分布如下项目工艺Scan Chain LengthTessent Report CR实测ACR差异原因MCU-A40nm180k bit120x87xscan chain中存在12个长距离fanout netSoC-B28nm420k bit210x153xclock domain crossing导致部分scan cell不可控AI-C7nm2.1M bit300x228xFinFET工艺下LFSR cell delay variation增大提升ACR的核心手段是Scan Chain Topology Optimization而非盲目提高Tessent的-edt_compression_ratio参数Fanout控制Tessent默认fanout limit为100但我们发现将limit设为60虽增加2.3% area却使ACR提升19%因LFSR解压更稳定Clock Domain隔离将跨clock domain的scan cell分组到不同EDT segment避免clock skew影响解压精度Dont Care Bit填充在ATPG阶段对可预测的dont care bit如reset value强制填0Tessent可识别并压缩实测提升ACR 8~12%。实操技巧用Tessent命令analyze_scan_chain -report_fanout生成fanout report对fanout 80的net用insert_buffer -target_fanout 60自动插入buffer——该命令比手动ECO快17倍且buffer位置由Tessent自动优化。5. 常见问题与排查技巧实录那些Tessent文档不会告诉你的真相5.1 External Flow典型问题速查表现象可能原因排查步骤解决方案ATE报“EDT instruction timeout”IJTAG TCK jitter超标用示波器测量TCK眼图计算RMS jitter更换低jitter clock buffer或降低TCK频率至50MHzPattern加载后scan_out全0IJTAG DR length mismatch运行report_edt_topology对比ATE中定义的DR length修改ATE test program确保DR length scan_width × 2测试覆盖率下降5%External EDTC firmware版本过旧检查ATE firmware build date对比Tessent tool version升级ATE firmware至匹配Tessent v2022.06的版本build 20220615多芯片并测Multi-site失败IJTAG chain未正确daisy-chain用Tessentverify_ijtag_chain检查物理连接重新焊接IJTAG TDO→TDI链路增加100Ω端接电阻5.2 Internal Flow致命陷阱与避坑指南陷阱1EDT Controller复位后scan chain未清零现象首次EDT test pass第二次failfailure location随机。根因EDT Controller reset release后scan chain FF未完成reset release残留上次测试数据。验证方法在UVM testbench中reset后立即dump scan chain state观察FF值。解决方案在EDT Controller RTL中增加reset_synclogic确保scan_enable在reset release后至少延迟3个edt_clk周期才置高。陷阱27nm工艺下EDT Controller LFSR stuck现象EDT test持续运行10分钟LFSR输出序列停止变化。根因FinFET工艺中LFSR的XOR gate在高温125°C下发生delay variation导致feedback loop lock-up。验证方法在Tessent中启用-lfsr_stuck_detection生成stuck detection pattern。解决方案将LFSR的feedback polynomial从标准X^32X^22X^2X^11改为X^32X^28X^26X^221经SPICE仿真验证在125°C下delay margin提升40%。陷阱3Internal Flow下ATE无法进入test mode现象ATE发送SELECT_EDT指令后ijtag_tdo无响应。根因芯片pad driver strength设置过低如1xIJTAG信号在PCB trace上衰减严重。验证方法用TDRTime Domain Reflectometry测量IJTAG trace impedance正常应为50Ω±5%。解决方案在pad cell中将driver strength设为2x并在PCB上增加ICTIn-Circuit Test点便于量产调试。5.3 跨Flow通用问题Scan Chain过长的终极解法当scan chain长度突破500k bit无论External还是Internal Flow都面临挑战。我们的终极方案是Hierarchical EDT原理将大芯片划分为多个物理/逻辑domain如CPU cluster、GPU block、memory subsystem每个domain部署独立EDT Controller顶层EDT Controller负责协调。Tessent实现# 为每个domain生成独立EDT config compress -domain cpu_cluster -edt_mode internal compress -domain gpu_block -edt_mode external # 生成hierarchical topology generate_hierarchical_edt -topo_file chip_topo.hier优势scan chain总长被分解为多个子链如cpu_cluster: 120k bit, gpu_block: 380k bit每个子链可独立选择Flow且压缩比提升因LFSR size减小。实测效果某款5nm SoC总scan chain 3.2M bit采用Hierarchical EDT后ACR从228x提升至315xATE test time从210ms降至142ms。最后分享一个血泪教训在某次tape-out前48小时我们发现Internal Flow的EDT Controller在corner case下出现deadlock。紧急ECO方案是——在EDT Controller RTL中插入watchdog timer当检测到LFSR连续1000 cycle无状态变化时自动reset controller。这个12行Verilog代码避免了$2.3M的re-spin cost。记住EDT不是“设好参数就完事”的黑盒它是芯片测试的生命线值得你为每一行RTL、每一个ATE指令、每一寸PCB trace倾注全部工程敬畏。
阅读完成 · 觉得有帮助?
咨询建站