4. 边界扫描与结构测试
Agilex 器件采用球栅阵列(BGA)封装,焊球位于芯片底部,物理探针无法直接接触,传统在线测试(ICT)对 BGA 焊点开路、桥连的检出能力非常有限。边界扫描(Boundary Scan)通过在每个 I/O 单元旁串入边界扫描寄存器(BSR),把芯片引脚变成可观测、可控制的“虚拟探针”,从而在不接触焊球的情况下完成互连测试。本节围绕 IEEE 1149.1/1149.6 标准、Agilex BSDL 文件、互连测试向量生成与故障覆盖率评估四个环节展开。
一、IEEE 1149.1 与 IEEE 1149.6 的定位差异
IEEE 1149.1(JTAG)定义了 TAP 控制器、四线/五线接口(TCK、TMS、TDI、TDO,可选 TRST)以及 EXTEST、SAMPLE/PRELOAD、BYPASS、IDCODE 等必备指令。其核心思想是:通过 TAP 状态机把数据移入 BSR,再由 BSR 驱动引脚输出并捕获引脚输入,从而对器件间连线进行“驱动—捕获”比对。
IEEE 1149.1 的 EXTEST 假设引脚是静态单端逻辑电平。当互连链路中存在 AC 耦合电容(常见于高速差分对、SerDes、PCIe、DDR 等)时,直流电平无法穿过电容,EXTEST 会失效。IEEE 1149.6 正是为此扩展:它定义了 AC 测试所需的 AC_PULSE、AC_EXTEST 等指令,通过发送脉冲对、在接收端捕获边沿,判断 AC 耦合链路是否连通。因此,Agilex 上普通单端 I/O 用 1149.1,带 AC 耦合电容的差分/高速链路必须用 1149.6。
二、Agilex BSDL 文件的使用要点
BSDL(Boundary Scan Description Language)是 VHDL 子集,描述器件的引脚映射、BSR 单元顺序、指令寄存器长度与指令编码。Agilex 的 BSDL 由 Altera(Intel)随器件型号提供,文件名通常包含封装与速度等级,例如 10M50DAF484.bsd 这类命名规则。使用前必须核对三件事:
- 器件 IDCODE 与实物一致:BSDL 中的 IDCODE 必须与 JTAG 链上读回的 IDCODE 完全匹配,否则后续向量全部错位。
- 封装与引脚映射一致:同一裸片不同封装,BGA 球号与 BSR 位序不同,必须选对应封装的 BSDL。
- 指令寄存器长度正确:Agilex 的 IR 长度通常为 10 位,若工具读到的 IR 长度与 BSDL 不符,说明链上器件数量或顺序有误。
在工具侧,BSDL 被解析后生成“引脚—BSR 位—控制单元”的映射表。以 EXTEST 为例,工具需要知道每个引脚对应的输出使能单元(OE)、输出值单元(OUT)和输入捕获单元(IN)在 BSR 中的位置,才能正确构造移位数据。若 BSDL 中某引脚被标注为 linkage 或 disable,则该引脚不参与互连测试,向量生成时应排除。
三、互连测试向量生成
互连测试向量的本质是:为每条网络分配一个“驱动端”和一个“接收端”,驱动端输出一个测试值,接收端捕获并比对。生成过程分三步。
第一步,网络提取。从 PCB 网表(或 CAD 输出的 IPC-356 网表)中提取所有连接两个及以上边界扫描引脚的网络。只连接一个 BSDL 引脚的网络(如仅连到上拉电阻)无法测试,标记为“不可测网络”。
第二步,驱动/接收分配。对每条网络,选择一个引脚作为驱动端,其余作为接收端。分配时需避免冲突:同一引脚不能同时被两条网络选为驱动端。常用算法是“最大匹配”或“贪心着色”,把网络视为边、引脚视为顶点,做边着色,使同一引脚在不同测试步中承担不同角色。
第三步,向量构造。每个测试步对应一组 BSR 移位数据。以一条 4 引脚网络为例,示例参数如下(假设值,仅用于说明格式):
网络 N1:U1.A5(驱动)→ U2.B7、U3.C2(接收)
测试步 1:驱动端输出 0,接收端期望捕获 0
测试步 2:驱动端输出 1,接收端期望捕获 1
BSR 移位串(示例,16 位):
步1: 0000_0000_0000_0000
步2: 0000_0001_0000_0000
实际向量由工具自动生成,但工程师必须检查两点:一是驱动端是否被正确置为输出使能;二是接收端是否处于输入捕获模式。若某接收端同时被另一条网络驱动,会出现“驱动冲突”,工具应报错并重新分配。
四、故障覆盖率评估
故障覆盖率不是“测试了多少网络”,而是“能检出多少种故障”。对互连测试,主要故障模型有:开路(open)、桥连(bridge)、固定故障(stuck-at)。覆盖率计算方式为:
其中“可检出”取决于网络是否可测、驱动/接收分配是否完整、以及是否存在屏蔽效应。例如,两条网络同时开路且互为驱动/接收,可能因捕获值恰好相等而漏检,这类故障应单独标记为“潜在漏检”。
评估时建议输出一张覆盖率表,字段包括:网络名、驱动引脚、接收引脚、测试步数、检出故障类型、是否可测。示例(假设数据):
| 网络 | 驱动 | 接收 | 测试步 | 可检出故障 | 状态 |
|---|---|---|---|---|---|
| N1 | U1.A5 | U2.B7 | 2 | 开路、固定0/1 | 可测 |
| N2 | U2.C3 | U3.D4 | 2 | 开路、桥连 | 可测 |
| N3 | — | — | 0 | — | 不可测(仅单端) |
若覆盖率低于目标(例如量产要求 95%),应优先检查不可测网络是否可通过增加测试点、改用 1149.6 或调整驱动分配来覆盖。对于 AC 耦合链路,必须确认 BSDL 中已启用 1149.6 扩展指令,否则这些网络会被误判为“不可测”。