000%
OFFLINE ENGINEERING MANUALIEEE 1149.1 · Tessent 2026.1

从标准原理到芯片、Tile 与板级签核

JTAG
边界扫描
完整学习手册

把 TAP、状态机、IR/DR、边界单元、BSDL 和 Tessent DFT 流程放进同一张工程地图。既回答“每一拍发生什么”,也回答“项目里该交付什么”。
THE CORE LOOP
  1. 1
    选择指令Shift-IR → Update-IR
  2. 2
    捕获数据Capture-DR
  3. 3
    串行移位TDI → selected DR → TDO
  4. 4
    并行更新Update-DR 驱动或配置
19学习章节
28Reference 指令
08官方原始图
2026.1知识库版本
01—06

先学标准

理解 TAP、状态机、指令、寄存器、cell 与 BSDL,建立不会随工具变化的底层模型。

07—10

再跑完整流

从 pad/端口规划、DRC、DftSpecification 到 Pattern、BSDL 和仿真。

11—15

处理层次问题

Embedded BScan、Tile 穿越、SDC、1149.6 与既有 TAP/BIST 集成。

16—18

最后签核

用失败分层、波形证据、Reference 指令和交付清单闭环。

01

PURPOSE · BOARD ACCESS · TEST ECONOMICS

IEEE 1149.1 与边界扫描:解决不可探测的板级互连

表面贴装、BGA 和高密度封装让传统针床难以直接接触网络。1149.1 把可控/可观测点移入器件边界,用四线或五线 TAP 把板上多个器件串成标准测试访问链。

它真正测试什么

  • 链路基础设施TAP reset、IR 长度、BYPASS、IDCODE、TDI/TDO 连通。
  • 板级互连开路、短路、桥接、 stuck-at,以及驱动/采样方向错误。
  • 器件引脚行为SAMPLE 功能状态,HIGHZ/CLAMP 隔离,PRELOAD 安全装载。
  • 内部测试入口通过自定义 DR/指令连接 BIST、内部 scan 或其它测试资源。

它不自动解决什么

  • 模拟质量1149.1 主要是数字结构测试,不等同于 SI/PI/眼图或参数量测。
  • 所有 core 逻辑EXTEST 检查外部互连;内部覆盖率需要 scan/ATPG/BIST。
  • 错误的板级约束安全值、OE 极性和不可同时驱动网络仍需系统工程输入。
  • 无模型器件板级工具依赖正确 BSDL、封装映射和链路拓扑。
板上多个 Boundary Scan 器件的串行链Tessent BoundaryScan User’s Manual 2026.1 · Figure 1
板级连接规则

各器件 TDO 串到下一个 TDI;TCK/TMS 通常全局并联;TRST 若存在也按架构分发。整板链长等于当前指令选中的各器件 DR 长度之和。

02

TAP · IR · SELECTED DR · BOUNDARY CELLS

一张图看懂芯片内部 JTAG 架构

TAP 控制器不搬运测试数据,它产生 Capture、Shift、Update 等控制相位;Instruction Register 决定哪一个 Data Register 被串到 TDI/TDO;BSR 则沿 I/O 边界提供并行捕获与驱动。
典型 Boundary Scan ArchitectureTessent BoundaryScan User’s Manual 2026.1 · Figure 2
01

TAP pins

TCK / TMS / TDI / TDO / TRST

02

TAP controller

16-state synchronous FSM

03

Instruction Register

选择当前 Data Register 和测试行为

04

Boundary Scan Register

由 I/O 周边 cell 串接的主测试 DR

05

Bypass Register

未测试器件贡献 1 bit

06

IDCODE / User DR

身份读取或访问内部测试资源

07

TDO mux

把当前 selected DR 或 IR 送出

TDIIR 或当前选中 DRTDO同一时刻只有一条串行数据路径;IR 决定 DR mux 选择
03

16-STATE FSM · TMS SAMPLED ON TCK RISING EDGE

TAP 与状态机:所有 JTAG 事务都是状态路径

TMS 在每个 TCK 上升沿决定下一状态。IR 和 DR 两条分支拥有相同的 Capture → Shift → Exit/Pause → Update 骨架;Test-Logic-Reset 是全局安全入口。
IEEE 1149.1 TAP Controller 16 状态图Tessent BoundaryScan User’s Manual 2026.1 · Figure 4
INTERACTIVE TAP + BSCAN LAB

状态图逐拍点亮,BScan cell 同步响应

逐拍观察 TMS 如何改变状态:先选 TMS,再点击一次 TCK。左侧显示当前节点、选中分支与已走轨迹;右侧同步执行 Capture、Shift、Update 或 Hold。

TMS
CURRENTTest-Logic-Reset— TMS 0 / ↑TCK →NEXTRun-Test/Idle

RESET / ROUTE

DATA REGISTER · BSR

INSTRUCTION REGISTER

COMMON

Test-Logic-Reset

本拍硬件动作

复位 TAP 测试逻辑;活动指令进入标准规定的复位选择。

BScan cell 解释

BSR 不移位、不捕获;芯片通常保持功能引脚行为,不能假设 BSR 数据被清零。

两条出口

0 → Run-Test/Idle
1 → Test-Logic-Reset

逐拍轨迹
Test-Logic-Reset
RESET / IDLE

Test-Logic-Reset

复位测试逻辑并选择标准定义的复位指令。没有 TRST 时,TMS=1 连续至少五个 TCK 可从任何状态回到这里。

IR PATH

Capture / Shift / Update-IR

Capture-IR 装入规定捕获码,Shift-IR 串入 opcode,Update-IR 才真正切换活动指令。

DR PATH

Capture / Shift / Update-DR

Capture-DR 并行采样,Shift-DR 串行交换,Update-DR 把新值送入 update latch。

PAUSE

Pause-IR / Pause-DR

允许暂停长移位而不丢失寄存器内容;恢复时经 Exit2 回到 Shift 或去 Update。

16-STATE REFERENCE

每个状态中,1149.1 硬件和 BScan cell 在做什么

