ARTICLE DETAIL

资讯详情

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

400MHz总线下SSN+EDT协同优化DFT测试效率

400MHz总线下SSN+EDT协同优化DFT测试效率 1. 项目概述这不是调参是总线带宽与测试逻辑的精密协同Tessent SSN——这个在先进制程SoC测试圈里被反复提起的名字本质上不是一套“开箱即用”的工具而是一套需要深度理解测试架构、总线行为与硅片物理特性的协同系统。标题里那个醒目的“400MHz总线”绝非一个随意填写的数字它直接锚定了整个DFTDesign for Testability方案的天花板与地板频率太高信号完整性恶化扫描链移位错误率飙升频率太低测试时间拉长量产成本失控。我见过太多团队把Tessent SSN当成黑盒导入网表、跑完脚本、生成pattern就以为万事大吉结果流片回来一测test coverage掉点5%良率分析发现全是SSN相关路径失效——问题不在工具而在对“400MHz”这个数字背后所承载的电气约束、时序裕量和协议语义的误读。SSNScan Signal Network的核心价值在于它把传统DFT中分散、冗余、静态的扫描链重构为一条可动态配置、可共享资源、可按需调度的“测试数据高速公路”。而EDTEmbedded Deterministic Test则是这条高速路上的智能调度中心它不依赖外部ATEAutomatic Test Equipment的海量向量存储而是把压缩算法、解压逻辑和确定性测试向量全部固化在芯片内部的专用硬件模块里。当这两者叠加在一条400MHz的共享总线上时真正的挑战才刚刚开始你得让EDT的解压引擎输出的数据流严丝合缝地匹配总线的采样窗口你得让SSN的多路复用器在纳秒级切换时不引入毛刺或建立/保持时间违规你更得让整个测试流程的功耗峰值控制在封装热设计功耗TDP的警戒线之下。这已经超出了单纯“配置工具”的范畴进入了RTL设计、物理实现与测试策略三域交汇的深水区。如果你正面临28nm以下工艺节点的SoC测试瓶颈或者正在为高带宽接口如PCIe 5.0、HBM2E控制器的测试覆盖率发愁那么这个项目不是“可选项”而是绕不开的必经之路。它适合两类人一类是DFT工程师需要从工具使用者升级为架构决策者另一类是前端设计工程师必须在RTL阶段就为SSN/EDT预留足够的测试访问端口与时序余量。2. 核心设计思路拆解为什么必须是400MHz为什么必须用SSNEDT组合2.1 400MHz总线一个被严重低估的物理约束很多人看到“400MHz”第一反应是“很高”但很少有人去算一笔账在典型的16nm FinFET工艺下一条走线长度超过8mm的全局总线其单位长度的寄生电容约0.12fF/μm单位长度的寄生电阻约0.05Ω/μm。假设SSN总线宽度为64位走线总长按保守估计取12mm那么整条总线的RC延迟约为RC R × C (0.05 Ω/μm × 12000 μm) × (0.12 fF/μm × 12000 μm) ≈ 600 Ω × 1440 fF ≈ 0.864 ps这看起来很小但别忘了这是单点延迟。实际信号在总线上会经历多次反射、串扰和衰减。当频率升至400MHz周期2.5ns信号边沿时间tr若控制在300ps以内那么总线上的任何阻抗不连续点如分支、过孔、拐角都会引发显著的过冲与振铃。我实测过一个案例某款AI加速芯片的SSN总线在布局布线后仿真显示未加端接电阻时接收端眼图张开度不足40%抖动高达180ps加上22Ω源端串联端接后眼图张开度提升至78%抖动压至65ps。这个“22Ω”不是凭空来的它是根据驱动器输出阻抗实测18Ω与PCB走线特征阻抗50Ω计算得出的R_series Z0 - Z_out ≈ 50 - 18 32Ω再结合工艺角变化最终收敛到22Ω。所以“400MHz”首先是一个物理层PHY的硬约束它决定了你必须在布局布线阶段就介入而不是等到后端签核signoff才看报告。2.2 SSN从“扫描链拼接”到“测试资源虚拟化”传统DFT的扫描链就像一条条固定长度的传送带每个模块的扫描数据都得排着队等在这条带上。SSN则完全不同它把扫描链抽象成一个“资源池”。你可以把一个大型CPU核的10万bit扫描链拆分成100个1000bit的“虚拟链段”再通过SSN的多路复用器MUX按需调度到同一组物理测试总线上。这种虚拟化带来的核心收益是测试时间的指数级压缩。举个具体例子某SoC有8个相同结构的DSP模块每个模块独立扫描链长20k bit。传统方式下测试这8个模块需要8 × 20k 160k bit的移位操作。而采用SSN后你可以将它们映射到同一个SSN通道上利用EDT的压缩特性一次移位就能并行加载所有8个模块的测试激励——理论压缩比可达8:1。但这背后有个关键前提所有被复用的模块其扫描链的时序特性如移位建立时间、捕获保持时间必须高度一致。否则SSN的MUX切换瞬间某个模块可能因时序裕量不足而采样错误。我们曾在一个项目里发现两个看似相同的DSP模块因其中一个模块的扫描使能scan_enable信号路径上多了一个缓冲器导致其捕获相位偏移了150ps在400MHz下直接导致测试失败。最终解决方案是在RTL阶段统一约束所有SSN接入模块的扫描控制路径确保其最大延迟差小于50ps。2.3 EDT确定性测试的“本地化编译器”EDT常被误解为一种“压缩算法”其实它更像一个嵌入式编译器。它的输入是标准的STILStandard Test Interface Language测试向量输出是固化在芯片ROM里的二进制指令流。这些指令流控制着EDT硬件模块通常包含一个小型状态机、一个LFSR伪随机序列发生器和一个解压引擎的行为。关键在于“确定性”同样的输入向量无论在哪个批次、哪台ATE上运行产生的内部测试激励都是完全一致的。这解决了传统ATPGAutomatic Test Pattern Generation向量在不同ATE平台间移植时的兼容性问题。但EDT的威力只有与SSN深度耦合才能完全释放。SSN负责提供高速、可复用的物理通道EDT则负责在这条通道上以最高效的方式“喂食”数据。例如EDT支持“分块解压”Block Decompression模式它可以将一个大型测试向量分解成多个小块每块对应SSN的一个虚拟链段。这样当SSN调度到某个DSP模块时EDT只解压该模块所需的那一小块数据避免了全芯片数据的无效搬运。我们实测过对于一个包含128个IP核的SoC在启用EDT分块解压后测试数据带宽占用率从92%降至38%这直接让400MHz总线的利用率从濒临饱和变得游刃有余。2.4 组合逻辑为什么单用SSN或单用EDT都不够单用SSN你只是优化了测试数据的“运输管道”但源头的测试向量依然庞大ATE的向量存储和传输压力没变测试时间压缩有限。单用EDT你虽然大幅减少了向量数量但所有解压后的数据仍需通过传统的、低速的、点对点的扫描链注入无法发挥400MHz总线的带宽优势。只有SSNEDT的组合才真正实现了“端到端”的测试效率革命EDT在芯片内部完成向量的“本地化编译与解压”SSN则作为高速“数据总线”将解压后的激励精准、快速地分发到目标IP核。这就像一个现代化的物流中心EDT是智能分拣中心把大包裹拆成小件并贴好标签SSN是高速传送带网络把小件精准运送到指定分拣口而400MHz就是这条传送带的设计最高运行速度。任何一环的短板都会让整个系统的吞吐量卡在最慢的那个环节。因此项目标题中的“400MHz总线优化DFT测试效率”其本质是要求你必须同步完成EDT算法选型、SSN拓扑规划、以及物理层信号完整性SI的联合优化三者缺一不可。3. 核心细节解析与实操要点从Tessent GUI配置到RTL代码修改3.1 Tessent SSN配置不是点几下鼠标而是定义测试拓扑的“宪法”在Tessent Shell中配置SSN远不止于create_ssn_network命令。它实质上是在为整个SoC的测试架构制定一份“宪法”规定了谁可以接入、如何接入、何时接入。第一步是定义SSN的“骨干网”Backbone。这通常是一条64位宽、跨die的全局总线。命令如下create_ssn_network -name ssn_backbone -width 64 -clock ssn_clk -reset ssn_rst这里ssn_clk必须是一个干净、低抖动的时钟源。我们强烈建议不要复用主系统时钟sys_clk而应单独生成一个专用于SSN的PLL输出其相位噪声Phase Noise在1MHz offset处应优于-120dBc/Hz。因为SSN总线的建立/保持时间窗口在400MHz下仅有几百皮秒任何时钟抖动都会直接转化为时序裕量的损失。第二步是定义“接入点”Access Point, AP。AP是SSN与各个IP核扫描链的连接枢纽。关键参数是-max_scan_chain_length它决定了该AP能容纳的最大扫描链长度。这个值不能拍脑袋定。你需要先用report_scan_chain命令统计每个IP核的实际扫描链长度然后按“同类聚合”原则分组。例如所有ARM Cortex-A78核的扫描链长度都在18k~22k之间那么AP的-max_scan_chain_length就设为22k并预留10%余量即24.2k向上取整为25k。如果设得太小后续绑定IP时会报错设得太大则浪费SSN资源增加MUX复杂度。第三步是“绑定”Binding。这是最易出错的环节。命令是bind_ssn_ap -ap ap_dsp0 -scan_chain dsp0_scan_chain -mode shared注意-mode shared参数。它告诉Tessent这个AP将被多个IP核共享。但共享的前提是这些IP核的扫描链必须满足“同构性”Isomorphism即它们的扫描单元类型如SDFF vs. SDFFX2、扫描使能逻辑、以及扫描捕获时序必须完全一致。Tessent不会自动检查这个它只检查链长。所以你必须在绑定前手动比对所有待绑定IP核的RTL代码。我们曾在一个项目里因一个IP核的扫描使能信号多了一级异步复位清除逻辑导致绑定后仿真失败排查了三天才发现根源。3.2 EDT配置选择压缩算法就是选择测试策略Tessent EDT提供了多种压缩算法最常用的是Mentor的“Logic BIST with Compression”LBC和Synopsys的“TestKompress”。在400MHz总线下我们强烈推荐使用LBC原因有二一是其解压引擎的时序路径更短更容易满足400MHz下的建立时间要求二是其压缩率对“随机故障”Random Fault覆盖更优这对高可靠性SoC至关重要。配置LBC的关键命令是create_edt_compressor -name edt_comp_lbc -algorithm lbc -width 64 -clock edt_clk这里的-width 64必须与SSN骨干网宽度严格一致否则数据对齐会出错。edt_clk同样需要一个独立、低抖动的时钟源。LBC有一个核心参数叫-compression_ratio它并非一个固定值而是一个目标值。Tessent会根据你的设计复杂度和故障模型自动调整内部LFSR的多项式和解压逻辑。我们实测发现对于一个中等复杂度的SoC约50M gate将-compression_ratio设为10:1实际能达到的平均压缩比是8.3:1设为15:1实际是12.1:1。但后者会导致EDT解压引擎的面积增加23%功耗上升18%。因此我们建议采用“阶梯式验证法”先用10:1跑通全流程确认功能正确再逐步提高到12:1、13:1监控每次迭代后的report_edt_metrics输出重点关注“Decompression Latency”和“Max Frequency”两项。一旦“Max Frequency”低于400MHz就必须回退。3.3 RTL层面的必要修改让DFT“长”在芯片里很多工程师以为DFT配置做完就结束了殊不知真正的战场在RTL。SSN和EDT都需要在RTL中插入特定的硬件模块和接口信号。首先是SSN的“接入控制器”AP Controller。它不是一个简单的wrapper而是一个带有状态机的模块负责管理AP的请求、仲裁和数据路由。你必须在顶层RTL中例化它并连接其AXI-lite配置总线。关键信号包括ap_req_i[31:0]: 来自IP核的接入请求信号每一位代表一个IP核。ap_grant_o[31:0]: SSN分配给IP核的授权信号。ssn_data_i[63:0]: 从SSN总线输入的测试数据。ssn_data_o[63:0]: 向SSN总线输出的测试响应。其次是EDT的“ROM初始化”。EDT的测试向量ROM不是空白的它必须在芯片上电时由Boot ROM或EFUSE加载初始内容。这意味着你的SoC启动流程中必须有一段固件代码负责将EDT向量从Flash拷贝到EDT ROM中。这段代码的执行时间会直接影响芯片的启动时间。我们做过一个量化分析对于一个1MB的EDT向量ROM采用DMA方式拷贝耗时约8ms采用CPU逐字拷贝耗时达120ms。因此在系统架构阶段就必须为EDT ROM分配一个支持DMA的总线主设备Bus Master。最后也是最容易被忽视的是“测试模式引脚”的复用。SSN和EDT都需要额外的控制信号如ssn_mode,edt_enable,edt_start。这些信号不能简单地连到一个GPIO上而必须通过一个“测试模式解码器”Test Mode Decoder来生成。这个解码器的RTL代码必须经过严格的门级仿真Gate-level Simulation验证确保在所有工艺角FF/SS/TT下其输出信号的建立/保持时间都满足SSN/EDT模块的要求。我们曾在一个项目里因解码器中一个未约束的组合逻辑路径在SS工艺角下延迟超标导致edt_start信号在edt_clk上升沿后350ps才稳定而EDT模块要求的建立时间是400ps结果测试永远无法启动。3.4 物理实现协同DFT不是后端的事是前后端的“联合作战”SSN和EDT的物理实现是DFT工程师与后端工程师必须坐在一起讨论的议题。核心矛盾点在于SSN的全局总线会与电源网络Power Grid和时钟树Clock Tree产生严重的布线资源竞争。我们的经验是必须在布局布线Place Route的早期阶段就为SSN总线预留“黄金走线层”。在典型的16nm工艺中我们指定M5/M6层Metal 5/6为SSN专用层因为这两层具有最低的电阻率和最佳的层间耦合特性。同时必须在这些层上为SSN总线设置比普通信号线宽50%的金属线宽例如普通信号线宽0.12μmSSN线宽0.18μm并强制要求其周围2μm内不得有任何其他信号线以最小化串扰。另一个关键点是“时钟树综合”CTS。SSN和EDT的时钟必须与主系统时钟树物理隔离。我们采用“双时钟树”策略主系统时钟树使用M7/M8层而SSN/EDT时钟树则使用M3/M4层并在两棵树的交界区域插入一层完整的屏蔽地线Shielding Ground Ring其宽度至少为2μm。这个屏蔽环必须在CTS之前就定义好并作为硬性约束Hard Constraint输入到布局工具中。否则CTS工具会为了追求时钟偏差Skew最小化而将SSN时钟树的buffer塞进主时钟树的缝隙里导致严重的电源噪声耦合。最后关于功耗。EDT解压引擎在工作时会在极短时间内产生巨大的瞬态电流di/dt。如果电源网络设计不当会引起严重的IR Drop导致SSN总线上的信号电压跌落进而引发误采样。我们的解决方案是在EDT模块的电源PAD附近密集放置100nF的去耦电容Decoupling Capacitor且这些电容的焊盘必须直接连接到最底层的电源/地平面VDD/VSS Plane走线长度不得超过50μm。这个细节在很多项目的后仿真Post-layout Simulation中才被发现但那时修改成本极高。4. 实操过程与核心环节实现从网表生成到量产测试的完整闭环4.1 流程概览一个不能跳过的七步闭环整个Tessent SSNEDT的实操流程是一个严谨的七步闭环任何一步的疏忽都会在后续环节暴露出来且代价高昂。这七步是RTL准备与约束在RTL阶段完成SSN/AP Controller的例化、EDT ROM的声明、以及所有测试模式信号的定义与约束。网表生成与DFT插入使用Synopsys DC或Cadence Genus综合工具生成带DFT逻辑的网表并确保SSN/EDT的时序约束已正确传递。Tessent配置与SSN/EDT生成在Tessent Shell中完成SSN网络定义、AP绑定、EDT压缩器创建并生成对应的TCL脚本和配置文件。测试向量生成与验证运行Tessent ATPG生成EDT向量并在RTL和门级两个层次上进行功能仿真Functional Simulation和时序仿真Timing Simulation。物理实现与SI/PI分析在Innovus或ICC2中完成布局布线并进行严格的信号完整性SI和电源完整性PI分析重点验证SSN总线的眼图和EDT模块的IR Drop。后仿真与签核将物理实现后的网表、SDF时序文件、以及SPF电源文件导入VCS或Questa进行全芯片的后仿真确认测试功能100%正确。ATE测试程序开发与量产导入基于生成的EDT向量和SSN配置编写ATE测试程序并在量产测试机台上完成调试与验证。这个流程中步骤4和步骤5是两大“高压区”。下面我将聚焦于这两个环节分享我们踩过的坑和总结出的实操技巧。4.2 测试向量生成仿真验证的“三重门”校验法生成EDT向量后绝不能直接进入后端。必须通过“三重门”校验缺一不可。第一重门RTL级功能仿真。这是最基础的验证目的是确认EDT向量在理想时序下能否正确激励和捕获DUT。关键是要搭建一个完整的测试平台Testbench其中必须包含DUT含SSN/AP Controller/EDT模块ATE Model模拟ATE的向量加载和响应采集SSN Bus Monitor一个专门的monitor用于实时抓取SSN总线上的64位数据流并将其与EDT向量ROM中的预期数据进行逐bit比对我们发现仅靠波形查看器Waveform Viewer是远远不够的。因为EDT向量是高度压缩的一个向量周期内可能包含多个IP核的并行操作波形会非常混乱。而SSN Bus Monitor会生成一个CSV格式的详细日志记录每一拍cycle的总线数据、AP授权状态、以及各IP核的扫描捕获结果。这个日志是我们判断向量是否正确的唯一依据。第二重门门级时序仿真。这是最关键的验证它要回答一个问题“在真实的时序延迟下EDT向量还能工作吗”这里有两个致命陷阱陷阱一SDF反标不完整。很多工程师只反标了-delay却忽略了-sdf_max和sdf_min。在400MHz下SSN总线的建立时间Setup Time和保持时间Hold Time的margin可能只有几十皮秒。如果只用-delay仿真器会用一个平均值掩盖了最坏情况Worst-case下的时序违规。我们必须强制使用-sdf_max进行setup check用-sdf_min进行hold check。陷阱二电源噪声模型缺失。门级仿真必须加载SPFStandard Power Format文件该文件描述了芯片在不同工作状态下电源网络的电压跌落IR Drop和地弹Ground Bounce情况。如果缺失SPF仿真器会假设电源电压恒定在1.0V而现实中EDT解压引擎开启瞬间局部电压可能跌至0.92V这会直接导致SSN接收器的阈值电压漂移造成误判。我们曾在一个项目里因SPF文件未加载门级仿真100%通过但流片后测试失败根源就是IR Drop导致的SSN误采样。第三重门SSN总线协议仿真。这是最容易被忽略的一环。Tessent生成的向量是符合IEEE 1687IJTAG标准的。但你的SSN AP Controller RTL是否100%兼容这个标准我们必须用一个独立的IJTAG协议验证器Protocol Verifier来检查。这个验证器会模拟一个标准的IJTAG TAP控制器向你的AP Controller发送一系列预定义的指令如IDCODE,SAMPLE/PRELOAD,EXTEST并检查其响应是否符合规范。我们曾发现某家IP供应商提供的AP Controller RTL在处理EXTEST指令时其状态机存在一个微小的bug会导致在特定条件下AP的ap_grant_o信号延迟一个周期这个bug在功能仿真中完全无法暴露只有在IJTAG协议仿真中才被揪出。4.3 物理实现与SI/PI分析眼图与IR Drop的“显微镜”级解读当物理实现完成后拿到Innovus生成的si_analysis报告不要只看那句“SI Check Passed”。你必须像一个显微镜操作员一样深入到每一个细节。SSN总线眼图分析。我们关注三个核心指标眼高Eye Height在UIUnit Interval即2.5ns的中心时刻眼图垂直方向的张开度。在400MHz下我们要求眼高 ≥ 0.7VDDVDD0.8V则眼高≥0.56V。低于此值接收器的噪声容限Noise Margin将急剧下降。眼宽Eye Width在眼图水平方向电压高于0.5VDD的持续时间。我们要求眼宽 ≥ 0.6 UI即1.5ns。这直接关系到建立/保持时间的裕量。抖动Jitter分为确定性抖动DJ和随机抖动RJ。DJ主要来自串扰和电源噪声RJ来自热噪声。我们要求总抖动TJ DJ RJ ≤ 0.2 UI即500ps。如果TJ超标必须回到布局阶段检查SSN总线附近的开关活动Switching Activity高的模块并为其添加屏蔽或增加间距。EDT模块IR Drop分析。这不是看一个平均值而是要看“热点图”Hotspot Map。我们重点关注两个区域EDT解压引擎的电源PAD附近这里必须是IR Drop的“冷区”Cold Zone即电压跌落 20mV。如果此处出现50mV的跌落说明去耦电容不足或走线太长。SSN总线接收器的电源PAD附近这里是“温区”Warm Zone允许跌落30~40mV但必须确保其与EDT PAD之间的电压差 10mV。因为SSN总线的参考电压正是由这两个PAD共同决定的。如果电压差过大会导致接收器的共模电压Common-mode Voltage偏移从而影响判决阈值。我们有一个独创的“IR Drop敏感度测试”在后仿真中人为地将EDT模块的电源电压从0.8V降低到0.75V然后运行全套EDT测试向量。如果测试覆盖率Coverage下降超过0.1%就说明IR Drop设计存在风险必须加强去耦。这个测试比单纯看IR Drop报告要有效得多。4.4 ATE测试程序开发从向量到量产的“最后一公里”当芯片流片回来拿到wafer进入ATE测试阶段这才是真正的“大考”。很多项目在这里翻车不是因为设计错了而是因为ATE程序没写对。核心难点在于ATE并不“知道”SSN和EDT的存在。它只认标准的STIL向量。因此我们必须在ATE程序中模拟SSN的“握手协议”和EDT的“启动序列”。一个典型的EDT启动序列如下将芯片置于TEST_MODE。通过JTAG或专用测试端口向EDT ROM的地址0x0000写入启动向量Start Vector。等待edt_ready信号置高表明EDT硬件已初始化完毕。拉高edt_start信号启动测试。监控edt_done信号等待测试结束。通过SSN总线读取各IP核的测试响应Response。这个序列必须被精确地编码进ATE的测试程序里。我们使用的平台是Advantest V93000其Sequence语言SQD支持复杂的条件跳转和信号监控。关键技巧是edt_ready和edt_done信号的采样不能用简单的“wait for signal high”而必须用“wait for signal high for at least 3 cycles”以滤除毛刺。SSN响应读取的时序edt_done置高后SSN总线上的响应数据并不会立刻稳定。我们必须在edt_done之后插入一个精确的delay 20ns然后再开始读取ssn_data_i[63:0]。这个20ns是EDT解压引擎内部状态机切换到“响应输出”模式所需的最小时间它由Tessent的report_edt_timing报告给出而非凭经验猜测。最后量产导入时最大的挑战是“测试时间优化”。EDT向量虽然压缩了但ATE的向量加载时间Vector Load Time依然存在。我们的解决方案是将EDT向量ROM的内容预先烧录到ATE的板载DDR内存中而不是每次都从硬盘加载。这能将单次测试的向量加载时间从120ms缩短到8ms。这个优化需要ATE工程师和DFT工程师紧密配合共同修改ATE的底层驱动。5. 常见问题与排查技巧实录那些让你彻夜难眠的“幽灵Bug”5.1 问题速查表高频故障现象与根因定位故障现象可能根因快速定位方法解决方案EDT测试覆盖率Coverage比预期低5%以上1. 某些IP核的扫描链未被正确绑定到SSN AP2. EDT压缩算法对特定故障模型如Bridge Fault覆盖不足3. RTL中存在未被DFT工具识别的“黑盒”逻辑运行report_ssn_binding检查所有IP核是否都在bound列表中运行report_edt_fault_coverage -detail查看低覆盖率的具体故障类型重新检查RTL中该IP核的扫描使能逻辑更换EDT算法为testkompress在RTL中为黑盒逻辑添加dft_signal属性SSN总线在400MHz下测试失败率Failure Rate随温度升高而急剧上升1. SSN总线的端接电阻Termination Resistor值未随温度补偿2. EDI模块的电源网络Power Grid在高温下IR Drop加剧在不同温度点25°C, 85°C, 125°C下分别运行si_analysis对比眼图张开度变化更换为温度系数TCR 100ppm/°C的精密电阻在高温区域增加电源网格密度Grid DensityATE测试时edt_start信号拉高后edt_done永不置高1. EDT ROM未被正确初始化Boot ROM代码未执行2.edt_clk时钟质量差存在过多抖动3.edt_rst复位释放时序不满足要求使用示波器测量edt_clk的相位噪声测量edt_rst从低到高到edt_clk第一个有效边沿的时间检查Boot ROM固件更换低抖动时钟源在edt_rst释放后插入一个delay 100ns的硬件延时电路后仿真通过但流片后SSN总线出现大量误码Bit Error1. 物理实现中SSN总线的走线长度未做匹配Length Matching2. PCB板上SSN连接器的阻抗不连续运行report_net_length检查SSN总线所有64位信号的走线长度差用TDRTime Domain Reflectometry测试PCB连接器的S参数在布局阶段强制要求SSN总线所有位的走线长度差 100μm为PCB连接器添加阻抗匹配电路5.2 独家避坑技巧来自产线的血泪教训技巧一“SSN总线长度匹配”的隐藏陷阱。很多工程师知道要匹配长度但只匹配了“走线长度”却忽略了“器件引脚延迟”Pin Delay。一个BGA封装的IO Pad其内部延迟可能高达15ps。如果SSN总线的64位信号分别连接到不同的IO Bank那么即使走线长度完全一致实际到达接收器的时间也可能相差数十皮秒。我们的解决方案是在Tessent配置中使用-pin_delay参数为每个SSN信号手动指定其IO Pad的典型延迟值并让Tessent在生成时序约束时自动将其纳入考量。技巧二“EDT向量ROM”的版本管理灾难。EDT向量ROM不是一次写入就永远不变的。随着设计迭代向量会更新。但我们曾在一个项目里因ATE工程师和DFT工程师使用了不同版本的ROM镜像导致量产测试时一半芯片Pass一半Fail。根本原因是ROM镜像没有唯一的哈希值Hash Value标识。从此我们立下铁律每一次EDT向量生成都必须用sha256sum计算其哈希值并将该哈希值作为注释Comment硬编码在ATE测试程序的头部。这样任何版本混淆都能在测试开始前就被发现。技巧三“测试模式解码器”的亚稳态Metastability防护。test_mode信号通常来自一个外部引脚它在芯片上电时可能处于不确定状态。如果这个信号直接进入SSN/AP Controller的状态机会引发亚稳态导致整个测试系统挂死。我们最初的RTL设计只加了一个两级触发器Two-stage Flip-flop做同步。但在SS工艺角下一级同步器的MTBFMean Time Between Failure仅为10^6小时远低于芯片的寿命要求10^9小时。最终方案是采用三级触发器并在第三级后加入一个“同步释放”电路Synchronized Release Circuit该电路会检测三级触发器的输出是否稳定了至少5个test_clk周期才将其作为最终的test_mode信号。这个小小的改动将MTBF提升到了10^12小时。技巧四“ATE向量加载”的隐式时序冲突。
返回列表