欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

什么是 SSN(流式扫描网络)?

最编程 2024-07-12 20:07:10
...

        大型片上系统(SoC)设计的复杂性不断增加,这对包括测试设计(DFT)在内的所有IC设计学科都提出了挑战。为了缓解这些挑战,层次DFT被用作一种分而治之的方法,其中所有DFT实现,包括模式生成和验证,都是在核心级别而不是芯片级别完成的。然而,层次DFT本身已经不够了。DFT工程师必须在测试实现工作和制造测试成本之间做出权衡。

        本文介绍了测试流扫描网络(SSN)的基本组成部分,SSN是一种封装测试交付技术,旨在解耦核心级和芯片级DFT需求。有了SSN, DFT工程师就有了真正的SoC DFT解决方案,而无需在实现工作和制造测试成本之间做出妥协。

测试挑战

规划和布局 

        为了同时地测试一组核心,使用传统的pin-mux scan测试方法,scan输入和输出通道经过一组mux电路连接到芯片端口上。一般而言,可用于scan测试的IO 端口数目是有限的。哪些核心可以一起测试是基于mux网络的,因此必须在设计流程的早期阶段就确定下来。通过更复杂的mux网络可以实现更大的灵活性,但这可能会导致路由拥塞。有了更多的核和稳定数量可用于测试的芯片级引脚,就必须创建更多的核分组和访问配置。这会影响DFT的实现工作、硅面积、pattern重定向复杂性和测试时间。测试核心所需的测试周期数由压缩配置、扫描链的长度和每个核心的测试pattern数决定。测试计划的一个重要部分是确定哪些内核应该并发地一起测试,因为这通常是硬连接所决定的。在线性自底向上的流程中,扫描通道的数量和每个核心的压缩配置是固定的,这可能会导致次优结果和浪费测试带宽,如图1所示。通过迭代优化可以获得更优的结果,其中测试资源在一起测试的核心之间得到平衡。这种方法是资源密集型的,对于具有许多层次结构的复杂设计可能不切实际。对于在多种设计中使用的核心,在一种设计中最优的压缩配置在另一种设计中可能并不理想。

完全相同core处理

        为相同的core实例优化测试模式量的一种方法是将相同的pattern广播到来自相同*引脚的扫描输入。通常独立地观察输出,以保证测试覆盖率并确保可诊断性。由于每个核心实例至少需要一个输出通道,这就限制了可以并发测试的相同core的数量。另一个挑战是捕获时钟通常同时应用于所有core。这意味着扫描输入引脚和它驱动的所有相同核心实例之间的pipeline级数必须相等。在平铺的情况下,在core之外可能没有路由或逻辑,这可能具有挑战性。

Tile-based design with abutment

        Tile-based的布局进一步增加了DFT体系结构的复杂性和约束。Cores被设计成相互毗邻,相邻cores之间数据交互通过pin-pin的物理方式实现,跨cores之间的数据交互必须穿过它们之间阻隔的core,通过feedthrough的方式。Top-level的逻辑必须被放入到core里面,并作为core的一部分进行设计。     

SSN优势  

        SSN解耦了测试交付和core-level DFT需求。这意味着core-level压缩配置可以完全独立于芯片IO限制而定义。哪些cores将被同时测试是通过编程方式选择的,而不是硬连接的。这个概念极大地减少了DFT的规划和实现工作。SSN无需权衡DFT实现工作量和制造测试成本,无需昂贵的设计迭代就可以为SoC实现最优的测试数据时间和体量。使用SSN,core的压缩和扫描通道的数量是根据该core本身的最紧凑模式集来确定的。对于多个设计中使用的core,可以一次性配置压缩。SSN根据每个core的需求自动在活动内核之间分配可用带宽,消除测试数据中的空白(图2)。

        除了规划、实现和测试成本效益外,SSN体系结构简化了routing和timing closure,并完全兼容tile-based abutment设计。同时仍然支持所有ATPG模式类型和故障模型。SSN还兼容所有Tessent DFT方法和产品,并完全支持诊断和产量分析。

