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。

IEEE 1149.1 与 1149.6 互连测试信号链对比 IEEE 1149.1(DC 互连,无耦合电容) Agilex 驱动端 BSR 输出寄存器 EXTEST 驱动 0/1 PCB 走线(直流连通) 无 AC 耦合电容 Agilex 接收端 BSR 输入捕获 SAMPLE 读回电平 判定:驱动值 = 捕获值 相等 → 互连正常 不等 → 开路 / 桥连 / 固定故障 IEEE 1149.6(AC 耦合,含隔直电容) Agilex 驱动端 AC_PULSE 指令 发送脉冲对 上升沿 + 下降沿 差分对 AC 电容 脉冲穿过 Agilex 接收端 AC_EXTEST 捕获 检测边沿跳变 有跳变 = 链路通 判定:边沿是否出现 出现 → AC 链路正常 无跳变 → 开路 / 电容失效

二、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)。覆盖率计算方式为:

覆盖率 = 可检出故障数 / 总故障数 × 100%

其中“可检出”取决于网络是否可测、驱动/接收分配是否完整、以及是否存在屏蔽效应。例如,两条网络同时开路且互为驱动/接收,可能因捕获值恰好相等而漏检,这类故障应单独标记为“潜在漏检”。

评估时建议输出一张覆盖率表,字段包括:网络名、驱动引脚、接收引脚、测试步数、检出故障类型、是否可测。示例(假设数据):

网络驱动接收测试步可检出故障状态
N1U1.A5U2.B72开路、固定0/1可测
N2U2.C3U3.D42开路、桥连可测
N3——0—不可测(仅单端)

若覆盖率低于目标(例如量产要求 95%),应优先检查不可测网络是否可通过增加测试点、改用 1149.6 或调整驱动分配来覆盖。对于 AC 耦合链路,必须确认 BSDL 中已启用 1149.6 扩展指令,否则这些网络会被误判为“不可测”。

在 Agilex 量产测试中,边界扫描通常与 IDCODE 读取、BYPASS 链验证一起作为首件检查项。建议先跑一遍“链完整性”测试,确认 IR 长度、IDCODE、BSR 长度与 BSDL 一致,再执行互连向量,避免因链配置错误导致批量误判。
注意:BSDL 文件必须与实物封装、速度等级、硅版本严格对应。使用错误 BSDL 可能导致 BSR 位序错位,表现为“大量网络同时失败”,此时应优先核对 BSDL 而非怀疑 PCB。