1.SSN和ijtag的区别
简单来说,Stream Scan Network 和 IJTAG 是两种不同的 架构 或 方法 ,用于在芯片内部组织和访问多个 scan 链。它们的核心目标都是为了更高效地对芯片进行测试,但实现方式和侧重点有所不同。
1. 1核心定义与本质
| 特性 | Stream Scan Network (流扫描网络) | IJTAG (Internal JTAG) |
|---|---|---|
| 本质 | 一种测试数据传输架构 。它将多个 scan 链连接成一个或多个 "流",通过一个或少数几个端口进行高速、并行的数据输入 / 输出。 |
一种测试控制和访问架构 (基于 IEEE 1687 标准)。它在芯片内部构建一个分层的 JTAG 网络,用于灵活地控制和访问各种测试资源,包括 scan 链、BIST 控制器、传感器等。 |
| 核心思想 | 共享数据通道,并行操作 。强调数据传输的带宽和速度。 | 共享控制通道,灵活配置 。强调测试资源的可配置性和可访问性。 |
1.2. 架构与连接方式
-
Stream Scan Network:
- 结构: 通常由一个主控制器 和多个从
scan链组成。 - 连接: 从
scan链的输入端和输出端被 "串联" 或 "并联" 到主控制器的数据输入 (TDI) 和 数据输出 (TDO) 端口上。 - 操作: 主控制器可以同时向所有或一组
scan链移入相同的测试向量 ,并同时从它们那里移出响应数据。数据以连续的 "流" 形式传输。 - 类比: 想象一个水管网络,主水管(主控制器)连接到多个分支水管(
scan链)。你可以同时打开所有分支的水龙头,让水(测试数据)同时流入和流出。
- 结构: 通常由一个主控制器 和多个从
-
IJTAG:
- 结构: 基于 JTAG 标准,但在芯片内部进行了扩展。它引入了 Test Access Port (TAP) 、Test Control Block (TCB) 和 Test Data Register (TDR) 等概念。
- 连接: 各个测试资源(如
scan链、BIST 引擎)被封装成具有标准接口的模块。这些模块通过一个内部扫描网络 (Internal Scan Network, ISN) 连接到一个或多个主 TAP 控制器。 - 操作: 主 TAP 控制器通过发送特定的 JTAG 指令和数据,可以:
- 选择 并配置 网络中的某个特定 TCB。
- 通过被选中的 TCB 去访问 其控制下的
scan链或其他测试资源(例如,启动 BIST、读取传感器数据)。 scan数据的移入和移出是通过被选中的路径进行的,一次通常只针对一个或一组相关的资源。
- 类比: 想象一个带有多个房间的大楼,每个房间(测试资源)都有一扇门(TCB)。中央控制台(主 TAP)可以发送指令打开特定房间的门,然后与那个房间里的设备进行通信。
1.3. 关键区别
| 对比项 | Stream Scan Network | IJTAG |
|---|---|---|
| 主要目标 | 提高测试数据吞吐量 。通过并行加载 / 卸载多个 scan 链来缩短测试时间。 |
提高测试资源的可访问性和灵活性。提供一个统一的、可扩展的框架来管理各种测试资源。 |
| 数据传输 | 并行 。多个 scan 链同时移位。 |
串行(在选定路径上)。一次通常激活一条访问路径,但路径可以灵活切换。 |
| 控制方式 | 相对简单。通常由一个全局控制器发出同步控制信号。 | 非常灵活。通过 JTAG 指令进行复杂的配置和寻址。 |
| 资源共享 | 主要共享数据 I/O 通道。 | 主要共享控制通道,并能灵活地将数据通道连接到不同的资源。 |
| 适用场景 | - 芯片内部有大量结构相似的 scan 链 (例如,在高性能计算、GPU 中)。- 对测试时间非常敏感,需要最大化数据传输带宽。 |
- 芯片由多个不同 IP 核 组成,每个核有自己的测试需求。- 需要分层测试 (先测试 IP 核,再测试整个芯片)。- 需要访问多种类型的测试资源 (scan, BIST, 边界扫描,温度传感器等)。- 追求测试架构的标准化和可重用性。 |
| 复杂性 | 硬件实现相对简单。 | 硬件实现相对复杂,需要额外的 TCB 和网络逻辑。但提供了更强的软件可编程性。 |
| 标准 | 通常是自定义的架构。 | 遵循IEEE 1687 标准。 |
1.4.总结
- Stream Scan Network 像是一个高效的 "数据高速公路" ,它的设计目标是让大量
scan数据能够以最快的速度进出芯片,核心优势是并行性和高带宽。 - IJTAG 像是一个灵活的 "测试指挥系统" ,它的设计目标是提供一个统一、标准的方式来管理和访问芯片内部各种复杂的测试资源,核心优势是可配置性、可扩展性和灵活性。
在现代复杂的 System-on-Chip (SoC) 设计中,这两种架构并非完全互斥。有时,设计人员会将它们结合使用:例如,使用 IJTAG 作为顶层的测试控制和配置网络,而在某个需要高速测试的 IP 核内部,则可能采用 Stream Scan Network 来连接其内部的多个 scan 链,以实现最佳的测试效率。
1.5 个人理解
ijtag除了能串scanChain之外,还有控制功能。通过sib/tdr可以配置测试逻辑,选择哪些scanChain进行测试,除了scan还可以用于其他DFT测试。
SSN只用于scan测试灌pattern
ijtag的测试pattern只能串行的灌入一条或多条scanChain【此时多条scanChain是串联的】,如果需要更多的并行就需要多路jtag,tap等资源。代价较大。
SSN是可以并行的给多条scanChain灌pattern【每条scanChain也可以是多条子scanChain串联】
SSN的并行能力可以超过SSN总线的dataWidth,比如说SSN数据线有20根,通过分频,可以分出40路数据,给40条scanChain,这对IOPAD比较少的时候是有用的。
SSN有分频收益,主要是SSN clk可以跑的比ijtag高。
一般SSN不做控制,而是由ijtag来做。比如哪些scanChain并行测,哪些子scanChain做串联。scan/shift/capture的控制信号选择,生成等都是需要ijtag的。
SSN中最重要的组件SSH本身是有ijtag接口的,就是用于做控制通路,而且在SSH中,可以用ijtag控制,实际scan用ijtag还是ssn【具体见下章节】
另外SSN还可以进行片内在线做pattern的测试结果和golden patter的比较。
2.SSH(Stream Scan Host)
SSH是SSN网络中的重要组件,其结构如下:

总体的SSH要做以下工作:
busRegister 给参数 → FSM 按状态机走 → clkGen 发 N 个 SSCK → Register 完成并→串移位" ,把 ATE 并行数据变成 SSN 本地 burst 时序。
数据有三条通路:
1.正常SSN灌数据通路,数据从bus_in经过并串转换,给多bit scan_in,capture数据从多bit scan_out进入,在重组为SSN的packet,经bus_out输出。
2.loop_back通路,此时数据不进scanChain
3.bypass通路
图中没有画出来的是,ijtag可以完全接管SSH,此时ijtag的si mux到bus_in的某一bit,假设bus_in[0], so接到bus_out[0],此时对应的clk选择tck,控制信号选择ijtag这一路生成的即可。
可参考一篇sci的论文https://2024.sci-hub.se/8566/e8dbd01eb2ffb76382e53bcfcaaf2490/cote2020.pdf