SSN技术和概念

        SSN是一种基于总线的扫描数据分布架构。图3显示了一个使用SSN的6核设计的简单示例。每个核心通常包含一个流扫描主机(SSH)节点(浅蓝色框)。SSH驱动本地扫描资源,数据通过SSN总线下发。图中只显示了一个压缩器/压缩器,但SSH节点可以与一个或多个EDT控制器、未压缩扫描链或两者的组合连接。

        每个SSH有两个外部接口:一个IEEE 1687 IJTAG接口和一个并行的SSN数据总线。在应用扫描测试模式之前,IJTAG网络用于配置SSN网络中的所有节点。每个节点都加载了与协议相关的信息,如活动总线宽度、它在驱动的节点系列中的位置、每个扫描模式的shift周期数、scan_enable转换时序信息等。

        在此设置之后,整个scan test pattern set将打包成数据在并行SSN总线上分发到各个cores。每个pattern set,SSH只编程一次,在此之后SSN总线装载scan测试数据。不需要在每个数据包中发送任何操作码或地址信息。每个SSH控制内核的本地扫描操作,包括加载/卸载和捕获阶段之间的转换。所有的扫描信号和EDT控制都是由内核本地的SSH生成的。

        SSN总线宽度根据芯片级可用于测试的引脚数目确定,与扫描核心的数量和大小以及每个核心中EDT控制器所需的通道数量无关。使用相同的并行总线宽度,每个核心具有相同的即插即用接口,允许SSN随着设计平面、核心数量或核心内容的变化而有效地扩展。

        对于SSN,核心的总线宽度和通道数是相互独立的。扫描测试数据以包格式通过总线同步传递到每个核心。一个核心可以接收每个数据包的比特数是由并行运行的核心的pattern统计数据通过算法确定的,但不能大于扫描(EDT)通道的数量。从测试器传递的数据可以被视为一个连续的包流,包可能围绕SSN总线边界。

        考虑图4所示的示例,其中同时测试两个块。Block A有5个扫描通道,每个移位周期加载/卸载5位。块B有四个通道。对于两个区块执行一个移位周期,必须交付9位。在传统的pin-mux扫描访问方法中,这将需要9个芯片级扫描输入引脚和9个扫描输出引脚。对于SSN,包大小设置为9位,与SSN总线宽度无关,在本例中为8位。在SSN中包数据传递的概念将在附录中介绍。

        SSN控制传递包数据从一个核心路由到下一个核心,同时动态控制哪些核心是活动的/非活动的/绕过的,这意味着可以在不改变硬件的情况下灵活地访问任何cores组合。与pin-mux架构不同,这种灵活性并不是以路由拥塞为代价的。没有必要在设计时尝试并预测如何对要并发测试的内核进行分组。无论是在一组核心上执行ATPG,还是从不同的核心重新定位模式,同一个SSN网络可以一次访问一个核心,同时访问所有核心,或者任何介于两者之间的访问。

Time multiplexing

        当并发驱动多个核心时,数据包通常跨越多个总线宽度,导致内部移位频率比SSN总线频率慢。在许多情况下,可以实现400MHz的SSN总线,但一般做不到通过芯片级引脚实现超过200MHz shift data。假设SoC有足够的引脚来实现64个扫描输入和64个扫描输出。一种选择是在整个芯片中实现64位总线,并以200mhz的频率运行。或者,如图5所示,数据可以是在扫描输入和第一个SSH之间添加了一个总线频率倍增器(BFM),将此输入流转换为32位,400 MHz总线。然后在整个芯片上使用这个32位总线,用32位总线连接所有SSH节点。在输出端,添加一个总线分频器(BFD)节点,将SSN输出总线转换回驱动输出引脚的200 MHz 64位总线。

Optimizing test time and data volume

        当ATPG在外部测试模式下与多个相互作用的内核一起运行时,必须对齐所有受影响内核的捕获周期。使用SSN,每个核心都可以独立移动,但是一旦所有核心完成扫描加载/卸载,捕获就会同时发生。在其他情况下,例如具有OCCs的wrapped coresATPG单独运行时,如果每个核心都能独立地在移位和捕获之间转换,则会更有效。具有短扫描链的核心不需要等待其他核心完成移位才能进行捕获。不同核心的模式计数通常存在显著的不平衡。传统的重定向方法会为模式较少的核心添加填充,导致数据,周期和测试时间的浪费。如果一个核心在模式集上需要的整体移位周期比其他核心少得多,那么它每个包可以发送更少的比特。

        例如,具有4个通道的核心不需要为每个数据包分配4位。它可以被压缩,每个包只发送1位,这样它就可以每四个包而不是每个包内部转换一次。结果是包的总数保持不变,但是包的大小减小了,加快了整体测试时间。

