尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Memory-on-Logic堆叠测试:DFT架构、ATPG与JTAG工程实践

Memory-on-Logic堆叠测试:DFT架构、ATPG与JTAG工程实践 1. 从一颗芯片的“叠罗汉”说起Memory-on-Logic堆叠测试到底难在哪第一次接触3D IC测试的人多半会被“Memory-on-Logic”这个词组唬住。拆开看其实不复杂一颗逻辑裸片Logic Die上面直接键合一颗或多颗存储裸片Memory Die中间靠微凸块和硅通孔TSV做垂直互连形成一个立体结构。逻辑部分负责计算和控制存储部分负责数据吞吐两者物理上贴在一起走线距离从毫米级压缩到微米级带宽和功耗收益立竿见影。但做测试的人看到这个结构第一反应往往是皱眉。为什么因为传统2D芯片的测试逻辑很清晰晶圆测试Wafer Sort挑出坏die封装完再跑一遍终测Final Test两道关卡各管各的。到了3D堆叠场景这套流程直接失效——存储裸片和逻辑裸片在键合之前各自都是好的键合之后却可能因为TSV断裂、微凸块虚焊、热应力翘曲等问题变成废品。更麻烦的是一旦堆叠完成内部节点绝大多数不再有物理探针可以触碰你没法像2D时代那样拿探针去戳每一个关键信号。这就是DFTDesign for Testability可测性设计在3D IC领域被推到台前的根本原因。DFT的核心思路是既然外部探针够不着那就把测试逻辑做进芯片内部让芯片自己配合测试。具体到Memory-on-Logic堆叠需要解决的核心问题包括逻辑裸片的扫描链如何延伸到存储裸片的接口边界TSV互连的连通性怎么验证堆叠后的存储阵列如何做全速ATPGAutomatic Test Pattern Generation自动测试向量生成以及JTAGJoint Test Action Group边界扫描链路在三维结构下如何重新组织。这篇文章面向的是有一定DFT基础的工程师——你可能做过2D SoC的扫描链插入和ATPG但还没系统接触过3D堆叠场景也可能正在负责一个Memory-on-Logic项目的测试方案设计需要一份能直接参考的工程实践记录。我会从架构设计、核心细节、实操流程到问题排查把这条链路完整走一遍尽量把每个决策背后的“为什么”讲清楚。2. 整体方案设计为什么DFT架构要在键合前就定好2.1 3D堆叠测试的三个阶段与DFT介入时机Memory-on-Logic的测试流程通常分三个阶段每个阶段对DFT的需求完全不同阶段一裸片级测试Pre-Bond Test。逻辑裸片和存储裸片各自在晶圆状态下做测试。逻辑裸片跑标准扫描ATPG存储裸片跑存储器BISTBuilt-In Self-Test。这个阶段DFT架构跟2D芯片差别不大但有一个关键约束逻辑裸片上所有将要连接到TSV的接口引脚必须在这一阶段就被扫描链覆盖否则键合后这些引脚就“失联”了。阶段二键合后测试Post-Bond Test。两颗裸片通过TSV和微凸块连接完毕此时需要验证垂直互连的连通性和完整性。这个阶段是3D IC DFT的核心难点因为TSV本身没有有源器件你没法直接对它做扫描。常见做法是在TSV两端各放一个测试wrapper cell逻辑侧通过扫描链控制存储侧通过边界扫描或专用测试模式响应形成一条穿越堆叠界面的“测试通路”。阶段三封装后终测Final Test。整个堆叠体封装完成后跑全功能测试和系统级测试。这个阶段JTAG链路是主要入口通过IEEE 1149.1标准接口访问内部所有测试资源。注意DFT架构必须在RTL设计阶段就确定不能等到物理设计再补。原因很简单——TSV的测试wrapper cell需要占用逻辑裸片的面积和布线资源存储裸片的测试接口需要提前定义协议这些改动越晚做代价越大。我见过一个项目因为键合后才发现TSV测试覆盖不足不得不重新流片逻辑裸片损失了整整一个季度。2.2 为什么选择“共享总线分层TAP”的DFT架构在3D堆叠场景下JTAG TAPTest Access Port控制器的组织方式有两种主流方案方案A单TAP集中控制。整个堆叠体只有一个TAP控制器位于逻辑裸片存储裸片的测试资源通过TSV延伸到逻辑侧统一管理。优点是控制逻辑简单JTAG链路只有一条。缺点是TSV数量需求大因为所有测试信号都要穿过堆叠界面。方案B分层TAP共享总线。逻辑裸片和每个存储裸片各有一个精简TAP控制器通过一条共享测试总线Shared Test Bus互联。逻辑侧TAP作为主控制器存储侧TAP作为从控制器指令和数据通过共享总线分发。优点是TSV占用少因为共享总线可以用较少的信号线实现多裸片寻址缺点是控制协议更复杂需要处理多TAP的指令同步问题。实际工程中方案B更常见尤其是存储裸片数量超过两颗时。原因在于TSV是3D IC最昂贵的资源之一——每个TSV占用面积、影响良率、增加寄生电容。用共享总线把测试信号复用起来能把TSV需求从几十根降到几根这笔账怎么算都划算。共享总线的具体实现通常是一条双向数据线加一条时钟线和一条控制线配合简单的时分复用协议。逻辑侧TAP把指令和测试数据打包成帧通过共享总线广播到所有存储裸片每个存储裸片根据帧头中的地址字段判断是否响应。这套机制跟JTAG标准里的星型扫描Star Scan思路类似但针对3D堆叠做了精简。2.3 存储裸片的测试wrapper设计要点存储裸片的测试wrapper是整个DFT架构中最需要仔细设计的部分。它的核心职责有三个第一在裸片级测试时隔离存储阵列让BIST能独立运行第二在键合后测试时暴露TSV接口让逻辑侧能验证互连第三在终测时把存储阵列重新接入系统总线做全速功能测试。Wrapper的硬件结构通常包括边界扫描寄存器每个TSV接口对应一个扫描触发器串成一条扫描链。逻辑侧通过这条链读写TSV状态。测试模式选择器根据当前测试阶段选择存储阵列的输入来源——来自BIST、来自TSV直通、还是来自系统总线。BIST控制器接口在裸片级测试时BIST控制器直接驱动存储阵列在键合后测试时BIST控制器被旁路存储阵列的输入切换到TSV直通路径。这里有一个容易踩的坑wrapper的扫描链长度必须与逻辑侧扫描链匹配。如果逻辑侧扫描链是1000位存储侧wrapper链是800位ATPG工具在生成跨裸片测试向量时会因为链长不匹配而报错。解决办法是在wrapper链中插入填充位Padding Bit或者在逻辑侧做链长适配。我个人的经验是在架构定义阶段就把两侧链长对齐比后期打补丁省事得多。3. 核心细节解析ATPG、JTAG与TSV测试的工程实现3.1 跨裸片ATPG的向量生成策略ATPG在2D芯片上的工作方式很直接工具读取网表识别故障模型Stuck-at、Transition Delay、Bridge等生成激励向量通过扫描链灌入芯片再通过扫描链读出响应比对期望值。到了3D堆叠场景ATPG面临两个新问题问题一跨裸片故障模型如何定义。TSV和微凸块的故障模式跟传统CMOS逻辑不同。TSV可能出现的故障包括开路Open、短路Short-to-Neighbor、电阻性开路Resistive Open、以及热循环导致的间歇性故障。这些故障在ATPG中需要用自定义故障模型来描述不能直接套用Stuck-at模型。问题二跨裸片向量如何生成。逻辑裸片的扫描链和存储裸片的wrapper链在物理上是分开的但测试时需要串成一条通路。ATPG工具需要支持“分层网表”输入——把两颗裸片的网表合并成一个扁平化网表TSV作为内部节点处理。这样工具才能生成穿越堆叠界面的测试向量。实际操作中我通常采用“分而治之”的策略先对逻辑裸片单独跑ATPG覆盖率做到95%以上再对存储裸片单独跑BIST覆盖率做到99%以上最后针对TSV互连单独生成一组定向测试向量。这组定向向量不需要追求高覆盖率只需要覆盖TSV的开路和短路故障即可。这样做的好处是ATPG运行时间可控而且调试时容易定位问题——如果终测失败可以快速判断是逻辑问题、存储问题还是互连问题。3.2 JTAG链路在堆叠结构下的重新组织JTAG在3D IC中的角色比2D时代更重要因为它是封装后访问内部测试资源的唯一入口。但标准IEEE 1149.1定义的TAP状态机和指令集是针对单裸片设计的直接套用到堆叠结构会遇到几个问题TAP控制器的级联。多个裸片的TAP控制器如果简单级联TDI到TDO的路径会变得很长测试时钟频率上不去。解决方案是采用“星型”拓扑——逻辑侧TAP作为主控制器存储侧TAP的TDI和TDO不直接串联而是通过共享总线由主控制器转发。这样JTAG链路的物理长度可控时序收敛更容易。指令集的扩展。标准JTAG指令如BYPASS、IDCODE、SAMPLE/PRELOAD在堆叠场景下需要扩展。比如需要新增一条指令来选择目标裸片类似地址广播还需要一条指令来配置TSV测试模式。这些自定义指令通过JTAG的私有指令空间实现不破坏标准兼容性。时序收敛的挑战。JTAG时钟TCK在3D堆叠中需要穿越TSVTSV的寄生电容会导致时钟偏斜。实测中如果TCK频率超过10MHzTSV上的信号完整性就会明显劣化。解决办法是在逻辑侧TAP中做时钟再生成——TCK在逻辑裸片内部重新缓冲后再通过TSV送到存储裸片而不是直接穿透。3.3 TSV测试的专用方法环形振荡器与扫描链结合TSV本身没有逻辑功能测试它需要专门的结构。工程上常用的方法有两种方法一环形振荡器Ring Oscillator法。在TSV两端各放一个反相器加上使能控制构成一个环形振荡器。TSV连通时振荡器起振输出频率与TSV的RC延迟相关TSV开路时振荡器不起振。通过测量振荡频率不仅能判断连通性还能评估TSV的电阻和电容参数。这种方法的优点是灵敏度高能检测电阻性开路缺点是需要额外的模拟测量电路测试时间较长。方法二扫描链直通法。在TSV两端各放一个扫描触发器逻辑侧的触发器通过扫描链写入数据存储侧的触发器通过扫描链读出数据。如果读写一致说明TSV连通如果不一致说明TSV故障。这种方法的优点是测试速度快可以直接复用数字ATPG流程缺点是无法检测电阻性开路——如果TSV电阻增大但未完全断开逻辑值可能仍然正确。实际项目中我通常两种方法都用先用扫描链直通法做快速筛查覆盖率做到90%以上再用环形振荡器法对关键TSV做精细测量。这样兼顾了测试效率和故障检测能力。4. 实操流程从RTL到终测的完整DFT实现路径4.1 RTL阶段的DFT架构插入这个阶段的核心任务是把测试逻辑做进RTL代码。具体步骤包括第一步定义测试接口。在逻辑裸片的顶层模块中定义JTAG端口TCK、TMS、TDI、TDO、TRST、共享总线端口Test_Bus_Data、Test_Bus_Clk、Test_Bus_Ctrl、以及TSV接口的测试wrapper端口。这些端口在RTL中要显式声明不能等到综合时再补。第二步插入扫描链。使用DFT Compiler或类似工具对逻辑裸片的所有功能触发器做扫描替换串成扫描链。扫描链的数量和长度需要根据测试时间预算和布线拥塞情况折中。我的经验是扫描链数量控制在16到32条之间比较合适——太少会导致测试时间过长太多会增加布线压力和TAP控制复杂度。第三步插入TSV wrapper。对每个TSV接口在逻辑侧和存储侧各插入一个wrapper cell。逻辑侧wrapper cell串入逻辑扫描链存储侧wrapper cell串入存储扫描链。两侧wrapper cell的控制信号由TAP控制器统一管理。第四步插入BIST控制器。存储裸片的BIST控制器在RTL中实例化接口包括BIST使能、BIST启动、BIST结果输出。BIST控制器在裸片级测试时激活在键合后测试时旁路。实操心得RTL阶段最容易忽略的是测试模式下的时钟和复位处理。3D堆叠场景下逻辑裸片和存储裸片可能使用不同的时钟域测试时需要做时钟切换。我建议在RTL中显式例化一个测试时钟多路选择器Test Clock MUX由TAP控制器控制切换避免综合工具自动插入不可控的时钟门控。4.2 综合与物理设计阶段的DFT约束RTL插入完成后进入综合和物理设计阶段。这个阶段DFT相关的约束主要包括扫描链重排序Scan Chain Reordering。综合后的网表中扫描链的顺序可能不是最优的——工具默认按触发器名称排序可能导致布线绕远。物理设计阶段需要根据布局信息对扫描链重新排序把物理上相邻的触发器串在一起减少布线长度。这一步对3D IC尤其重要因为TSV附近的布线资源非常紧张。TSV的DFT约束。TSV在物理设计中被当作宏单元处理需要设置dont touch属性防止工具在优化时移动或删除。同时TSV的测试wrapper cell需要设置固定的布局位置紧贴TSV放置减少测试信号的走线延迟。时序约束。测试模式下的时序约束比功能模式更严格因为扫描链的移位操作会在所有触发器上同时翻转导致动态压降IR Drop和功耗问题。需要在综合和物理设计阶段做测试模式下的功耗分析必要时插入扫描链分段使能Scan Chain Segment Enable把同时翻转的触发器数量控制在安全范围内。4.3 键合后测试的向量生成与调试键合后测试的向量生成是整个流程中最复杂的环节。具体操作如下第一步合并网表。把逻辑裸片和存储裸片的网表合并成一个扁平化网表TSV作为内部节点。合并时需要注意端口映射——逻辑侧的TSV端口和存储侧的TSV端口要正确对接。第二步定义跨裸片故障模型。在ATPG工具中定义TSV的故障模型包括开路、短路、电阻性开路。对于电阻性开路需要设置一个电阻阈值通常取1kΩ到10kΩ超过阈值的TSV判定为故障。第三步生成定向测试向量。针对TSV互连生成定向向量。具体做法是在逻辑侧扫描链中写入一组Walking-1或Walking-0模式通过TSV传到存储侧在存储侧扫描链中读出响应。如果响应与期望一致说明TSV连通否则定位到具体故障TSV。第四步调试与故障定位。如果测试失败需要定位故障TSV。调试方法包括用电子束探针E-Beam Probe直接测量TSV波形或者用红外热成像定位异常发热点。实际操作中电子束探针的分辨率有限对于微凸块级别的故障往往需要做切片分析Cross-Section才能最终确认。4.4 终测阶段的JTAG链路验证终测阶段的主要任务是通过JTAG接口验证整个堆叠体的功能。具体步骤包括第一步IDCODE读取。通过JTAG读取每个裸片的IDCODE确认堆叠体中所有裸片都能被正确识别。如果某个裸片的IDCODE读不出来说明该裸片的TAP控制器或TSV链路有问题。第二步边界扫描测试。跑IEEE 1149.1标准的边界扫描测试验证封装引脚与内部逻辑的连接。这一步主要检测封装级的开路和短路故障。第三步TSV连通性复测。通过JTAG指令切换到TSV测试模式重新跑一遍TSV连通性测试。这一步的目的是确认封装过程没有引入新的TSV故障。第四步全功能测试。通过JTAG加载功能测试向量跑全速功能测试。这一步的向量通常由系统级测试团队提供DFT团队负责把向量转换成JTAG可加载的格式。5. 常见问题与排查技巧实录5.1 跨裸片ATPG覆盖率不达标怎么办这是3D IC DFT中最常见的问题。覆盖率不达标的原因通常有三类原因一TSV故障模型定义不完整。如果只定义了开路和短路没有定义电阻性开路覆盖率会偏低。解决办法是补充电阻性开路故障模型并设置合理的电阻阈值。原因二跨裸片扫描链长度不匹配。如果逻辑侧扫描链和存储侧wrapper链长度不一致ATPG工具无法生成有效的跨裸片向量。解决办法是在wrapper链中插入填充位或者在逻辑侧做链长适配。原因三测试模式下的时钟约束不完整。如果ATPG工具在生成向量时没有正确约束跨裸片时钟生成的向量可能无法在实际芯片上正确执行。解决办法是在ATPG脚本中显式定义跨裸片时钟的时序关系。5.2 JTAG链路在终测时频繁掉线JTAG链路掉线通常表现为能读到IDCODE但跑边界扫描时TDO输出不稳定或者跑着跑着TAP状态机卡死。排查思路如下现象可能原因排查方法解决方案IDCODE可读边界扫描失败TSV信号完整性劣化用示波器测TSV上的TCK波形降低TCK频率或在逻辑侧做时钟再生成TDO输出不稳定共享总线竞争检查多TAP的指令同步逻辑增加总线仲裁机制确保同一时刻只有一个TAP驱动总线TAP状态机卡死TRST信号未正确复位检查TRST的复位时序在逻辑侧TAP中增加上电复位逻辑确保TRST可靠复位跑一段时间后掉线热应力导致TSV间歇性开路做温度循环测试监测TSV电阻变化优化键合工艺或增加TSV冗余设计5.3 测试模式下的功耗超标3D IC的散热能力比2D芯片差因为堆叠结构的热阻更大。测试模式下的功耗如果超标可能导致芯片过热甚至损坏。实测中扫描链移位操作是功耗大户——所有触发器同时翻转动态功耗可能是功能模式的3到5倍。解决办法包括扫描链分段使能把扫描链分成多段每次只使能一段减少同时翻转的触发器数量。降低测试时钟频率在功耗超标时把TCK频率从10MHz降到5MHz功耗可以降低约40%。优化测试向量顺序把翻转率高的向量分散排列避免连续高功耗向量导致局部过热。实操心得我建议在DFT架构定义阶段就做测试模式功耗预算把功耗指标分解到每个裸片和每条扫描链。这样在向量生成阶段就有明确的约束避免后期返工。5.4 存储裸片BIST在键合后失效存储裸片的BIST在裸片级测试时正常键合后却失效通常是因为BIST控制器的接口在键合后被TSV直通路径旁路但旁路逻辑没有正确配置。排查步骤通过JTAG读取存储裸片的测试模式寄存器确认当前处于键合后测试模式。检查BIST旁路逻辑的配置位是否正确写入。用扫描链直通法验证TSV连通性排除TSV故障。如果TSV正常但BIST仍失效检查BIST控制器的时钟是否在键合后测试模式下被正确门控。6. 写在最后一些踩坑之后的个人体会做3D IC DFT这些年最大的体会是架构定义阶段的决策质量直接决定了后期调试的痛苦程度。我见过太多项目因为RTL阶段没把TSV wrapper设计好导致键合后测试覆盖率上不去最后不得不改版流片。也见过因为JTAG链路拓扑没选对终测时TDO信号质量差到无法调试只能降频到1MHz勉强跑通。如果让我给正在做Memory-on-Logic项目的同行一个建议那就是在架构定义阶段多花两周时间做DFT方案评审把TSV测试、跨裸片ATPG、JTAG链路这三个核心问题讨论透。评审时拉上设计、测试、封装三个团队一起因为DFT方案会直接影响封装引脚定义和测试程序开发。这两周的时间投入后期能省下至少两个月的调试时间。另外一个小技巧在裸片级测试阶段尽量把TSV的测试wrapper也跑一遍。虽然此时TSV还没有连接但wrapper本身的逻辑功能可以提前验证。这样键合后如果TSV测试失败可以快速判断是wrapper问题还是TSV问题缩小排查范围。这个做法在多个项目中帮我省了不少调试时间推荐你也试试。
返回列表