当前状态TMS=0TMS=1本拍工作状态Boundary Scan Cell 状况
Test-Logic-ResetRun-Test/IdleTest-Logic-Reset复位 TAP 测试逻辑;活动指令进入标准规定的复位选择。BSR 不移位、不捕获;芯片通常保持功能引脚行为,不能假设 BSR 数据被清零。
Run-Test/IdleRun-Test/IdleSelect-DR-Scan空闲,或让需要运行时间的当前测试指令继续执行。BSR 保持;无 Capture/Shift/Update。RUNBIST 类指令可能在此运行。
Select-DR-ScanCapture-DRSelect-IR-Scan选择走 Data Register 分支还是继续前往 IR 分支。只是路径选择;所有 DR 和 update latch 保持。
Capture-DRShift-DRExit1-DR当前指令选中的 DR 执行并行捕获。若选中 BSR:输入观察值、core 输出值、OE 状态进入 capture/shift stage;update latch 不变。
Shift-DRShift-DRExit1-DR选中 DR 每个 TCK 移一位,TDI 注入、TDO 输出。BSR shift stage 串行移动;旧值从 TDO 读出,新值装入。update latch 仍稳定,所以引脚不会随每一位移位乱跳。
Exit1-DRPause-DRUpdate-DR离开 Shift-DR,决定暂停还是更新。没有数据传送;shift stage 与 update latch 均保持。
Pause-DRPause-DRExit2-DR暂停长 DR 移位,保持已移入的数据。scan chain 冻结;TDI 不再进入,update latch 和引脚保持。
Exit2-DRShift-DRUpdate-DR从暂停恢复移位,或结束并更新。没有 capture/update;只是选择返回 Shift 或进入 Update。
Update-DRRun-Test/IdleSelect-DR-Scan把选中 DR 的 shift stage 并行提交到 update latch。若 EXTEST/INTEST/CLAMP 使用 BSR 驱动,引脚或 core 测试输入在此状态后原子切换。输入型 cell 通常无驱动 update。
Select-IR-ScanCapture-IRTest-Logic-Reset进入 Instruction Register 分支,或回到全局复位。BSR 和活动指令保持,不发生寄存器操作。
Capture-IRShift-IRExit1-IRIR shift stage 捕获规定测试码;最低两位应体现标准的 01 特征。活动 instruction latch 仍保持旧指令,因此 BSR 当前功能不变。
Shift-IRShift-IRExit1-IR串行读出 IR capture pattern,同时从 TDI 移入新 opcode。仅 IR shift stage 改变;BSR 与引脚行为保持旧活动指令。
Exit1-IRPause-IRUpdate-IR离开 Shift-IR,决定暂停还是提交新指令。活动指令仍未改变,BSR 行为保持。
Pause-IRPause-IRExit2-IR暂停 opcode 移位。IR shift stage 保持;活动 instruction latch、BSR 和引脚保持。
Exit2-IRShift-IRUpdate-IR从暂停恢复 Shift-IR,或提交 opcode。无寄存器传送;旧活动指令仍生效。
Update-IRRun-Test/IdleSelect-DR-Scan把 IR shift stage 并行写入 instruction latch,切换活动指令。切到 EXTEST 时,BSR update latch 中预装载的 data/OE 立即接管 pad;这就是必须先 PRELOAD 安全值的原因。
TAP state navigation cheat sheet
# 从 Run-Test/Idle 进入 Shift-IR
TMS: 1 1 0 0
     Select-DR -> Select-IR -> Capture-IR -> Shift-IR

# 最后一位 IR 在 Shift-IR 时把 TMS 拉高,然后更新指令
TMS: ... 1 1 0
         Exit1-IR -> Update-IR -> Run-Test/Idle

# 从 Run-Test/Idle 进入 Shift-DR
TMS: 1 0 0
     Select-DR -> Capture-DR -> Shift-DR

# 无 TRST 时的同步复位
TMS = 1,连续至少 5 个 TCK 上升沿 -> Test-Logic-Reset
EASY EXAMPLE

例:安全进入 EXTEST,而不是直接让未知值驱动板端

1

Reset

TMS=1 至少 5 拍

测试逻辑回到已知入口;引脚仍按复位后的活动指令工作。

2

装 PRELOAD opcode

Capture-IR → Shift-IR → Update-IR

只是让 PRELOAD 成为活动指令,尚未接管引脚。

3

装安全 BSR 数据

Capture-DR → Shift-DR → Update-DR

把 DATA=0、OE=0 等安全值写入 update latch;功能路径仍控制引脚。

4

装 EXTEST opcode

Capture-IR → Shift-IR → Update-IR

在 Update-IR 后,BSR 用已经预装载的安全值接管 Pad。

5

施加测试向量

Shift-DR → Update-DR

移位期间 Pad 保持旧测试值;Update-DR 后所有输出并行切换。

6

捕获响应

Capture-DR → Shift-DR

Capture 同拍采样板端,随后串行读出;update latch 保持驱动不变。

三条时序纪律

状态和 TMS 在 TCK 上升沿判定;最后一位数据与退出 Shift 的 TMS 必须同拍规划;TDO 的 launch/strobe 必须遵守器件 BSDL、Tessent timeplate 和 ATE 约束,不要凭经验硬编码边沿。

04

INSTRUCTION REGISTER · REGISTER ACCESS

指令与数据寄存器:先选择,再操作

指令不是普通命令字符串,而是写入 IR 的 opcode。Update-IR 后,指令把一个特定 DR 接到 TDI/TDO,并定义 Capture/Update 对芯片引脚和 core 的影响。
指令选择的 DR主要用途工程注意
EXTESTBSR由边界单元驱动输出并捕获输入,用于 PCB/MCM 外部互连测试。核心外部测试指令;切换前先 PRELOAD 安全向量。
SAMPLEBSR功能模式继续运行时,对引脚状态取样。只观察,不应改变系统行为。
PRELOADBSR预先装载边界寄存器 update latch,准备后续 EXTEST/CLAMP。避免进入测试指令瞬间输出未知值。
SAMPLE/PRELOADBSR早期标准中的组合指令;既可取样也可预装载。若独立 PRELOAD 存在,工具优先使用 PRELOAD。
BYPASS1-bit BYPASS把当前器件在串行链中的长度缩短为一位。未实现 opcode 通常也必须安全落到 BYPASS。
IDCODE32-bit IDCODE读取器件身份、版本和厂商信息。先做 board chain discovery 的常用入口。
INTESTBSR从边界单元向 core 施加数据并捕获 core 响应。会影响芯片内部逻辑,需独立模式和初始化策略。
CLAMPBYPASS + BSR update保持预装载的静态引脚值,同时串行路径走 BYPASS。兼顾静态隔离与短链。
HIGHZBYPASS把输出和双向引脚强制为高阻。用于避免板级驱动冲突;必须核对 control cell 极性。
EXTEST_PULSEAC BSR为 AC/差分/电容耦合链路产生规定脉冲。使用 IEEE 1149.6 AC cell 时为必需能力。
EXTEST_TRAINAC BSR产生多周期脉冲序列以测试 AC 链路。可选;时序由 1149.6 配置和 Pattern 共同决定。
01