Effective testing of identical cores

        很多soc设计通过并行处理来实现高吞吐量,其中包含多个多次复制的核心。在pin-mux扫描架构中,扫描输入可以广播到相同的核心实例,但扫描输出通常是独立观察的,以确保无损映射和诊断的可观察性。SSN提供了一种可伸缩的方法,用于在几乎恒定的测试时间内测试任意数量的相同核心实例,而不依赖于可用的芯片级引脚的数量。在每个包中扫描输入数据、预期响应和比较/不比较掩码数据,如图6所示。

        每个相同的核心实例使用相同的包数据,因为它同步地在网络中移动。每个核心执行自己的芯片上比较。在TDO上观察到一个通过/失败的“粘滞”位。可选的每次移位累积状态可以添加到包中,并在SSN输出中观察到。

Tile-based designs

        SSN的方法设计之初就是为了支持tile-based abutment设计。一个核心的输出连接到下一个相邻核心的输入。具有SSN的芯片通常有一个贯穿所有核心的SSN数据路径(并行总线)。根据floorplan和pad位置的不同,在物理设计中实现多个物理上独立的数据路径可能更可取。每个数据路径也是可配置的,并且可以包括可编程的mux,包括或排除网络段,类似于在IJTAG网络中的段插入位(SIB)。

附录

        在SSN术语中,“包”指的是所有活动SSH节点执行单个内部扫描移位操作所需的所有扫描数据。SSN体系结构的关键是数据包的大小与SSN总线宽度无关。从测试器交付的SSN有效载荷可以被看作是一个连续的包流。考虑图7所示的示例,其中两个块同时测试。块A每移位周期加载/卸载5位(有5个EDT通道)。Block B有4个通道,每个移位周期加载/卸载4位。对于两个区块执行一个移位周期,必须交付9位。在传统的pin-mux扫描访问方法中,这将需要9个芯片级扫描输入引脚和9个扫描输出引脚。对于SSN,包大小设置为9位,与SSN总线宽度无关,在本例中为8位。两个区块每移动一次,就必须传递9个比特。每个9位包的前5位被编程为属于块A,每个包的后4位被编程为属于块b。这都是在模式生成时确定和编程的——它不是SSN逻辑中的硬编码。

        在使用IJTAG编程所有SSN节点之后,SSN交付一个连续的、重复的9位数据包流。只要block a从总线提取5位,它就执行一次内部移位操作。同理,对于块B,每次它累积4位。SSH被编程为每次扫描负载的移位计数,因此它可以识别何时执行移位,何时执行捕获。捕获涉及SSH生成的事件,例如取消scan_enable断言、应用通过OnCC捕获时钟,并重新断言扫描启用,为下一次扫描操作做准备。9位包的流被折叠成8位总线,没有浪费比特。前9位包占用总线的前8位并行字和第二个字的第1位(第二个测试周期)。每个8位总线字内的9位包的位置随着每个包旋转,因此第二个包在第一个包之后立即开始,占据第二个并行字的剩余7位和下一个并行字的2位。通常,携带扫描入数据到SSH节点的数据包的相同时隙也携带来自该节点的扫描出数据。当块A读取每个数据包的前5位时,它将它们替换为扫描出来的5位(有轻微的延迟)。

        任何数量的内部核心及其通道都可以通过窄至1位的SSN总线来控制。这是因为数据包可以根据需要任意宽,并且可以根据需要占用任意多的总线字。如果数据包比总线宽,并且占用多个总线字,则每个总线移位周期内核移位次数少于一次,但可以驱动所需的所有内核。在这个9位包和8位总线的例子中,块大约在每个总线/测试器时钟周期中移动。有时候,一个块可能会在一个给定的周期中忽略移位,因为它必须等待获得一个移位周期所需的所有位。如果common bus是1位宽而不是8位宽,它需要9个测试周期来扫描每个包。在某些情况下,包的大小小于扫描通道的总数。假设在图7的例子中,块A的测试周期比块b的要少得多。在这种情况下,为了优化整体带宽,不是为每个数据包分配5位给块A,而是分配更小的数量(例如3)。这减少了包大小并优化了总体测试时间。

 

推荐阅读