Reset / 识别

先确认链路和 IDCODE,推导器件数、IR 长度和方向。

02

PRELOAD

把安全数据与 OE 值装入 BSR update latch。

03

EXTEST

切换到外部互连模式,驱动一端、捕获另一端。

04

恢复

HIGHZ/BYPASS/复位,按板级电源与总线规则退出。

05

CAPTURE FLOP · SHIFT STAGE · UPDATE LATCH

边界扫描单元:为什么 Capture 与 Update 必须分开

一个可驱动单元通常至少包含 shift/capture stage 与 update latch。移位时可在不扰动当前输出的情况下装载下一组数据;到 Update-DR 才并行切换,从而避免串行装载过程在引脚上产生毛刺序列。
PAD / CORE并行捕获Capture-DR
SHIFT STAGE串行交换Shift-DR · TDI/TDO
UPDATE LATCH并行生效Update-DR
PAD / CORE驱动或配置由活动指令选择
INTERACTIVE CELL LAB · 13 MODES

一个双向 Pad 的 Capture / Shift / Update

覆盖 1149.1 必选、常用可选与 1149.6 AC 指令。自定义 opcode 无法穷举,应以项目 BSDL 的 INSTRUCTION_OPCODE / REGISTER_ACCESS 为准。

ACTIVE INSTRUCTIONSAMPLE1149.1 必选
SELECTED DATA REGISTERBSR下方三段 BSR 参与 DR 操作
PAD / CORE OWNERFUNCTION无侵入观察功能引脚状态。
SAMPLE

无侵入观察功能引脚状态。选择一个模式,再执行 Capture / Shift / Update,观察所选 DR 和 Pad 所有权。

MODE MATRIX

同一个 BScan cell 在不同活动指令下的工作状态

活动指令Pad 驱动来源Capture-DR 捕获Shift-DRUpdate-DR关键用途
BYPASS功能逻辑1-bit BYPASS 捕获规定值仅一位 BYPASS 移动不影响 BSR缩短未测器件链长
SAMPLE功能逻辑BSR 观察 Pad/Core/OE可读出采样并装入新值通常不改变引脚无侵入观察功能状态
PRELOAD功能逻辑可捕获当前观察值装入下一组安全 data/OE写 BSR update latch,但暂不接管 Pad为 EXTEST/CLAMP 准备安全初值
EXTESTBSR output/control update latch输入 cell 捕获外部互连响应读旧响应、装新向量;Pad 保持旧 update 值所有测试输出/OE 并行切换板级开路、短路、桥接测试
INTEST外部 Pad 通常按实现隔离;BSR 向 Core 施加捕获 Core 响应交换内部测试向量把新值施加到 Core 测试侧测试芯片内部逻辑路径
HIGHZ强制高阻取决于实现与所选 DR通常走 BYPASSBSR 值不应重新使能输出隔离器件,避免板级驱动冲突
CLAMP保持预装载 BSR 静态值通常选择 BYPASS DR一位 BYPASS引脚继续保持预装载值静态钳位同时缩短扫描链
INPUT CELL

输入单元例子

外部按键把 Pad 拉为1。SAMPLE + Capture-DR 时,input shift FF 捕获1;Shift-DR 把它沿链送到 TDO。Update-DR 对纯输入 cell 通常没有驱动作用。

OUTPUT CELL

输出单元例子

PRELOAD 时移入 DATA=1 并 Update-DR,Pad 仍由 core 控制。Update-IR 切到 EXTEST 后,update latch 的1接管输出;下一次 Update-DR 才切换新测试值。

BIDIR + CONTROL

双向单元例子

先预装 OE=0,进入 EXTEST 后保持高阻;需要驱动时再移入 DATA 和 OE=1,并在同一个 Update-DR 原子提交,避免 data/OE 不同步产生冲突。

TCD functionBSDL function作用
inputINPUT观察外部输入;部分实现也能向 core 注入。
outputOUTPUT2 / OUTPUT3驱动外部输出,并可观察 core 输出。
bidirBIDIR双向数据单元,通常与独立 control cell 配合。
controlCONTROL控制一组 output/inout pad 的 output enable。
control_resetCONTROLR与 control 相同,但 Test-Logic-Reset 时强制关闭输出。
observe_onlyOBSERVE_ONLY只捕获端口值,不改变驱动路径。
clockCLOCK观察外部时钟端口状态。
internalINTERNAL不对应外部端口,用于内部控制、pipeline 或架构辅助。
ac_selectINTERNAL使能一组 1149.6 AC 数据单元。

输入 pad

至少需要观察能力;对 reset/clock/analog special pad 常用 sample/clock/observe_only,避免错误接管。

输出 pad

数据 cell 决定 0/1,control cell 决定是否驱动。safe value 与 control_enable_value 必须成对审核。

双向 pad

数据与 OE 通常是两个逻辑维度。测试向量必须确保同一网络不会被两个器件同时强驱。

双向 Pad 的 SJI/SJE/SJO 复用结构示例Tessent BoundaryScan User’s Manual 2026.1 · Boundary Scan Specific Topics
06

BSDL · PACKAGE MAP · OPCODE · BOUNDARY_REGISTER

BSDL:板级工具理解芯片的契约

BSDL 不是 RTL 摘要,而是面向器件与封装的标准模型:哪个封装球对应哪个逻辑端口、TAP 在哪里、每个 opcode 访问哪个寄存器、BSR 有多长、每个 cell 能做什么。
Entity / Port

逻辑端口与方向

PIN_MAP_STRING

封装 pin/ball 到端口映射

TAP_SCAN_*

TCK/TMS/TDI/TDO/TRST 定义

INSTRUCTION_*

IR 长度、捕获码与 opcode

REGISTER_ACCESS

指令到 BSR/BYPASS/IDCODE 的映射

BOUNDARY_LENGTH

边界寄存器总长度

BOUNDARY_REGISTER

cell number、类型、端口、功能、安全值、控制关系

IDCODE_REGISTER

器件身份位域与固定/掩码位

BSDL structure skeleton(说明性模板)
entity CHIP_TOP is
  generic (PHYSICAL_PIN_MAP : string := "BGA_PACKAGE");
  port (TCK, TMS, TDI : in bit; TDO : out bit; GPIO : inout bit_vector(...));

  attribute TAP_SCAN_IN    of TDI : signal is true;
  attribute TAP_SCAN_OUT   of TDO : signal is true;
  attribute TAP_SCAN_MODE  of TMS : signal is true;
  attribute TAP_SCAN_CLOCK of TCK : signal is (10.0e6, BOTH);

  attribute INSTRUCTION_LENGTH of CHIP_TOP : entity is "4";
  attribute INSTRUCTION_OPCODE of CHIP_TOP : entity is
    "EXTEST (...), SAMPLE (...), PRELOAD (...), IDCODE (...), BYPASS (1111)";
  attribute REGISTER_ACCESS of CHIP_TOP : entity is
    "BOUNDARY (EXTEST, SAMPLE, PRELOAD), BYPASS (BYPASS), DEVICE_ID (IDCODE)";

  attribute BOUNDARY_LENGTH of CHIP_TOP : entity is "...";
  attribute BOUNDARY_REGISTER of CHIP_TOP : entity is
    "0 (BC_1, GPIO(0), bidir, X, 1, 0, Z), ...";
end CHIP_TOP;

审核 BSDL 的顺序

  1. 封装名称、pin map 与实际 package revision。
  2. TAP pin 方向、TCK 频率、TRST 是否存在。
  3. IR length、capture pattern、opcode 唯一性。
  4. REGISTER_ACCESS 与指令语义。
  5. BOUNDARY_LENGTH 和 cell number 连续性。
  6. 每个 inout 的 data/control 关系与 disable value。
  7. safe value 是否会引发板级总线冲突。

版本与一致性

IEEE 1149.1/1149.6 定义标准 package;Tessent 还可生成 bonding configuration、internal cell labels、multi-die logical connections 等扩展。最终交付必须固定 die、package、bond option、netlist、TCD/ICL 和工具版本。

不要手工“修漂亮”

BSDL 应从签核网表/模型提取并回归 Pattern。人工改 opcode、cell number 或 pin map 会破坏设计—模型—测试的一致性。

07

ARCHITECTURE FREEZE · PAD LIBRARY · PIN ORDER

工程规划:边扫成败通常在插入前已经决定

开始脚本前先冻结测试模式、电源域、TAP ownership、pad 宏语义、封装 pin map、不可驱动网络、安全状态和层次边界。工具可以插逻辑,但不能替你决定系统级安全。
01

Pad library

每种 input/output/inout/tri-state/differential pad 的数据、OE、pull、test mux 和仿真模型完整。

02

TAP ports

TDI/TDO/TMS/TCK 和可选 TRST 可达 package;方向、pad 类型和复位策略明确。

03

Mode constraints

所有 test-mode、isolation、power-good、mux select 在 BoundaryScan 模式有确定值。

04

Pin order

基于真实 floorplan/package 周向顺序,降低绕线并固定 BSDL cell 编号。

05

Safety matrix

列出每个外部网络谁可驱动、safe data、OE disable value、上拉/下拉与禁止组合。

06

Hierarchy

选择 chip-level BScan、EBScan 或 HostBScan Tile 穿越,明确每层交付 TCD/ICL/SDC。

PINORDER FILE · FOUR-COLUMN CONTRACT

一行不是“一个 BSR bit”,而是“一个端口的链序位置”

每一行先把设计端口映射到封装 pin,再用行号确定该端口对应的一个或多个边扫 cell 在链中的相对位置。双向端口可能展开为 data、observe、control 等多个 cell,所以最终 bit 编号仍以生成的 BSDL 为准。

chip_top.pinorder · Tessent BoundaryScan
//-----------------------------------------------------
// PortName       PinName    OptionList    LogicalGroups
// -------------- ---------- ------------- -------------
tck_p             K03        -             -
tdi_p             K05        -             -
tms_p             K04        -             -
trst_p            J06        -             -
tdo_p             J05        -             -
gpio_a[0]         A12        -             -
gpio_a[1]         A13        -             -
data_out0         C03        -             -
data_io0          D07        -             -
reset_n           E02        -             -
vddio             A01        -             -
vssio             B01        -             -

// 在 SETUP、check_design_rules 之前回读定版文件
set_boundary_scan_port_options -pin_order_file ./chip_top.pinorder

// 特殊 cell 行为用命令/Specification 声明,不要塞进第 3 列
set_boundary_scan_port_options [get_ports ramclk_p] -cell_options clock
set_boundary_scan_port_options [get_ports reset_n]  -cell_options dont_touch

check_design_rules
01 · PortName设计顶层端口名

必须与当前 RTL/门级设计完全一致;总线位使用 data[7] 形式。行的先后决定边扫链的端口先后。

02 · PinName封装 pin / ball ID

写入 BSDL 的 package pin mapping,例如 A12、K03。它不是 pad instance 名,也不是自动生成的 BSR cell number。

03 · OptionList端口选项(兼容列)

现代 Tessent 流程建议保留为“-”,用 set_boundary_scan_port_options 的 -cell_options 或 Specification 配置。

04 · LogicalGroups逻辑分组(兼容列)

现代流程建议保留为“-”,在 BoundaryScan / EmbeddedBoundaryScan 的 LogicalGroups 中统一定义。

文件首行gpio_a[0]gpio_a[1]data_out0data_io0靠近链尾概念方向:第一条有效端口记录先进入链序;实际 TDI/TDO 方向、一个端口展开多少 cell,以及最终 cell number,以插入报告和 BSDL 为准。
  1. 01
    准备设计

    加载 pad library、RTL/gate netlist;若希望初始顺序贴近物理位置,先 read_def。

  2. 02
    首次 DRC

    不指定 -pin_order_file,运行 check_design_rules;DRC 无错误后工具生成 <design_name>.pinorder。

  3. 03
    人工定版

    按封装周向/floorplan 调整整行顺序,核对 PortName 与 PinName,保留四列和“-”占位。

  4. 04
    后续回读

    在 SETUP、check_design_rules 之前用 -pin_order_file 回读;此时工具验证文件,不再另生成默认文件。

  5. 05
    检查产物

    process_dft_specification 后在最终 BSDL 中核对 PIN_MAP_STRING、BOUNDARY_REGISTER 和 cell number。

最容易写错的地方

  • 把第二列误写成 pad instance 名,而不是 package pin / ball ID。
  • 删除第 3、4 列,导致旧语法解析或团队脚本列对齐失败;无配置时应写 -
  • 认为每行只贡献一个 bit;inout 往往产生 data 与 control 等多个 cell。
  • 只按信号名排序,不按 floorplan 周向顺序,导致链在版图上来回穿越。
  • RTL、DEF、封装 pin list 或 bond option 版本不一致。

签核时必须对上

  • PortName 全部能在 current design 找到,向量下标无遗漏或重复。
  • PinName 与封装 revision、BSDL PIN_MAP_STRING 一致。
  • 插入报告中的端口顺序与定版文件一致。
  • BSDL BOUNDARY_REGISTER 的 cell number 连续,inout 的 data/control 关系正确。
  • 综合/ECO/重新布 pad 后重跑 DRC、BSDL 提取与 Pattern 仿真。
版本提醒

旧资料允许在第 3、4 列直接写 OptionList 和 LogicalGroups;当前 Tessent 文档建议把两列保留为兼容占位,并分别通过端口选项和 DftSpecification 配置,避免 pin list 同时承担行为与分组策略。

最小 DRC 输入

带 pad 的 RTL/gate netlist、完整 Tessent cell library、TAP pin 标注、design level、BoundaryScan requirement、特殊端口 cell options,以及使 pad/mux 可测试的输入约束。

08

LOAD → REQUIREMENTS → DRC → SPEC → INSERT

Tessent BoundaryScan 完整插入流程

标准流程先建立可分析设计,再声明需求并跑 DRC;DftSpecification 是可审阅的硬件合同,process_dft_specification 才真正修改设计。之后提取 ICL/SDC、生成 Pattern 并仿真。
Tessent BoundaryScan 设计流程Tessent BoundaryScan User’s Manual 2026.1 · Figure 5
01Load design
02DFT requirements
03DRC
04Create specification
05Validate / process
06Extract ICL + SDC
07Patterns specification
08Simulation
09Synthesis / STA
Tessent Shell / Chip-level BoundaryScan reference flow
set_context dft -rtl -design_id rtl1
read_cell_library ../library/adk_complete.tcelllib
read_verilog ../rtl/chip_top.v
set_current_design chip_top
set_design_level chip

set_dft_specification_requirements -boundary_scan on
set_attribute_value [get_ports tck_p]  -name function -value tck
set_attribute_value [get_ports tdi_p]  -name function -value tdi
set_attribute_value [get_ports tms_p]  -name function -value tms
set_attribute_value [get_ports trst_p] -name function -value trst
set_attribute_value [get_ports tdo_p]  -name function -value tdo

set_boundary_scan_port_options [get_ports ramclk_p] -cell_options clock
set_boundary_scan_port_options [get_ports reset_p]  -cell_options sample
check_design_rules

set spec [create_dft_specification]
report_config_data $spec
process_dft_specification -validate_only
process_dft_specification

extract_icl -create_ijtag_graybox on
create_patterns_specification
process_patterns_specification

set_simulation_library_sources -Y ../library/verilog -extensions {v} \
  -V ../library/pad_cells.v
run_testbench_simulations
check_testbench_simulations -report_status

DftSpecification 要审核什么

  • TAP 是否新建、复用或连接既有 controller。
  • BoundaryScan interface、pin order 与每类 cell options。
  • instruction opcode、IDCODE、可选 TDR。
  • output enable cell 共享与 safe value。
  • scan_out pipeline、logic-test segment 与层次实例位置。

TSDB 纪律

  • 每次 insertion 使用明确 design_id。
  • 保存 source dictionary、配置报告、ICL/TCD、SDC 和 Pattern ID。
  • 后续 pass 使用 read_design,不重新猜测输入文件。
  • 综合/ECO 后重新提取和仿真,不复用过期 BSDL。
09

PATTERNS SPECIFICATION · BOARD TEST INTENT

Pattern:从结构正确到板级互连可测

Tessent PatternsSpecification 把 BSDL、指令、初始化和仿真组织成可复现测试。项目仍需在板级 ATPG/测试工具中结合多器件链、网络表、安全约束和不可测器件模型生成量产向量。

Infrastructure

Reset、IR capture、BYPASS、IDCODE、链路方向和长度。

SAMPLE

功能模式采样引脚,验证观测路径与初始状态。

PRELOAD / EXTEST

预载安全值后测试外部互连开短路。

HIGHZ / CLAMP

隔离非目标驱动器或保持静态条件。

Cell operation

逐类验证 input/output/bidir/control cell 的 capture/update。

Initialization

在进入 BScan 前设置 power、isolation、clock/reset 与自定义模式。

驱动器 APRELOAD 1 / OE ON
PCB NET期望无 open/short
接收器 BCapture = 1
下一向量翻转为 0,并改变其它网络背景,才能区分 stuck、桥接与方向问题。
安全优先于覆盖率

电源、复位、boot strap、开漏/线与总线、高速收发器和外部电源器件不能套用普通 push-pull EXTEST。先建立板级 drive permission matrix,再生成向量。

10

BSDL EXTRACTION · TCD_BSCAN · TRACEABILITY

BSDL 与 TCD 提取:让层次模型回到真实网表

Chip-level BSDL 描述最终 TAP、指令和整条 BSR;block 的 tcd_bscan 描述 embedded segment。上层提取加载 child TCD、追踪 TAP/segment/selection,并在进入 analysis 的 DRC 中生成最终 BSDL。
Tessent Shell / Final BSDL extraction
set_context dft -rtl -design_id gate
read_design chip_top -design_identifier gate -view full
# 按层次加载 ICL 与 child .tcd_bscan 后 elaborate
set_current_design chip_top

set_dft_specification_requirements -bsdl_extraction on
check_design_rules

# 结果通常写到:
# tsdb_outdir/dft_inserted_designs/
#   chip_top_gate.dft_inserted_design/chip_top.bsdl

create_patterns_specification
process_patterns_specification
run_testbench_simulations
check_testbench_simulations -report_status
01

识别 TAP ports

日志明确报告 TCK/TDI/TDO/TMS/TRST 对应端口。

02

识别 TAP controller

报告实例与 HostBscan scan interface。

03

报告 TCD sequence

按最终链序列出每个 embedded BScan block。

04

报告 segment selection

确认每个可选 segment 的 enable 条件。

05

输出 BSDL path

文件进入对应 design_id 的 dft_inserted_design 目录。

06

Pattern 回归

由提取 BSDL 创建 Pattern 并通过最终网表仿真。

BSDL 不是“生成成功”就签核

至少要做语法/语义检查、与封装 pin list 比对、opcode/IR/BSR 长度审计、BSDL-derived Pattern 仿真,以及板级 chain discovery 实测。

11

PHYSICAL BLOCK · PAD-LOCAL CELLS · TCD HANDOFF

Embedded Boundary Scan:边扫单元跟着 I/O 子块走

当 pad 被分散到 physical block 内,边扫 cell 更适合在 pad 附近插入。每个 block 交付 tcd_bscan,上层用 HostBScan/EBScanInstance 拼成最终链,兼顾布局、复用与层次签核。
Embedded Boundary Scan 实现示意Tessent BoundaryScan User’s Manual 2026.1 · Figure 3

Block 级职责

  • 设置 physical_block/sub_block design level。
  • -pad_io_ports 明确哪些端口对应 pad I/O。
  • 约束上层才会驱动的 mode/isolation 输入。
  • 插入 EBScan segment,提取 ICL、TCD 与 SDC。
  • 交付 cell 顺序、pipeline、端口和 Pattern 证据。

Top 级职责

  • 加载相同版本 child TCD/graybox/interface。
  • 确定所有 segment 的串行顺序与选择条件。
  • 把链连接到 TAP HostBscan。
  • 提取最终 BSDL,并运行端到端 Pattern。
  • 确保 package pin map 与 block 端口映射一致。
常见错误

只把 block 的 scan_in/scan_out 当普通线连接,而没有 TCD/HostBScan 语义;这样局部仿真可能通过,但上层无法可靠提取 cell、segment 与最终 BSDL。

12

HOSTBSCANINTERFACE · SECONDARY EBSCAN · TILE

Tile 穿越:没有边扫 cell 的模块也要成为可签核节点

中间 Tile 可以没有 pad、没有普通边扫单元,但相邻 Tile 的 EBScan 链若要穿过它到达 TAP,就应使用 HostBScanInterface 与 SecondaryEBScanInterface 描述真实拓扑。
Boundary Scan Chain Distributed Across a Tiled DesignTessent BoundaryScan User’s Manual 2026.1 · Figure 34
你的 Tile 不做

功能 I/O Boundary Scan cells

但必须做

主 HostBScan interface、相邻 Tile secondary interface、完整控制束、scan return、必要 pipeline、TCD/SDC 与局部验证。

Tessent Shell / Intermediate Tile scaffold
set_context dft -rtl -design_id rtl1
read_cell_library ../library/cells.tcelllib
read_verilog ../rtl/middle_tile_with_dft_ports.v
set_current_design middle_tile
set_design_level physical_block
set_dft_specification_requirements -design_type tile

read_config_data -from_string {
  DftSpecification(middle_tile,rtl1) {
    allow_port_creation_on_current_design : off;
    EmbeddedBoundaryScan {
      HostBScanInterface(client) {
        EBScanPipeline(client_out) { so_retiming : off; }
        EBScanPipeline(from_neighbor) {}
        SecondaryEBScanInterface(neighbor) {}
        EBScanPipeline(to_neighbor) {}
      }
    }
  }
}

process_dft_specification
extract_icl -create_ijtag_graybox on
set_dft_specification_requirements -tcd_bscan_extraction on

真实 Chip 连接

用 TopModuleConnections 或受控 RTL 生成器预建端口。select/reset/clock/capture/shift/update/scan_in 成束前送,scan_out 返回。

局部 loopback

独立 Tile 缺少 neighbor 时才用 loadboard loopback 闭链;含 extracted_with_loopbacks:on 的 TCD 仅用于本地验证。

Pipeline

跨 Tile timing 紧张时插入;每一级成为 internal BScan cell,增加链长并必须进入 TCD/BSDL/Pattern。

13

GENERATED SDC · NON-MODAL CONSTRAINTS · LOOP TIMING

时钟、SDC 与 STA:JTAG 低速不等于无需签核

TCK 常比功能时钟慢,但它可能跨芯片边缘、长距离 Tile 走线、多级 mux、时钟门控和返回路径。TDO launch/strobe、scan-out pipeline、异步 reset 和测试模式 false/multicycle 约束都必须一致。
SDC integration order
# 使用当前 insertion pass 生成的 SDC;不要直接手改生成文件
source ./tsdb_outdir/dft_inserted_designs/chip_top_rtl1.dft_inserted_design/chip_top.sdc

# 1. 初始化 Tessent 变量模板
tessent_set_default_variables

# 2. 如果项目功能时钟名与 Tessent 名不同,覆盖映射
set tessent_clock_mapping(CK_SYS) FUNC_CLK

# 3. 功能时钟通常由项目 SDC 创建;必要时才调用生成 proc
# tessent_create_functional_clocks

# 4. 应用 BoundaryScan non-modal 约束
tessent_set_non_modal

TCK source

TAP pin、内部 divider 或共享 test clock;定义周期、波形和不确定度。

TDO timing

确认 launch edge、pad delay、板级采样点和 ATE strobe。

Control timing

TMS/TRST/mode/select 对 TCK 的 setup/hold 与异步处理。

BSR chain

最长 shift path、pipeline 数量、占空比和 crossing。

Loop interface

Tile 返回 TAP 的 scan_out 路径需要完整周期预算或显式 retiming 策略。

Functional isolation

BoundaryScan non-modal constraints 与功能 SDC 时钟组、case analysis 不冲突。

签核顺序

source 生成 SDC → tessent_set_default_variables → 覆盖时钟映射/项目变量 → 创建或读取功能时钟 → tessent_set_non_modal → 报告未约束端点、例外覆盖和跨层接口 slack。

14

IEEE 1149.6 · AC-COUPLED · DIFFERENTIAL

IEEE 1149.6 AC JTAG:测试静态 EXTEST 看不到的链路

差分或电容耦合互连不能靠稳定 0/1 穿过接收通道。1149.6 通过 AC data cell、AC select/control、test receiver 和规定的 pulse/train 行为产生并检测转换。
IEEE 1149.6 时序波形示意Tessent BoundaryScan User’s Manual 2026.1 · Figure 41
PRELOAD

装入输出极性、enable 与 AC select。

EXTEST_PULSE

在规定更新/捕获窗口产生单次转换。

TEST RECEIVER

把短暂转换保存在可捕获状态。

CAPTURE / SHIFT

捕获并串行读回接收结果。

额外硬件

  • AC output/bidir data cell 与极性控制。
  • AC select cell 和控制信号。
  • 差分输入的 sample-only cell。
  • 可记忆脉冲的 test receiver。
  • TAP/指令支持 EXTEST_PULSE,可选 EXTEST_TRAIN。

额外签核

  • BSDL 使用匹配的 1149.6 package。
  • AC pin 类型、差分配对和 cell 关联正确。
  • pulse/train TCK 时序满足收发电路窗口。
  • 门级/布局后模型能模拟接收记忆行为。
  • 板级工具理解 AC instruction 与链路约束。
15

PREEXISTING TAP · MULTIPLE TAP · BIST · BONDING

高级集成场景:不要把所有测试结构塞进同一套假设

真实 SoC 可能已有第三方 TAP、共享 JTAG pins、多个 controller、MemoryBIST/EDT TDR、多 package bonding option 或只提供第三方 BSDL。每种场景的 ownership、复位、opcode 与数据路径都必须单独建模。

既有第三方 TAP

识别其 IR/DR/host interface;决定 Tessent BScan 是接入现有 HostBscan,还是与新 TAP 共享/串接端口。

多个 TAP

明确 daisy 顺序、TMS/TCK/TRST 分发、TDO mux 与 reset 后默认路径;分别验证 IR/DR 长度。

TAP + MemoryBIST

用 TDR/ICL/PDL 连接控制和状态;多 pass 时保持 host interface、design_id 与 opcode 不冲突。

BSDL-only flow

没有可编辑 RTL 时,可从可信第三方 BSDL 生成/验证 Pattern;无法替代对真实网表的结构证明。

Logic-test segmentation

把 BSR 分段用于内部 logic test,控制 max segment length,并在 BSDL/ATPG 中保持映射。

Multiple bonding

同一 die 不同 package 会改变 external port、pin map、bypass/enable;每个 bonding configuration 独立提取和签核。

架构决策问题

  1. 复位后谁拥有外部 TAP pins?
  2. 哪个 instruction opcode 由谁解码?
  3. 当前指令下 TDI→TDO 究竟经过哪些寄存器?
  4. 进入/退出测试模式时,所有输出的安全状态是什么?
  5. 每个层次交付 ICL、TCD、BSDL、SDC 还是 interface/graybox?
  6. 最终 package/board 工具以哪一个模型为黄金?
16

DRC → STRUCTURE → PATTERN → TIMING → BOARD

验证与调试:按证据层次定位,不要从 TDO 波形猜

边扫失败可能来自 pad 模型、TAP 状态、opcode、chain order、cell 极性、BSDL、时序或板级连接。最有效的方法是从最小基础设施逐层扩大,而不是直接调 EXTEST 全向量。
1

DRC

pad/TAP/clock/reset/constraint 无 error,配置报告无意外默认值。

2

IR capture

验证 TAP 状态、IR 长度、capture pattern 和 TDI/TDO 方向。

3

BYPASS / IDCODE

确认器件数、daisy 顺序、复位默认指令。

4

Cell operation

逐个验证 input/output/control/bidir capture/update。

5

JtagBscanPatterns

运行完整生成 Pattern,按 unexpected/missing miscompare 分类。

6

Gate / post-layout

加入真实延迟、pad 模型和 SDC 后回归。

7

Board

chain discovery → interconnect → cluster,逐步接入外部器件。

Simulation debug commands
run_testbench_simulations -report_list
run_testbench_simulations -select JtagBscanPatterns \
  -store_simulation_waveforms on -wait
check_testbench_simulations -report_status

# 重点对齐:TAP state、active instruction、capture/shift/update、
# BSR cell number、TDI/TDO bit order、OE/control polarity 与 expected strobe

全部 bit 偏移

IR/DR 长度、器件数、BYPASS bit、链序或 pipeline 漏算。

从某一 cell 后全错

局部 scan stitch、TCD segment 顺序、cell number 或断链。

只有输出相关失败

PRELOAD、update latch、OE control、safe value、pad test mux。

只有输入采样失败

pad observation path、Capture-DR、clock/sample option 或 strobe。

RTL 过、gate 失败

name mapping、综合优化、库模型、SDC/时序或 test logic preserve。

芯片仿真过、板级失败

BSDL pin map、package revision、板级链顺序、电源/总线冲突或 PCB 缺陷。

17

TESSENT SHELL REFERENCE 2026.1

BoundaryScan 核心 Reference 指令

以下 28 条指令按工程阶段组织。先检查 context/mode,再看语法;同名对象、当前 design、design_id 与 TSDB 状态会直接改变结果。
28核心指令
10工程阶段
28当前匹配
set_context加载

进入 DFT RTL/gate 工作上下文。

USAGE
set_context dft -rtl [-design_id id]
read_cell_library加载

加载 pad、TAP、边扫与综合模型。

USAGE
read_cell_library library.tcelllib
read_verilog加载

读取 RTL/gate 设计或接口模型。

USAGE
read_verilog design.v [-interface_only]
set_current_design加载

确定当前顶层和相对层次。

USAGE
set_current_design design_name
set_design_level规划

声明当前设计边界。

USAGE
set_design_level chip|physical_block|sub_block
set_dft_specification_requirements规划

启用 BoundaryScan 插入或 BSDL/TCD 提取需求。

USAGE
set_dft_specification_requirements -boundary_scan on [-design_type tile]
set_attribute_value规划

把实际端口标注成 TAP 功能。

USAGE
set_attribute_value port -name function -value tck|tdi|tdo|tms|trst
set_boundary_scan_port_options规划

配置 sample/clock/observe 等端口单元策略。

USAGE
set_boundary_scan_port_options ports -cell_options options
read_def规划

读取布局坐标,辅助自动生成贴合物理顺序的 pin order。

USAGE
read_def design.def
add_input_constraints规划

约束模式/隔离/宏控制输入,使 pad 宏在测试模式可用。

USAGE
add_input_constraints value ports
check_design_rulesDRC

执行当前 BoundaryScan DRC 并进入 analysis。

USAGE
check_design_rules
create_dft_specification插入

基于需求创建 DftSpecification 配置树。

USAGE
set spec [create_dft_specification]
report_config_data插入

报告 DFT/Pattern 配置内容。

USAGE
report_config_data $spec
set_config_value插入

在内存中修改 DftSpecification 属性。

USAGE
set_config_value path -in $spec value
process_dft_specification插入

验证并插入 TAP、BSR、接口与辅助逻辑。

USAGE
process_dft_specification [-validate_only]
extract_icl提取

提取 ICL,并生成 BoundaryScan 相关 SDC。

USAGE
extract_icl [-create_ijtag_graybox on]
extract_sdc提取

在 ICL 已就绪后单独生成 SDC。

USAGE
extract_sdc [-output_file file]
create_patterns_specificationPattern

从设计/BSDL 创建 JtagBscan PatternsSpecification。

USAGE
create_patterns_specification [-bsdl_files files]
process_patterns_specificationPattern

生成 BoundaryScan patterns 和 testbench。

USAGE
process_patterns_specification
set_simulation_library_sources仿真

声明 pad/macro/standard-cell 仿真模型。

USAGE
set_simulation_library_sources -Y dirs -extensions {v} -V files
run_testbench_simulations仿真

运行 JtagBscan/ICL 等测试台。

USAGE
run_testbench_simulations [-select name] [-store_simulation_waveforms on]
check_testbench_simulations仿真

汇总 pass/fail、unexpected/missing miscompare。

USAGE
check_testbench_simulations [-report_status]
write_design_import_script交付

生成 DFT RTL 的综合导入脚本。

USAGE
write_design_import_script file -format dc_shell|genus|fc_shell
set_tsdb_output_directory交付

设置当前 DFT/Pattern 数据仓库。

USAGE
set_tsdb_output_directory path
process_top_module_connectionsTile

预建 Tile DFT 端口并连接 Chip Top。

USAGE
process_top_module_connections [-validate_only]
add_loadboard_loopback_pairsTile

独立 EBScan Tile 验证时闭合外部链。

USAGE
add_loadboard_loopback_pairs -outputs {...} -inputs {...}
set_flat_model_optionsTile

让 flat model 模拟已声明 loopback。

USAGE
set_flat_model_options -emulate_loadboard_loopback_pairs on
run_synthesis综合

运行配置好的 BoundaryScan test logic synthesis。

USAGE
run_synthesis
18

SIGNOFF MATRIX · DELIVERABLES · OWNERSHIP

项目签核清单:从 RTL 一直追到封装和 PCB

真正可量产的 BoundaryScan 交付不是一个 BSDL 文件,而是一组版本一致、可复现、经过结构/时序/仿真/板级验证的证据。
01

架构

TAP ownership、instruction/opcode、BSR/segment chain order、层次接口与 reset strategy 已冻结。

02

库与 RTL

pad/TAP/BScan cell 库、Verilog model、RTL/gate 和 package port list 版本一致。

03

安全

每个输出网络有 safe data、OE disable、允许驱动器和退出模式定义。

04

插入

DRC clean;DftSpecification 已审阅;inserted RTL、ICL/TCD、SDC、TSDB 可复现。

05

BSDL

pin map、IR/opcode、REGISTER_ACCESS、BOUNDARY_LENGTH、cell/control/safe value 完成独立审计。

06

时序

TCK/TDO/control、跨 Tile loop、pipeline、test mode SDC 与 post-layout STA 通过。

07

验证

IR/BYPASS/IDCODE、cell operation、JtagBscanPatterns、gate/post-layout 仿真通过。

08

板级

实板 chain discovery、IDCODE、BYPASS、SAMPLE、互连和安全退出 smoke test 通过。

09

交付

design_id/pattern_id、工具版本、命令日志、报告、波形和已知限制归档。

QUICK GLOSSARY

术语速查

12 / 12
JTAG
Joint Test Action Group 的通称;在芯片/板级测试语境中通常指 IEEE 1149.1 TAP 与边界扫描体系。
TAP
Test Access Port,由 TCK、TMS、TDI、TDO 和可选 TRST 构成,并由 16 状态控制器管理。
IR
Instruction Register,选择当前连接到 TDI/TDO 的数据寄存器及其测试行为。
DR
Data Register,包括 BSR、BYPASS、IDCODE 与用户测试寄存器。
BSR
Boundary Scan Register,由分布在 I/O 边界的扫描单元串接而成。
BSDL
Boundary Scan Description Language,用标准 VHDL 属性描述封装引脚、指令、寄存器和每个边界单元。
TCD_BSCAN
Tessent Core Description 的边扫模型,描述 block/embedded BScan segment,供上层拼链与提取 BSDL。
Safe value
进入驱动型测试指令前应装入的无冲突值;必须与板级拓扑、pull 和 output-enable 极性一致。
Control cell
控制 output/inout pad 是否驱动的边扫单元,可被多个数据单元共享。
Pin order
边界链中 pad/port 的扫描顺序;同时影响物理绕线、链长解释和 BSDL cell number。
EBScan
Embedded Boundary Scan,把边界单元放在含 I/O pad 的子块/physical block 内,由上层拼接。
1149.6
扩展 AC、差分或电容耦合互连测试,引入 AC cell、EXTEST_PULSE/EXTEST_TRAIN 等机制。
THE GOLDEN RULE

先证明链路,再证明单元;先保证安全,再追求覆盖率。

本手册依据本地 Tessent BoundaryScan User’s Manual、Tessent Shell User’s Manual 与 Reference Manual 2026.1 整理。IEEE 标准原文和项目批准的库/封装文档仍是最终规范依据。

● FULL OFFLINE · 19 CHAPTERS