芯片级入口
看懂一条扫描路径,
掌握一整套 IJTAG。
这不是命令摘抄,而是一条从 IEEE 1687 心智模型出发,穿过 ICL、PDL、重定向、 网络插入/提取、验证与性能优化的完整学习路线,并补充 Tessent Shell 的通用数据模型、 DFT/TSDB/SDC 与 Tcl 工作方法。所有技术图均取自 D 盘 2026.1 原始资料。
“描述什么”与“如何访问”分离,是 IJTAG 可复用性的核心。
- 本地文档
- 797
- 完整章节
- 20
- 核心指令
- 54
- 原始技术图
- 12
先理解网络选通,再写 ICL/PDL 和重定向。
掌握数据模型、插入、TSDB、综合与签核。
聚焦结构验证、带宽、Visualizer 与命令边界。
FOUNDATION · WHY IJTAG
先建立心智模型
IJTAG 的价值不只是“多一条扫描链”,而是把片上仪器的结构描述、操作过程和芯片级物理访问解耦。
一句话定义
IJTAG 是面向嵌入式仪器的标准化访问网络:用 ICL 描述“有哪些对象、怎样连接”, 用 PDL 描述“想对仪器做什么”,再由重定向器把仪器级意图转换为芯片级扫描序列。
IP 交付者不需要知道 IP 最终被放在芯片的第几层、前面有几个 SIB; SoC 集成人也不必重写每个仪器的测试过程。层次变化由 ICL 与重定向器吸收。
ICL 定义端口、寄存器、选择逻辑与层次连接。
PDL 只说读什么、写什么、调用哪个过程。
工具决定打开哪些 SIB、选哪条 ScanMux 路径。
输出 PDL、仿真 testbench、STIL 或 ATE Pattern。
NETWORK ANATOMY
网络与访问机制
先会沿着 TDI 到 TDO 追踪一条路径,再去读 ICL。任何复杂网络都能还原成入口、选择、数据寄存器和仪器四类对象。
动态裁剪路径
SIB
关闭时旁路其子网;打开时把 hosted segment 插入活动扫描链。路径更短,但需维护正确选择状态。控制与观测
TDR
串行移入配置值、并行驱动仪器;也可并行捕获仪器状态,再从扫描链移出。多路径选择
ScanMux
根据 ScanRegister、SelectPort 或其他逻辑选择扫描源;重定向器会求一条合法且通常较短的路径。最终目标
Instrument
可以是 MBIST、OCC、EDT、传感器、监控器,或任何有 ICL/PDL 模型的功能块。一次典型扫描装载
Capture → Shift → Update
IEEE 1687 给端口赋予了操作语义和事件时序。以 ICL 中的 ce、se、ue 为例,它们不是普通布尔线,而分别对应捕获、移位和更新阶段。
- 01Capture把仪器/寄存器状态捕获到扫描存储单元
- 02Shift沿当前活动路径移出旧值,同时移入新值
- 03Update将移入值提交到并行输出或选择控制
- 04ApplyPDL 侧由 iApply 触发整条序列的求解
STRUCTURE · ICL
ICL:把硬件说清楚
ICL 不是 Verilog 的替代品。它用受约束的语义模型描述“测试访问所需要知道的结构”,使工具能够做连接追踪、路径求解和严格 DRC。
一个完整的 8-bit 仪器模型
示例来自知识库中的 tdr1。扫描方向由范围声明决定:R[7:0] 从 R[7] 向 R[0] 移位,因此 si 隐式连接 R[7],so 的 Source 是 R[0]。
Module tdr1 {
ScanInPort si;
ScanOutPort so { Source R[0]; }
SelectPort en;
ShiftEnPort se;
CaptureEnPort ce;
UpdateEnPort ue;
TCKPort tck;
ScanRegister R[7:0] {
ScanInSource si;
}
}逐行读法
定义串行数据边界;输出端必须声明 Source。
表示当前仪器或段是否被选入访问路径。
把 TAP/上层控制映射为明确的协议阶段。
定义测试时钟语义;周期不在 ICL/PDL 中定义,而由应用与 Pattern 时序配置决定。
定义可移位寄存器及其串行源、捕获源、复位值、别名等属性。
端口语义必须正确
ScanInPort 不能被普通 DataOutPort 随意驱动;语义错误会被 ICL DRC 捕获,而不只是“网表能连上”。
顶层名必须匹配
顶层 ICL Module 名应与对应 Verilog/VHDL 设计 Module 匹配;ICL 顶层端口也必须存在于设计中。
实例只声明输入连接
ICL Instance 的连接表列出“输入端口由谁驱动”;输出端在被下游输入或顶层 ScanOutPort 引用时建立关系。
模型要表达可求解意图
Alias、Enum、DataMux、DataRegister 等不是装饰,它们让重定向器知道地址、读写使能和返回路径。
进阶:ICL 中还要重点掌握什么?展开
- ScanInterface:把一组端口明确关联为一个主机或客户端扫描接口,避免多接口 Module 出现歧义。
- ResetPort / LocalResetPort:区分全局网络复位与局部、自清除、边沿触发复位;复位关系必须与寄存器 ResetValue 一致。
- Alias + Enum:给位域增加业务语义,例如 mode、address、read/write 命令,让 PDL 不再依赖裸 bit 编号。
- iApplyEndState:为一次 iApply 结束时指定自动返回值,常用于避免 ReadEnable 在最终捕获后再次触发读事务。
- write_latency:写 ScanRegister 后自动插入指定数量的 RTI 空闲 TCK 周期,满足仪器内部动作等待。
INTENT · PDL
PDL:描述意图,让工具找路
PDL 在仪器 IO 边界定义操作过程。iProc 与 Module 绑定,iCall 与实例路径绑定,iApply 则把抽象读写变成当前层级的真实扫描活动。
iProcsForModule tdr1
iProc write_data { value } {
iNote "Writing '$value' to register R"
iWrite R $value
iApply
}
iProc read_data { value } {
iNote "Expecting '$value' from register R"
iRead R $value
iApply
}
# 对层次实例调用
iCall Core3.Block1.MyTdr.write_data 0xff重定向器队列模型
iApply 不是“简单执行前一条命令”。它会对当前排队的多次 iRead/iWrite 共同求解,可能需要先修改 SIB/ScanMux 控制位, 再进行一到多次扫描装载。因此把相互独立的 iCall 合并或并行时,要关注资源/路径冲突。
END-TO-END · RETARGETING
完整的 PDL 重定向流程
真正可执行的顺序是:建立上下文 → 读模型 → 选层级与时序 → 通过 DRC → 生成 Pattern 集 → 写出交付物。
- 01上下文
启动 Tessent Shell,进入 patterns -ijtag;setup 模式用于装载与配置。
- 02输入
read_icl 建 ICL 层次;PDL 并非语法上强制,但实际流程通常通过 iProc 复用。
- 03层级
set_current_design 决定 PDL 要重定向到哪一级。没有匹配顶层 ICL 时可触发 Extraction。
- 04时序
定义 TCK、同步/异步 system clock、timeplate 与输入约束。ICL/PDL 本身不定义时钟周期。
- 05DRC
切换 analysis 时执行最终检查。所有错误必须修复,不能 waiver。
- 06Pattern
用 open/close_pattern_set 封装操作;write_patterns 翻译内部序列并输出目标格式。
MINIMUM VIABLE FLOW
把流程串起来
以下是学习用骨架,不是可直接套用的生产脚本。真实项目需补充库、网表、时钟、test_setup、输入约束与实际层次路径。
tessent -shell
set_context patterns -ijtag
read_icl ./icl/tap.icl ./icl/sib.icl ./icl/tdr1.icl
dofile ./pdl/tdr1.pdl
set_current_design chip
# 根据目标环境定义 TCK / system clocks / timeplate
set_system_mode analysis
open_pattern_set smoke_test
iCall Core3.Block1.MyTdr.write_data 0xff
iCall Core3.Block1.MyTdr.read_data 0xff
close_pattern_set
report_pattern_sets smoke_test
write_patterns ./patterns/smoke_test.v -verilog -replace便于检查高层操作语义和注释;HB-IJTAG payload 不能准确保存为 PDL。
用于对 HDL/门级设计做仿真,是网络结构与访问行为验证的常用交付物。
面向测试机或后续 Pattern 处理;具体格式与 timeplate/ATE 能力相关。
包含 Pattern set、扫描事件、对象层次、注释和失败定位所需的上下文。
IMPLEMENTATION · NETWORK
ICL 提取与 IJTAG 网络插入
Extraction 是“从已有设计找出网络并生成 ICL”;Insertion 是“按 DFT 规格把 SIB/TDR/ScanMux 等硬件加进设计”。方向相反,但常在同一交付流程中前后衔接。
EXISTING DESIGN → ICL
ICL Extraction
当只有仪器/SIB/TDR 等建筑块的 ICL,而没有描述它们互连的顶层 ICL 时,工具从扁平化网表追踪真实网络并生成缺失互连信息。
- 匹配 ICL Module 与 Verilog Module 名称(支持匹配规则)。
- 应用 test_setup、时钟与输入/内部约束后进行连接追踪。
- 输出顶层/层次 ICL、可供 STA 的 SDC 与 graybox 等信息。
- 生成结果立即可用于后续 PDL 重定向,无需重新读回再切 analysis。
DFT SPEC → MODIFIED DESIGN
Network Insertion
在 dft 上下文读入 cell library、设计与仪器 ICL,通过 DftSpecification 连接现有仪器并插入 SIB、TDR、ScanMux,验证后修改 RTL/门级设计。
create_dft_specification生成默认网络规格。- 可通过配置命令或 GUI 编辑规格、层次、主机接口与连接。
process_dft_specification先验证,再生成和修改设计文件。- 处理后可直接
extract_icl得到最终网络 ICL。
载入 DEF 后,placement-aware stitching 会按节点坐标自动优化扫描链顺序,避免默认的字母顺序造成跨区域长连线。优先使用 scan-out pin 坐标;缺失时回退到 instance 坐标。
SIGN-OFF · DEBUG
验证与调试:把网络问题和仪器问题分开
语法合法不等于网络正确。结构验证 Pattern 用 ICL 模型自动产生激励,并在 HDL 或硅上检查实际访问基础设施是否与模型一致。
静态语义
读入 ICL/PDL,先解决解析、宽度、端口语义、复位和 ScanInterface DRC。
连接抽取
用网表追踪或已知顶层 ICL确认路径、层次和实例匹配。
结构 Pattern
create_icl_verification_patterns 生成网络与仪器访问验证序列。
动态仿真
写出 Verilog testbench,与 RTL/门级 HDL 对照;观察 compare failure 与波形。
功能隔离
若结构 Pattern 通过而功能测试失败,把调试范围收敛到目标仪器本身。
推荐命令骨架
extract_icl
set_system_mode analysis
open_pattern_set pset
create_icl_verification_patterns
close_pattern_set
report_pattern_set
write_patterns patterns/check_network.v \
-verilog -replace切换到 analysis 时执行最终检查。资料明确指出:IJTAG DRC 错误不能 waiver,必须全部修复。
失败定位决策树
先查访问网络
- ICL 与 HDL 的寄存器长度/位序是否一致
- SIB、ScanMux 选择源与复位值是否一致
- TAP/WTAP 指令、扫描接口和返回路径是否正确
- TCK、控制信号、test_setup 和输入约束是否成立
聚焦目标仪器
- iProc 参数、预期值和 mask 是否正确
- 仪器动作延迟、状态机和功能时钟是否满足
- 是否需要 write_latency / RTI 等等待周期
- 仪器模型与真实功能行为是否一致
PHYSICAL · PERFORMANCE
时序与性能:大网络为什么会慢
TCK、控制信号与扫描数据都可能跨越多级层次和长距离。IJTAG 的高频瓶颈通常不是逻辑功能,而是源同步路径上的时钟—数据/控制偏差与半周期 timing loop。
三个必须记住的约束
目标是让 TCK、数据和控制路径的传播差异在目标频率下保持小于半个周期。深层物理块应以高于芯片最终目标的 TCK 频率进行 block-level signoff,为顶层保留预算。
Clock-tree balancing
让 TAP 接到较早版本的 TCK,控制 TCK 与网络控制/数据路径的相对延迟。
Scan-input pipelining
在重载 SIB 内串入 1-bit TDR,按层次重同步数据并切断累计长路径;不改变原有网络拓扑。
SIB output retiming
对 timing-loop 中最后一级 SIB 谨慎关闭 so_retiming,可多获得约 0.5 TCK 的 setup 窗口。
Selective TCK stretching
主要拉伸 TAP 非 Shift 状态,为 TMS、reset、Capture/Update/Select 等重载控制信号增加多周期裕量。
先判断是 数据长路径、扫描输出 timing loop 还是 控制/TMS 重载,再分别考虑 pipeline、so_retiming 或 TCK stretching。不要把所有问题都用“降频”掩盖。
SCALE · SIH · SSN · PROJECT ADOPTION
High-Bandwidth IJTAG:从普通 IJTAG/SSN 走向并行仪器访问
HB-IJTAG 不是另一套取代 IEEE 1687 的协议,而是 Tessent 利用现有 Streaming Scan Network(SSN)承载 IJTAG payload,并由 SSN IJTAG Host(SIH)在各物理分区生成本地 TCK 与控制信号。它保留普通 IJTAG 的全局配置入口,同时绕过冗长的上层串行路径,把大量访问并行送入多个 local IJTAG network。
FROM WHAT YOU ALREADY KNOW
把它理解成“SSN 高速公路上的 IJTAG 分发站”
你已经用过普通 IJTAG 与 SSN,可以用下面的映射快速建立直觉:普通 IJTAG 负责寻址、配置和兼容入口;SSN 提供宽总线、高频、流水化传输;SIH 则把 SSN payload 还原成某个物理区域里的 Capture、Shift、Update、Select、Reset 和本地 TCK。
配置 SSN datapath 与 SIH;处理不支持 HB 的操作。
N−1 个数据 bit × 多个 phase,承载并行 payload。
截获完整 host interface,产生本地 IJTAG 时序。
访问本地 SIB、TDR、MBIST/LBIST 与其他仪器。
三个访问模式
- 01Global IJTAG
从顶层 IEEE 1687 接口访问完整网络;常用于配置 SIH。
- 02HB-IJTAG
网络被拆成多个 local IJTAG network,经 SSN + 各自 SIH 并行承载大部分数据。
- 03Global operation in HB mode
SIH 保持工作时访问未被 SIH 托管的 global 部分,常用于恢复 TAP/BYPASS 状态。
SSN 总线 N 位中,N−1 位用于 IJTAG 数据,1 位用于控制信息。
一个 slot 是总线 bit 与时分 phase 的组合;工具会为 SIH 自动分配或共享 slot。
重定向引擎根据 iApply 的访问需求自动判断使用 global、HB 或 HB 内 global 操作。
HB payload 无法被普通 PDL 准确表达;PDL 仅用于人工调试,正式 Pattern 使用 Verilog testbench 或 STIL。
THREE METHODS · ONE DESIGN
普通 IJTAG、传统 SSN 与 HB-IJTAG 到底差在哪里
它们不是简单的“旧/新替代关系”。实际芯片通常三者共存,由访问对象、Pattern 类型和当前网络状态决定使用哪一条路径。
FIRST-ORDER CAPACITY MODEL
可并行 slot 数 ≈(N − 1)× fSSN / fSIH_TCK
若 SSN 为 32-bit、400 MHz,本地 IJTAG TCK 为 200 MHz,则数据位为 31、每个 TCK 含 2 个 SSN phase,理论最多得到 62 个 slot。SIH 多于 slot 时,工具会让多个 SIH 共享 slot;少于 slot 时,总线没有被充分利用。
但 fSSN/fSIH_TCK 变小,可用 phase/slot 减少,可能降低并行度。
只有 local chain 规模接近、能同时工作时才会转化为有效吞吐。
同时增加布线、端口、pipeline、物理实现与 tester 资源成本。
REAL PROJECT · SEVEN GATES
在实际工程中怎样落地
最稳妥的做法不是直接把全芯片 IJTAG 都切到 HB,而是选择 2–4 个访问量大、边界清楚、规模接近的 physical block 做 pilot,用同一组 iProc 对普通 IJTAG 与 HB-IJTAG 做 A/B Pattern 对比。
- 01确认值得做:先量化普通 IJTAG 的瓶颈
统计目标 Pattern 的 scan load、TCK/tester cycles、最长打开路径、重复执行次数与生产测试占比。若只是偶尔写几十位控制寄存器,SIH 配置和模式切换成本可能大于收益;若多个 block 反复装载 MBIST/LBIST setup 或采集大量状态,HB 才更有价值。
输出:baseline Pattern 与测试时间构成。 - 02划分 local network:优先按 physical block
通常从“每个 physical-block level 一个 SIH”起步。每个 local network 应自包含,不能依赖另一个 local network 的可变寄存器、side input 或 side output;否则工具可能频繁退回 global IJTAG,甚至出现顺序相关仿真问题。
输出:SIH ↔ local ICL register ownership 表。 - 03做容量与平衡:同时考虑 slot 和 chain length
用 SSN bus width、bus period 与目标 local TCK 估算 slot;再统计各 SIH 下典型 scan load 长度。多个 SIH 共用 TMS,packet 内 scan load 长度需要协调,极大的 local network 会迫使其他 SIH overshift padding。
输出:slot budget、每 SIH p50/p95 scan length 与 padding 风险。 - 04准备完整 host interface,再插入 SIH
SIH 必须截获包含 ScanIn、ScanOut、CaptureEn、ShiftEn、UpdateEn、Select、Reset、TCK 的完整 host scan interface。分两轮插入时,第一轮 SIB/TAP 需要
输出:DFT specification、插入后 ICL/RTL、HB-IJTAG DRC。provide_full_host_scan_interface : on,第二轮再把 SIH 放到 SSN datapath;若同一轮插入,工具可自动启用。 - 05统一 Pattern 与 SDC 的时序来源
全局 TCK 与 SIH 本地 TCK 是两套预算。把
输出:timing side files、Tessent SDC、CDC/STA 报告。set_ijtag_retargeting_options和set_load_unload_timing_options放在 side file 中,在 Tessent setup/DRC 前和综合/STA 的默认变量之后 source 同一版本。 - 06确保 SSN datapath 先配置,再执行 HB iCall
有分支或 mux 的 SSN 必须先选择覆盖所有目标 SIH 的 active datapath。配置 iProc 应放在 test_setup 最前;core-level TCD 中标记
输出:test_setup 顺序、active SIH 清单、smoke Pattern。-front -non_retargetable,到 top-level 重新加入完整 datapath 配置。 - 07用统计而不是直觉签核
在 SIH 初始化后检查 active hosts、HB packet、utilization、global fallback 次数、padding、slot mapping 与 event 顺序;再做 RTL/gate/post-layout 仿真。只有功能等价、时序闭合且总 tester cycles 明显下降,才扩大部署。
输出:Global vs HB A/B 报告及量产交付包。
A · INSERTION
在已有 SSN 上增加 SIH
IjtagHost 是 SIH 的 DftSpecification wrapper。示例截获当前设计边界的完整 IJTAG host interface;已有 SSH 可以共存,但 HB-IJTAG 本身不要求必须有 SSH。
# DftSpecification 摘要:在现有 SSN datapath 上插入 SIH
# 前一 insertion pass 必须已经提供完整 IJTAG host scan interface
SSN {
ijtag_host_interface : Sib(ssn);
DataPath(1) {
output_bus_width : 8;
Pipeline(1) {}
IjtagHost(1) {
Connections {
intercepted_scan_interface : CurrentDesign/my_ijtag_int;
}
}
# 已有 SSN scan 架构时可继续保留 SSH;HB-IJTAG 本身不强制要求 SSH
ScanHost(1) {}
Receiver1xPipeline(in) {}
}
}B · TIMING SIDE FILE
一份设置同时服务 Pattern 与 STA
本地 TCK 周期和额外控制裕量受所有 active SIH 中能力最弱的节点限制。示例参数不能直接照搬,应从 SSN clock、SIH 属性、物理实现与 tester timeplate 共同推导。
# Tessent_SSN_and_HB-IJTAG_setup.tcl
# 数值仅为示例:必须由项目 STA/ATE 预算确定
set_ijtag_retargeting_options \
-hb_ijtag_initial_ssn_bus_flush on \
-hb_ijtag_extra_control_setup_hold_cycles 2 \
-hb_ijtag_tck_period 5ns
set_tester_options -timeplate_constraints none
set_load_unload_timing_options -usage ssn \
-shift_clock_period 10ns \
-ssn_bus_clock_period 2.5ns \
-scan_en_setup_extra_cycles 1 \
-scan_en_hold_extra_cycles 1 \
-edt_update_setup_extra_cycles 1 \
-edt_update_hold_extra_cycles 1C · PATTERN & EVIDENCE
让 HB 自动启用,并留下可审阅证据
满足“SIH 已插入、位于 active SSN datapath、HB 可用”后,重定向器会自动选择 HB。查询必须放在 SIH 初始化之后,否则看到的 active 状态和参数可能过期。
set_context patterns -ijtag
# read design / ICL / PDL, then set_current_design
# SETUP:在 DRC 和 test_setup retargeting 之前加载同版 timing side files
source ../data/Tessent_IJTAG_setup.tcl
source ../data/Tessent_SSN_and_HB-IJTAG_setup.tcl
check_design_rules
# SSN 有分支或 mux 时:datapath 配置必须是 test_setup 的第一个 iCall
set_test_setup_icall -front configure_required_ssn_datapath
open_pattern_set hb_smoke
iCall blockA.mbist.run
iCall blockB.mbist.run
close_pattern_set -network_end_state keep
# SIH 初始化完成后再看实际活动节点、切换次数、padding 与利用率
report_hb_ijtag_data -active_ssn_ijtag_hosts -pattern_set hb_smoke
report_hb_ijtag_data -statistics -pattern_set hb_smoke
set events [get_pattern_set_data hb_smoke -event_list]
puts $events
# 交付使用 Verilog testbench 或 STIL;PDL 仅用于阅读/调试,不可再重定向WHY IT WINS
相对传统方法的优势
- 跳过全局串行开销
payload 直接送达 local network,不必让每次 scan load 都穿过上层 TAP/SIB 长路径。
- 多 local network 并行
SSN 的宽度和 phase 被转换成多个 slot,可同时服务多个 SIH。
- 更容易关闭本地时序
SIH 在物理区域内产生 TCK 与控制信号,减少全芯片 IJTAG 控制树的长度与扇出。
- 保留 global fallback
不支持 HB 的操作仍可由工具在 HB 内 global operation 或完整 global IJTAG 中执行。
- 复用现有 SSN
已有 SSN 总线、pipeline 和端口规划时,可以增加 SIH 承载 IJTAG,不必另建一条同等宽度的数据网络。
WHAT YOU PAY
复杂度与代价
- 额外硬件与接口
SIH、完整 host interface、局部 clock/control mux 与必要 pipeline 都增加面积和物理约束。
- 两套时钟与 CDC
global TCK 用于 SIH 配置,本地 TCK 来自 SSN bus clock;切换、互斥与 MCP/false path 必须由生成 SDC 正确表达。
- 架构规划更敏感
local network 依赖、SIH 数量、chain 不平衡或 SSN mux 都会直接影响效率。
- Pattern 可移植性下降
最终 HB payload 不能用可再次重定向的普通 PDL 表达,也不支持 SVF 交付。
- 工具与许可门槛
生成 HB-IJTAG Pattern 需要有效的 IJTAG Pro 许可,并应锁定 Tessent 版本、Reference 选项和 tester 支持范围。
FAILURE PREVENTION
最容易踩坑的地方
以下问题不一定让命令直接失败,但会使 Pattern 静默退回 global、利用率骤降,或在门级/ATE 阶段才暴露。
一个 SIH 下的寄存器影响另一个 local network,或受 primary/global 可变信号驱动。优先重新分区;不要把 HB_IJTAG3/7 降级后就当问题消失。
只有 ScanIn/Select 的默认 host interface 不够。SIH 需要八类 IJTAG 信号都有干净的截获点,分轮插入时尤其容易遗漏。
少量超大 core 与大量小 network 混在同一批次会产生长时间 overshift。按 scan load 统计重新拆分或改变并行批次。
iReset、iScan、iApply -end_in_pause、manual broadcast、boundary scan、SVF 导入等会退出 HB。检查 statistics 中 global operation 与切换次数。
SIH/local network 不能被 local network 外部的局部 reset 直接复位;局部网络内部必须生成其 local reset。SSN 元件无可靠 reset 时要先 flush。
Pattern、综合、STA、layout 使用不同 hb_ijtag_tck_period 或 SSN bus period,会造成仿真通过但时序不成立。side file 必须版本化并同源。
跨 local network 的隐式依赖可用 hb_ijtag_iapply_execution_order strict 加 padding 保序,但会损害性能;根治方案是去掉跨网依赖并正确建模。
HB PDL 只用于人工阅读和调试,不能重新读入重定向;正式交付用 Verilog testbench 或 STIL,且 HB Pattern 不写 SVF。
ADVANCED · PERSISTENT MODE
什么时候考虑让 SIH 跨 Pattern 保持激活
Persistent HB-IJTAG 可减少 test_setup、ssn_setup、ssn_end、test_end 之间反复关闭和重新初始化 SIH 的成本。SSN ATPG payload 运行时,SIH 进入 sleep;之后可恢复 HB,而不用重新走完整配置。
- 前提
所有 active SIH/SSH 都支持 persistent mode,并使用相同 bus width。
- 拓扑限制
active host 之间不能存在 bus permutation;只允许在第一个 active host 之前或最后一个之后。
- 配置入口
-test_setup_network_end_state reset_with_hb_ijtag_active,test_end 使用reset_all;默认 auto 让工具判断。 - 不要启用的场景
SSN retention、burn-in、LVX loop/verification,以及不满足 DRC 的拓扑应关闭 persistent mode。
DEBUG & OPTIMIZATION LOOP
一个可重复的调优闭环
- 01确认覆盖
get_hb_ijtag_data -ssn_ijtag_hosts:哪些 SIH 存在、哪些寄存器应由它们驱动。 - 02确认激活
report_hb_ijtag_data -active_ssn_ijtag_hosts:目标 SIH 是否在当前 Pattern 中真正活动。 - 03量化收益
-statistics:HB/global cycles、packet、利用率、切换次数和 strict-order padding。 - 04下钻 packet
get_pattern_set_data:查看 event、SIH scan、slot、chain length 与 padding。 - 05对应结构
把低利用率映射到 local chain 不平衡、slot 共享、SSN datapath 或 unsupported operation。
- 06A/B 回归
同一 iProc 集合分别关闭/启用 HB,比较功能、cycles、仿真、STA、面积和 tester 交付。
满足这些条件,收益通常更确定
- 已经有稳定的 SSN bus 与时钟/物理实现方法
- 多个 physical block 都有大量、重复的 IJTAG 访问
- local network 可以独立、自包含并做到规模近似
- global IJTAG 的 cycles 或 TCK closure 已成为量产瓶颈
- 交付链支持 Verilog/STIL,且可使用 IJTAG Pro
这些情况不应为了“新”而上 HB
- IJTAG 主要用于少量一次性配置,payload 很小
- local network 之间存在大量动态依赖或共享控制
- SSN datapath 经常重配置,目标 SIH 无法同时保持 active
- 流程必须以可重定向 PDL 或 SVF 作为正式交付
- 项目尚未稳定普通 IJTAG/SSN 的 DRC、SDC 与仿真闭环
本专题依据本地知识库中的 Tessent IJTAG User’s Manual 2026.1:High-Bandwidth IJTAG、SIH、DFT Insertion、Pattern Generation、Planning、Timing/SDC 与 Limitations 章节,以及 Tessent Shell Reference 的 HB introspection 指令整理。
HB-IJTAG 最高效率来自多个 SIH 同时接收数据。所有 SIH 共享 TMS,且扫描装载长度需要协调;若少数本地网络远大于其他网络,会出现 padding 与利用率下降。还要避免频繁切回 Global IJTAG,因为重新配置 SIH 的开销很大。
PRACTICE · DELIVERY
从零到可交付:一套可执行的学习与项目检查表
先用最小网络证明模型、访问和验证闭环,再扩展到层次化插入与性能优化。每一步都应该产生可检查的中间结果。
- 画出 TAP → SIB → TDR → Instrument → TDO 的路径。
- 手写一个 8-bit TDR ICL,确认端口语义与位移方向。
- 编写 write_data / read_data iProc,并在单实例上 iCall。
- 生成第一个 Verilog testbench,在波形中识别 Capture/Shift/Update。
验收:能解释为什么一次 iApply 可能包含多次 scan load。
- 把同一仪器实例化到两级层次,比较 instrument/core/chip 重定向结果。
- 分别做 top-down 与 bottom-up extraction,理解 Module matching。
- 用 DftSpecification 插入 SIB/TDR,并检查生成的 ICL/Verilog。
- 运行 ICL verification patterns,故意制造宽度或连线错误并定位。
验收:能区分“ICL 描述错”和“真实网表连错”。
- 为 TCK、控制和数据路径建立半周期时序预算。
- 识别长数据路径、SIB timing loop 与重载控制信号。
- 比较 pipeline、so_retiming、TCK stretching 的适用场景。
- 评估 HB-IJTAG 的 SIH 分区、slot 平衡和 Global/HB 切换开销。
验收:能把吞吐问题归因到网络架构或物理时序,而不是只会降频。
PROJECT GATE
项目交付前逐项确认
- ✓ 每个 instrument Module 的 ICL/PDL 都有版本与接口契约
- ✓ 顶层 ICL Module 名与 current design 匹配
- ✓ ScanInterface、复位、位宽、位序和默认值无歧义
- ✓ setup → analysis 过程中所有 IJTAG DRC 清零
- ✓ Pattern set 中包含明确的 iReset / 初始化策略
- ✓ 结构验证 testbench 在 RTL/门级视图通过
- ✓ ICL extraction 约束与重定向/ATPG setup 兼容
- ✓ block/chip TCK 频率与半周期预算完成签核
- ✓ placement-aware 连接与物理坐标已检查
- ✓ 最终 PDL、testbench、STIL/ATE 与 reports 可追溯
高频错误与纠正
ICL 需要表达端口语义与可求解结构;只复制连线而忽略 Select/Reset/ScanInterface 会导致歧义或 DRC。
功能用例覆盖通常不足,先生成结构验证 Pattern,证明每段网络和寄存器都可从外部访问。
它决定重定向目标层级,也参与是否自动触发 ICL Extraction 的判断。
多个调用可能争用选择位、路径或共享寄存器;应检查 iMerge 冲突与生成序列。
标准模型给语义和事件关系,时钟周期来自 Tessent/Pattern/ATE 的时序与 timeplate 配置。
先用路径与 timing loop 分类,再选 pipeline、retiming、stretching、placement 或 HB-IJTAG。
TESSENT SHELL USER’S MANUAL · SYSTEM VIEW
Tessent Shell:先理解工具的整体工作模型
本章依据 Tessent Shell User’s Manual 2026.1,而不是 IJTAG 专册。它把工具调用、context/mode/design level、三种数据模型、Tcl 自省、RTL DFT 插入、层次化流程、TSDB 与 SDC 串成一张完整地图,再把 IJTAG 放回这套大系统中理解。
Shell 是统一 DFT 环境,不是单一 IJTAG 工具
Tessent Shell 同一环境承载 DFT 硬件插入、制造测试 Pattern 生成,以及诊断、良率分析等 post-silicon 任务。不同产品能力通过 context 暴露,但脚本、数据对象、属性和 Tcl 交互方式保持一致。
- 把“产品功能”与“共同 Shell 机制”分开学习。
- 先确认许可证/context,再判断命令是否应该可用。
- 用 dofile 与 Tcl proc 固化项目流程,而不是依赖手工会话。
任何命令都落在三轴坐标中
Context 决定当前要做哪类工作,system mode 表示设计处于 setup、insertion 或 analysis 哪个状态,design level 则说明当前处理的是 chip、physical block 等交付层级。
- setup:加载库、RTL/网表、ICL、约束与配置。
- analysis:完成相应 DRC 后进行分析、建规范或生成 Pattern。
- insertion:执行会改变设计结构的插入工作;并非每个 context 都使用全部 mode。
三种数据模型回答不同问题
Hierarchical design model 保留模块与实例边界;flat design model 服务需要扁平连通性的 DRC/分析;ICL model 描述 IEEE 1687 仪器网络的逻辑端口、寄存器、复用和访问关系。
- “设计里有什么”由 module/instance/port/pin/net 回答。
- “IJTAG 如何访问”由 ICL Module/instance/port/pin 回答。
- 同名或相关对象并不天然等价,需要显式映射和 name mapping。
Collection 与属性是自动化的核心
get_* 命令返回 collection,让大规模对象筛选和关系计算留在工具后端;Tcl 负责组合条件、循环、命名空间与流程控制。get/set_attribute_value 则把对象状态变成可查询、可编辑的工程接口。
- 优先传 collection,不要解析 report 文本。
- 复杂查询使用 -filter、-of_* 与层次边界缩小范围。
- catch_output 只用于已设计好失败分支的局部命令。
Flat 与 hierarchical 是两种组织方法
Flat flow 通常沿“DFT 插入 → 综合 → 可选 scan insertion → gate-level ATPG”推进。Hierarchical flow 以 physical block 分治,通常先 top-down 规划接口与架构,再从最低层 block bottom-up 实现、验证和向上集成。
- 层次化可并行开发、局部 ECO,并缩小 ATPG/诊断问题规模。
- 上层不能只拿 child RTL;还要拿接口视图、ICL/PDL、graybox 与版本标识。
- tiled、post-layout、automotive 与 SSN 工作流都建立在同一数据/交付思想上。
TSDB 是跨步骤的数据契约
TSDB 以 design_name、design_id、pattern_id 和 view 组织修改后的 RTL/网表、ICL/PDL/TCD、接口或 graybox、Pattern 数据库与脚本。它让后续 pass、团队和上层设计重新打开正确版本,而不是猜测一组散落文件。
- rtl1、rtl2、gate 等 design_id 表示不同处理阶段或视图。
- open_tsdb 暴露仓库;read_design 选择 full/interface/scan_graybox/ijtag_graybox。
- 上层集成多个 child TSDB 时,必须处理重复视图与优先级告警。
TESSENT SHELL OPERATING MODEL
从启动到可复用交付的八个证据点
User Guide 的主线不是背命令,而是在每个状态转换前后确认:当前环境、数据模型、设计视图与输出版本是否一致。
- 01启动与脚本入口
tessent -shell · dofile · .tool_startup证据:版本、参数、许可证与启动初始化可追溯。
- 02定义工作坐标
set_context · set_design_level · set_tsdb_output_directory证据:context、RTL/gate 层级、设计层级与输出仓库明确。
- 03加载源数据
read_cell_library · read_verilog/read_vhdl · read_icl证据:库、HDL、ICL 版本和读取顺序被记录。
- 04建立当前设计
set_current_design · set_design_sources证据:top、Module matching 与 child 定义来源一致。
- 05对象自省与 DRC
get_* · get_attribute_value_list · check_design_rules证据:关键对象/属性存在,DRC 无 error 并进入 analysis。
- 06声明并处理 DFT
create_dft_specification · process_dft_specification证据:wrapper 配置、validate_only 结果、插入 transcript 与修改设计可评审。
- 07提取下游契约
extract_icl · extract_sdc · write_design_import_script证据:ICL、IJTAG graybox、SDC 与综合导入脚本成套且同版。
- 08跨层次复用
open_tsdb · read_design · write_tsdb_data证据:design_id/view/pattern_id 唯一,child 与 top 使用同一版本矩阵。
ICL 对象与设计对象如何双向定位?
ICL → design:get_module -of_icl_module、get_instance -of_icl_instance、get_pins -of_icl_pins、get_ports -of_icl_ports。这些映射用于从抽象访问网络回到真实设计结构。
design → ICL:get_icl_module -of_module、get_icl_instance -of_instance、get_icl_pins -of_pins、get_icl_ports -of_ports。遇到复杂端口、转义名称或综合改名时,要同时核查 name mapping,不能只比较字符串。
USER GUIDE · RTL DFT SKELETON
把状态、数据与交付放进同一条流程
示例用于理解命令顺序和证据边界,不代表所有产品配置;DftSpecification 的具体内容仍应按目标 DFT IP 与项目架构定制。
# Tessent Shell:一个可审查的 RTL DFT 骨架
set_context dft -rtl
set_tsdb_output_directory ./tsdb_outdir
# 1) 建立库与设计数据模型
read_cell_library ./lib/technology.tcelllib
read_verilog ./rtl/chip_top.sv -format sv2012
set_current_design chip_top
# 2) DRC 通过后进入 analysis
check_design_rules
# 3) 创建、验证并处理 DFT 规范
set spec [create_dft_specification]
process_dft_specification $spec -validate_only
process_dft_specification $spec
# 4) 生成下游交付并保存在 TSDB 语境中
extract_icl
extract_sdc
write_design_import_script ./out/chip_top.dc.tcl -format dc_shell -replaceDESIGN INTROSPECTION · EDITING · MAPPING
设计自省与编辑:让脚本操作对象,而不是文本
Tessent Shell 的通用能力建立在 object、collection、attribute 与对象关系之上。本章对应 User’s Manual 的 Design Introspection and Editing、Simulation Contexts、Automatic Design Mapping,以及 ICL/Design 对象互查。
Object specification
命令接收的 object specification 可以是名称模式、已有 collection 或其他对象关系查询的结果。名称只负责找到候选对象;对象类型、current design、层次范围和过滤条件共同决定最终集合。
- 先缩小对象类型,再用
-of_*表达结构关系。 - 大设计使用
-filter与明确层次边界,避免无目的全局遍历。 - 转义层次名、复杂 SystemVerilog port 和综合改名必须按 Tcl list 与 name mapping 规则处理。
Collection 与属性
collection 是工具后端中的对象容器,不是普通的打印字符串。把 collection 继续传给 get_*、trace、编辑和属性命令,能够保留对象身份并减少 Tcl 与内核之间的数据搬运。
get_attribute_value_list按对象顺序返回 Tcl list。set_attribute_value返回修改成功的对象 collection。- 使用
-is_specified区分显式值与默认/推导值;不要把“当前显示值”误当成用户约束。
Design editing
设计编辑命令可创建、删除或移动连接,替换实例并处理复杂 signal/bundle。编辑前必须确认当前对象可编辑、数据模型正确,并理解该修改会在 DftSpecification 处理、写出设计和 TSDB 中怎样落盘。
- 连接编辑:create_connections、delete_connections、move_connections。
- 结构编辑:create_instance、replace_instances 与属性控制。
- 复杂 pad、interface、struct/array 端口应优先使用 wrapper/specification 所提供的结构化入口。
Mapping 与 simulation context
Automatic Design Mapping 用于在综合前后更新 ICL/TCD 对象并控制名称匹配;simulation context 则让同一设计在不同模式、约束或模拟状态下进行自省与分析。两者都要求把“逻辑对象身份”与“某个视图中的名字”分开。
- post-synthesis update 前保存 RTL→gate 的映射依据。
- 复杂 port 和 escaped name 不能只靠字符串相等。
- ICL 与 design 对象用
-of_icl_*/-of_*双向查询验证。
# collection 留在工具数据模型中,不解析 report 文本
set cores [get_instances -hierarchical -filter {is_physical_block == true}]
set core_ports [get_ports -of_instances $cores]
# 批量读取属性;返回顺序与输入对象一致
set names [get_name_list $cores]
set levels [get_attribute_value_list $cores -name design_level]
# ICL 与真实设计对象双向映射
set ijtag_inst [get_icl_instance -of_instance [get_instances u_mbist]]
set rtl_inst [get_instance -of_icl_instance $ijtag_inst]
# 只有可编辑对象和合法属性才应被修改
set_attribute_value $rtl_inst -name preserve -value trueDFT ARCHITECTURE · RTL INSERTION · WORKFLOWS
DFT 架构与工作流:从 flat 到 hierarchy、tile 与 post-layout
User’s Manual 将工作流按设计组织方式和生命周期展开。完整版不把它们混成一条固定脚本,而是先确定架构边界,再选择适合 flat、hierarchical、tiled、automotive 或 SSN 的实现路径。
单一顶层推进
第一轮 MemoryBIST/Boundary Scan → 第二轮 EDT/OCC/LBIST → synthesis → scan insertion → gate ATPG
规模可控、边界少;但大设计运行时间和 ECO 影响范围更大。physical block 分治
先 top-down 规划 clock/resource/schedule,再 bottom-up 完成 block 插入、graybox、ATPG 与 top retarget
并行开发和局部 ECO 友好;接口、wrapper、design_id 与交付矩阵必须严格。重复 tile 复用
统一 tile 端口与 clocking,生成 IJTAG graybox,完成 tile pattern 后在 chip/package 层 retarget
复用效率高;有/无 TAP、BISR、primary SSN port 的 tile 流程不同。布局后签核
soft-link TSDB + post-layout netlist,重验 MemoryBIST、Boundary Scan、IJTAG 与 scan-inserted ATPG
验证布局/优化没有破坏 DFT 连通、时序和 Pattern 行为。汽车级扩展
core/top 两轮插入、scan/ATPG/retarget、LogicBIST、UDFM、pattern sorting 与 functional-mode tolerance
面向更强的安全、在系统测试和故障模型要求。流式扫描网络
block/top SSN 插入、综合、post-synth TSDB、scan、ICL pattern 验证、ATPG 与 retarget
高带宽与并行调度;还要签核 throttling、clock、SDC、ATE debug 与 failure mapping。先规划,再 bottom-up
层次 DFT 的 top-down 规划要提前定义 physical region、wrapped core 边界、internal/external mode、OCC/clock 架构、可用资源和并行测试调度。否则 block 完成后,上层可能发现端口、时钟或带宽无法拼合。
RTL DFT 分析与插入
RTL 阶段除常规 DRC 外,还可评估代码复杂度、test-point suitability、可编辑区域与 gate-node location;随后执行 test point、X-bounding、wrapper、smart uniquification 或 incremental insertion。评分是定位风险的线索,不替代对具体 RTL 与约束的审阅。
多轮插入的边界
典型流程把 MemoryBIST/Boundary Scan/IJTAG 与 EDT/OCC/LogicBIST 分在不同 pass,并可能再增加 RTL test point/wrapper pass。每轮都应从明确的输入 design_id 开始,产生新的设计视图、ICL/SDC 和可回归验证的交付。
TILED EBSCAN · PASS-THROUGH TILE · TCD_BSCAN
Tile 边扫穿越非边扫模块:你的模块到底要做什么
适用场景:当前 Tile 不做普通边界扫描、没有 IP 级 BScan cell,但相邻 Tile 的 Embedded Boundary Scan 必须穿过当前 Tile,到达 Chip Top 的 TAP。依据 Tessent BoundaryScan 与 Tessent Shell User’s Manual 2026.1 的中间 Tile 流程。
不要在你的功能输入/输出上插边界扫描单元;要把本模块实现为一个可提取、可验证、可签核的 EBScan 传输/拼接节点。TAP 侧使用一个主 HostBScanInterface(client),每个相邻 EBScan Tile 使用一个 SecondaryEBScanInterface(id),长距离往返路径按时序需要插入 EBScanPipeline。真实端口与连接必须在 Chip Top 规划阶段预建。
接收最终 scan_out
SecondaryEBScanInterface
可选 Pipeline
与 Boundary Scan cell
普通边扫 cell
不扫描当前模块功能端口,不为这些端口建立 input/output/control cell,也不声称本 Tile 能执行 EXTEST/SAMPLE。
结构化穿越接口
保留主接口、下游次接口、串行返回与控制传播语义,让 Tessent 能追踪完整链,而不是只看到一束普通 wire。
EBScanPipeline
跨 Tile 线长或 loop timing 紧张时插入。每一级会进入 tcd_bscan,被视为 internal BScan cell,并增加寄存器长度。
Chip-level BSDL
Tile 本地 loopback 只证明当前交付;真正链顺序、指令行为与板级访问以最终 Chip Top 提取和仿真为准。
INTERFACE CONTRACT
必须冻结的信号契约
下表使用 neighbor 作为一个相邻 Tile 的接口 ID。若有两个方向,就分别建立 r1、r2,并冻结串行链顺序。
| 方向 | 主接口 / 你的 Tile | 次接口默认命名 | 职责 |
|---|---|---|---|
| 上游 → 当前 | bscan_select/reset/clock | neighbor_bscan_to_select/reset/clock | 选择、复位并驱动下游边扫时钟 |
| 上游 → 当前 | bscan_capture_en | neighbor_bscan_to_capture_en | 控制 Capture-DR 行为 |
| 上游 → 当前 | bscan_shift_en | neighbor_bscan_to_shift_en | 控制串行移位 |
| 上游 → 当前 | bscan_update_en | neighbor_bscan_to_update_en | 控制 Update-DR 行为 |
| 上游 → 下游 | bscan_scan_in | neighbor_bscan_to_scan_in | 把当前串行链送入相邻 Tile |
| 下游 → 上游 | bscan_scan_out | neighbor_bscan_from_scan_out | 把相邻 Tile 的串行输出送回 TAP |
| 按需 | force_disable、JTAG select、AC signals | neighbor_bscan_to_* | 隔离、JTAG 路由或 1149.6/AC 测试;是否存在必须两端一致 |
IMPLEMENTATION FLOW
从架构冻结到 Chip Top 签核
下面以“一个 TAP 侧主接口 + 一个相邻 EBScan Tile”为最小工程模板。端口名和实例名需要替换成项目实际命名。
先做 Top-down 连接规划
冻结 TAP 所在 Tile、相邻 Tile 数量、完整控制束、串行顺序、每条边的驱动方向、physical pin location 与 TCK/loop timing 预算。Tiled design 的 Chip Top 通常只有 wire、没有可补救的逻辑,因此端口缺失要在 bottom-up 插入前解决。
- 只有一个相邻 Tile:一个
SecondaryEBScanInterface(neighbor)。 - 多个相邻 Tile:每个分支一个 secondary interface;DftSpecification 中的排列就是需要评审的链路顺序。
- 当前 Tile 的主接口接顶层端口时,不设置
ijtag_host_interface;只有 TAP 同一 pass 插入时才指向Tap(id)/HostBscan。
用 TopModuleConnections 预建真实端口
如果现有 Chip 集成自动化没有生成 DFT 端口,使用 ChildBlock 声明模块接口、用 Instance 声明每个实例的输入来源,再运行 process_top_module_connections。先验证,后处理。
# 在 chip_top 层预建端口并完成真实 Tile 互连
set_context dft -rtl -design_id rtl0
read_verilog ../rtl/chip_top.v
set_current_design chip_top
# 端口名是项目示例;input_port_sources 顺序必须严格对应 input_ports
read_config_data -from_string {
TopModuleConnections(chip_top) {
ChildBlock(my_tile) {
file_name : ../rtl/my_tile.v;
input_ports : bscan_select,
bscan_reset,
bscan_clock,
bscan_capture_en,
bscan_shift_en,
bscan_update_en,
bscan_scan_in,
neighbor_bscan_from_scan_out;
output_ports : bscan_scan_out,
neighbor_bscan_to_select,
neighbor_bscan_to_reset,
neighbor_bscan_to_clock,
neighbor_bscan_to_capture_en,
neighbor_bscan_to_shift_en,
neighbor_bscan_to_update_en,
neighbor_bscan_to_scan_in;
Instance(u_my_tile) {
input_port_sources : u_tap_tile/mid_bscan_select,
u_tap_tile/mid_bscan_reset,
u_tap_tile/mid_bscan_clock,
u_tap_tile/mid_bscan_capture_en,
u_tap_tile/mid_bscan_shift_en,
u_tap_tile/mid_bscan_update_en,
u_tap_tile/mid_bscan_scan_in,
u_neighbor_tile/bscan_scan_out;
}
}
}
}
process_top_module_connections -validate_only
process_top_module_connectionsinput_port_sources 与 input_ports 必须按位置一一对应。这里是真实 Chip 互连,不是验证用 loopback;项目若已有可靠 RTL 生成器,也可由生成器完成,但端口契约必须相同。
在中间 Tile 插入 HostBScanInterface
当前 Tile 没有 TAP、没有 pad BScan cell,仍可由 HostBScanInterface 定义链起点/终点并建立 secondary EBScan 端口。下面是官方中间 Tile 示例简化成一个 neighbor 后的结构。
# 中间 Tile:没有功能 I/O BScan cell,只插入 EBScan 穿越/汇聚结构
set_context dft -rtl -design_id rtl1
read_cell_library ../lib/cells.tcelllib
read_verilog ../rtl/my_tile_with_dft_ports.v
set_current_design my_tile
set_design_level physical_block
# Tile 规则禁止底层任意改动模块边界
set_dft_specification_requirements -design_type tile
read_config_data -from_string {
DftSpecification(my_tile,rtl1) {
allow_port_creation_on_current_design : off;
EmbeddedBoundaryScan {
HostBScanInterface(client) {
# 最后一级返回 TAP 侧;关闭额外 SO retiming,保留完整 TCK 周期
EBScanPipeline(client_out) {
so_retiming : off;
}
EBScanPipeline(from_neighbor) {}
SecondaryEBScanInterface(neighbor) {}
EBScanPipeline(to_neighbor) {}
}
}
}
}
process_dft_specification
extract_icl -create_ijtag_graybox on
# 新阶段:为无 TAP 的当前 Tile 提取独立签核用 tcd_bscan
set_dft_specification_requirements -tcd_bscan_extraction onallow_port_creation_on_current_design : off 用来证明 Top 层已把端口建齐;set_dft_specification_requirements 的多次调用不累加,进入新阶段时应重新声明当前阶段所需选项。
独立 Tile 用 loopback 做签核
当前 Tile 独立运行时,相邻 Tile 不在模型中,串行链无法自然闭合。此时才把 secondary 的 to_scan_in 与 from_scan_out 成对回环,提取 tcd_bscan 并运行 Boundary Scan signoff patterns。
# 只在 my_tile 独立验证时,把外接 neighbor 分支临时闭合
# 列表按位置配对:output[0] -> input[0]
add_loadboard_loopback_pairs \
-outputs {neighbor_bscan_to_scan_in} \
-inputs {neighbor_bscan_from_scan_out}
# 必须在 extract_icl 完成后才开启 emulation
set_flat_model_options -emulate_loadboard_loopback_pairs on
check_design_rules
set_system_mode setup
set_context patterns -ijtag
check_design_rules
create_patterns_specification
process_patterns_specification
set_simulation_library_sources -Y ../lib -extensions {v}
run_testbench_simulations含回环的 TCD 会标记 extracted_with_loopbacks : on,只可用于该独立 Tile 的 signoff verification pattern。真实 Chip Top 必须移除 emulation,连接实际 neighbor,并重新追踪完整链。
在 Chip Top 完成端到端集成
加载各 Tile 同一基线的 interface/graybox、ICL 与 tcd_bscan,读入最终 Chip Top netlist,确认 TAP 控制束经过当前 Tile 到达 neighbor,neighbor 的 scan_out 再经当前 Tile返回 TAP。随后在 Chip 层提取最终 BSDL,并用最终网表运行 Boundary Scan pattern 仿真。
- Tile 本地 TCD 证明“当前模块内部结构正确”;Chip BSDL 证明“整条链次序和指令行为正确”。
- 每次综合/ECO/布局后都要复查端口方向、链长、pipeline 数量和 instance mapping。
- 跨 Tile 链只有在 Chip 层才完全可追踪,不应从某个 Tile 的本地 loopback 结果推断最终链序。
SDC 与物理签核
extract_icl/extract_sdc 会生成 Boundary Scan 相关约束。综合/STA 中 source 当前 insertion pass 的 SDC,先执行 tessent_set_default_variables,再执行项目时钟映射与 tessent_set_non_modal。重点检查 TAP→当前 Tile、当前→neighbor、neighbor→当前→TAP 三段接口时序。
client_out是返回 TAP 侧的最后 pipeline 时,so_retiming : off可给 tiled loop interface 一个完整 TCK 周期;仍需以本项目 STA 结果为准。- 每个
EBScanPipeline都增加一个 internal BScan cell:时序更容易,面积、链长与 Pattern 期望值也随之变化。 - 详细的 SDC 加载顺序、TCK 异步组和 non-modal 约束见第 15 章 IJTAG SDC 专题。
TRADE-OFFS
与“普通直连”和“本模块也做边扫”的比较
| 方案 | 优点 | 代价 / 风险 | 建议 |
|---|---|---|---|
| 普通 RTL wire 直通 | 逻辑最少、开发快 | 缺少 EBScan/TCD 语义,工具难以自动提取、拼链与签核;控制束或链序错误常到 Top 才暴露 | 不作为 Tessent 层次交付方案 |
| HostBScanInterface 穿越 | 不扫描功能端口,同时具备自动建端口、提取、DRC、TCD/BSDL 与 Pattern 验证能力 | 需要严格的 Top-down 端口契约,并管理 pipeline 对链长的影响 | 当前场景推荐 |
| 当前模块也插普通 BScan | 可测试本模块 I/O 边界 | 增加 cell、控制、时序与模式复杂度;若没有测试需求就是无效成本 | 只有测试架构明确要求时采用 |
只传 SI/SO
Capture/Shift/Update、select、reset、clock 缺任意一项,链可能“能移位但不能正确执行指令”。
底层偷偷建端口
会让 Tile RTL、Chip 实例和物理 pin plan 失配。用 TopModuleConnections 预建,再把 allow_port_creation 关掉。
Loopback 当真连线
本地闭环只是替身。Chip 集成必须连接真实邻居,并以最终 BSDL/仿真重新签核。
Pipeline 未计入链长
每一级都是 internal BScan cell;插入、删除或 ECO 后,TCD、BSDL 与 Pattern 必须同步更新。
多个 neighbor 顺序漂移
接口 ID、DftSpecification 排列、物理连线和预期 scan path 必须来自同一份冻结表。
混用不同 TSDB 版本
RTL、graybox、ICL、TCD、SDC 与 Pattern 必须记录同一 design_id 和工具版本。
HANDOFF CHECKLIST
你的 Tile 至少应交付
- 含完整 EBScan 主/次接口的 RTL 或 gate netlist
- 接口方向、来源、目的地和 scan chain order 表
- 本次
DftSpecification与可复现 dofile ijtag_graybox、提取 ICL 与tcd_bscan- 生成的 SDC、时钟假设和 pipeline STA 报告
- 本地 loopback signoff Pattern/仿真日志及其“仅本地验证”标识
- TSDB 路径、design_id、工具版本和已知限制
TSDB DATA FLOW · VERSIONED HANDOFF
TSDB 数据流:把设计视图、Pattern 与层次交付对齐
TSDB 不是普通输出目录,而是 Tessent Shell flow 的版本化数据契约。本章对应 core/flat TSDB data flow 与 top-level TSDB data flow,并解释 read_design、view、design_id 和 pattern_id 如何协同。
Core / flat 仓库
每轮 DFT 处理把修改后的设计、source dictionary、ICL/PDL/TCD、接口或 graybox、SDC 和相关脚本写入同一 TSDB 语境。重跑某一步时应干净重建对应视图,避免旧文件混入活动数据。
Top-level 集成
上层先 open_tsdb 暴露 child 仓库,再按任务选择 interface、ijtag_graybox、scan_graybox 或 full view。当前设计 elaboration 后,工具可从 TSDB 自动发现 child interface 与 ICL,但存在外部 package/interface 依赖时必须显式 read_design。
四类 view
full完整 RTL 或 gate netlist,用于需要真实实现的分析/处理。
interface端口与参数定义,上层快速 elaboration 和 PatternsSpecification 推荐视图。
ijtag_grayboxextract_icl 生成,保留 IJTAG 相关逻辑和连通。
scan_grayboxscan/ATPG 所需的精简结构,由相应 graybox 流程产生。
# 上层集成:先暴露每个 child 的仓库,再选择明确视图
set_context dft -rtl
open_tsdb ../core_a/tsdb_outdir
open_tsdb ../core_b/tsdb_outdir
# 接口/graybox 降低上层加载量;full 用于需要完整实现的步骤
read_design core_a -design_identifier rtl2 -view ijtag_graybox
read_design core_b -design_identifier gate -view interface
read_verilog ./rtl/chip_top.sv -format sv2012
set_current_design chip_top
# 新一轮处理写入独立输出仓库
set_tsdb_output_directory ./chip_top_rtl1.tsdb
check_design_rulesSDC · SYNTHESIS · CLOCKING · FORMAL
SDC 与签核:确保插入后的 DFT 结构可综合、可布局、可证明
完整流程不能停在“插入成功”。Tessent 生成的 SDC、综合导入脚本、clock architecture、post-layout 验证与 formal equivalence 共同保证 DFT 逻辑穿过实现流程后仍可用。
生成 SDC
extract_icl 默认触发 extract_sdc;也可独立生成。确认设计、ICL、DFT signal 和 clock 已加载。
准备综合
source Tessent SDC,设置/重定义 Tcl 变量,核对 functional clocks,再应用 DFT constraints。
执行综合
按生成的 import script 读取 DFT-inserted RTL,保护 test logic 边界与关键对象,处理参数化 wrapper 和名称映射。
写出交付
输出最终 netlist 与最终 SDC;保留 mapping、报告、工具版本和使用的 TSDB/design_id。
布局后验证
在 post-layout netlist 上重放 IJTAG、MemoryBIST、Boundary Scan 与 ATPG signoff Pattern。
Formal
按 golden RTL↔DFT-inserted RTL、pre-layout↔post-layout 两类边界定义比较目标和允许差异。
IJTAG SDC · IMPLEMENTATION PLAYBOOK
IJTAG SDC 约束专题
把 Tessent 生成的 SDC 当作可配置的 Tcl 约束包:项目脚本负责选择最新版本、覆盖参数并一次性应用;不要直接修改生成文件。
- 01插入后生成
extract_icl默认调用extract_sdc;临时使用-skip_sdc_extraction后,可重新加载 full view 再单独执行extract_sdc。 - 02只取最新一版
文件位于
TSDB/dft_inserted_designs/design_designId.dft_inserted_design/design.sdc。后续 insertion pass 的 SDC 是前一版的超集,两版不要叠加。 - 03先初始化变量
综合或 STA 脚本 source SDC 后,必须先调用
tessent_set_default_variables,再覆盖 IJTAG timing 与 clock mapping。 - 04统一应用约束
最后调用一次
tessent_set_non_modal,由它对当前设计和所有子块分派各 instrument 的 non-modal 过程。 - 05报告与重放
检查 TCK、异步组、I/O delay、false/multicycle endpoint,再以同版设置生成并仿真 signoff Pattern。
TCK 与异步时钟组
tessent_set_ijtag_non_modal 会为 TCK 输入创建时钟;默认 tessent_tck_period 为 100 ns,项目应按真实目标覆盖。TCK 与功能时钟被放入异步组。
- 项目自建的 TCK generated clock 要追加到
tessent_tck_clocks_list。 - 不要绕过总入口直接调用 IJTAG 子过程,除非正在隔离调试。
Reset、Select 与 SIB
IJTAG reset port 被设为 false path;Select 的 hold path 被切断,setup 以 2-cycle multicycle 表达。SRI 网络中 non-scan SIB 的 Select 来源也会被放宽。
- STI 内可被 scan-test 的 SIB 默认不套用该放宽。
- 擅自扩大例外范围可能损害 scan Pattern 的有效性。
输入输出延迟与 strobe
生成过程会对 sub-block/physical-block IJTAG 端口设置可配置 I/O delay。若输出采样点为 before_falling_edge_of_tck,输出延迟会带 -clock_fall。
- 控制、reset、TMS 可分别增加 setup/hold cycle。
- Pattern strobe 与 STA strobe 必须使用同一设定。
功能时钟与层次边界
tessent_clock_mapping 把 Tessent ClockLabel 映射到功能 SDC 的 clock name。tessent_create_functional_clocks 还会沿 ICL ClockPort/ToClockPort 建立 primary 或 generated clock。
- 映射差异在项目脚本中覆盖,不编辑生成 SDC。
- 不应生成新时钟的 ToClockPort 可标记
exclude_from_sdc。
SAFE OVERRIDE ORDER
综合 / STA 脚本骨架
这段顺序同时适用于 RTL insertion 后综合、post-synthesis STA 与布局阶段。功能 SDC 仍需一同加载;示例中的路径、周期和 clock name 必须替换为项目实际值。
# 综合/STA 脚本:source 最新 insertion pass 生成的 SDC
set design_name myChip
set design_id rtl2
set tsdb ../../../golden_repo/myChip_tsdb
set sdc_file [file join $tsdb dft_inserted_designs \
myChip_rtl2.dft_inserted_design myChip.sdc]
source $sdc_file
# 必须最先初始化 Tessent SDC 变量;不要直接编辑生成的 SDC
tessent_set_default_variables
# 通过生成 SDC 中的 replica proc 覆盖 IJTAG 时序参数
set_ijtag_retargeting_options \
-tck_period 80.0 \
-default_scan_out_strobe_point before_falling_edge_of_tck \
-extra_control_setup_hold_cycles 1 \
-extra_reset_setup_hold_cycles 1 \
-extra_tms_setup_hold_cycles 1
# 当功能 SDC 使用不同 clock name 时,显式修正映射
set tessent_clock_mapping(CK25) PIN_CK25
# 把项目自建、但与 IJTAG 相关的 TCK generated clock 加入异步组
lappend tessent_tck_clocks_list my_tck_generated_clock
# 一次应用当前设计及所有子块的 non-modal instrument 约束
tessent_set_non_modalHB-IJTAG 的额外 SDC 规则
全局 TCK 仍来自输入 TCK;每个 SIH 会从 SSN bus clock 派生 input、divided 与 gated clocks。divided/gated clocks 参与时序分析,并按互斥关系建模。
ssn_bus_clock_period 默认 2.5 ns,本地 HB-IJTAG TCK 默认 20 ns。HB TCK / SSN bus period 必须不小于 1;奇数比值会向上取整到下一个偶数。
把 set_load_unload_timing_options 与 set_ijtag_retargeting_options 保存在共享 timing settings 文件中;Pattern 生成、综合与 STA source 同一份。
在 Pattern 流程中,于 create_patterns_specification 之前 source;或在 process_patterns_specification -merge_command_options 之前加载并合并。
SDC 不是黑盒
生成文件包含默认变量、functional clock 创建、DFT signal 设置、不同 instrument 的 disable/false-path/multicycle 等辅助过程。项目必须审阅变量入口、模式假设和工具调用顺序,而不是直接 source 后忽略。
Clock 架构分类
分别处理 primary input clock、core 外 clock generator、core 内 generator、embedded PLL 来源和 clock mesh。关键问题是 functional/test mode 下的时钟源、OCC 所有权、旁路路径、generated clock 与 capture 关系能否在 block/top 两级一致表达。
Modal STA 与层次 STA
功能逻辑与 embedded test logic 可按不同 mode 检查;hierarchical STA 还需要 child 约束、接口时序和 top-level clock 定义协同。SSN 另有 bus clock、datapath、FIFO 与 ScanHost 的专用约束过程。
TCL · PROCEDURE FILE · VISUALIZER · HELP
Tcl 与 Visualizer:把知识变成可复现、可调试的工程流程
本章覆盖 Tessent Tcl Interface、Test Procedure File、Tessent Visualizer、Examples and Solutions 与 Getting Help。目标不是堆积工具技巧,而是建立脚本、时序过程、可视化定位和资料检索的统一方法。
脚本工程化
用 namespace 隔离变量/proc,以脚本目录而非启动目录解析相对路径;理解特殊字符、Tcl list 与转义层次名;把环境初始化放入受版本控制的入口。
#注释会进入 transcript;//的转录行为不同。- catch_output 只包裹有明确失败分支的命令。
- 自定义 Tcl package 用稳定 API 隐藏项目细节。
Test Procedure File
procedure file 定义 tester/ATPG 侧的时序与操作过程:include、set、alias、timing variable、timeplate、always 与 procedure。Shift 和 Load_Unload 是基本必需过程,其余按模式选择。
- capture、test_setup、test_end 与 clock control 要和 Pattern/context 协调。
- multiple-pulse clock 与 inferred timing 必须明确签核。
- STIL 转换时检查 strobe 与 ClockStructures 信息。
Tessent Visualizer
Visualizer 提供 hierarchical/flat/ICL schematic、instance/ICL browser、DRC、RTL metrics、wave、HDL、IJTAG network 与 iProc 视图。适合沿对象关系定位,不替代脚本证据。
- 从 DRC/object 表跳转到 schematic 与 HDL。
- 使用 tracing、marker、context table 和属性面板缩小故障锥。
- 保存 session state 便于跨团队复现观察环境。
示例与帮助体系
Examples and Solutions 覆盖参数化 block、第三方综合/OCC、PLL 时钟、wrapped core、post-synthesis mapping 与 TAP 配置。遇到问题先定位到对应 manual 主题,再反查 Reference 命令。
- 问题归类:state、model、flow、timing、view 或版本。
- 保存最小 testcase、transcript、报告与工具版本。
- 区分产品限制、流程前提和项目配置错误。
ROBUST TCL PATTERN
让失败可见、路径稳定、对象可验证
这段骨架展示 namespace、脚本相对路径、collection 前置条件和显式错误处理。项目中应进一步加入版本、输入摘要、输出目录与运行清单。
namespace eval ::dftflow {
variable root [file normalize [file dirname [info script]]]
proc require_objects {collection label} {
if {[sizeof_collection $collection] == 0} {
error "Missing required objects: $label"
}
return $collection
}
}
set blocks [::dftflow::require_objects [get_instances -hierarchical -filter {is_physical_block == true}] "physical blocks"]
if {[catch_output {report_current_design} -output report_text -tee]} {
error "Current design report failed"
}理解概念、流程前提、完整示例和限制。
核对 context、mode、usage、返回值和选项。
固定输入、current design、TSDB view 与 command transcript。
把 DRC、对象、连通、波形和 HDL 证据对齐。
IJTAG USER GUIDE · DEEP DIVE
把 IJTAG User Guide 中容易遗漏的规则补齐
真正影响项目结果的往往不是命令名字,而是模型边界、隐式推断、求解器约束、网络状态和跨流程集成。以下内容来自 IJTAG User’s Manual 2026.1 的建模、重定向、提取、插入、ATPG 与验证章节。
ScanInterface 是访问契约
ScanInterface 可以显式定义,也可以由工具推断;端口与 ScanInterface 的关联也可能被推断。但与 current design 关联的 ICL Module 检查更严格,因为工具必须知道 TCK、ShiftEn、CaptureEn、UpdateEn、Select 等控制端口分别服务于哪组 ScanIn/ScanOut。
- 交换给上层集成的 handoff Module 建议显式定义。
- 推断只改变内部数据模型,不会自动改写原始 ICL 文件。
- 用 get_icl_scan_interface_list / get_icl_ports 验证实际关联。
复位不是一个简单的全局脉冲
ResetPort、TRST 与 TMS 可能通过规则隐式连接。Global Reset、Local Reset、被隔离的 embedded TAP,以及 TAP 停在 reset 或 idle,会产生不同的网络状态。
- 只有一个父级 ResetPort 时,未显式连接的子端口可能被自动关联。
- 局部复位、复位门控、embedded TAP 隔离通常需要显式连接。
- open/close_pattern_set 与 iReset 的策略要与 ICL ResetValue 建模一致。
每个 iApply 都是独立求解问题
求解器先寻找满足全部队列目标的初始解,再减少 scan load、PIO 操作和 scan cycle。默认初始解受每个 iApply 最多 64 个 scan load/PIO 操作限制,可通过 -max_operations_per_iapply 调整。
- 所有 iWrite 值必须在 iApply 结束时同时成立。
- iRead 只需在时间窗内第一次可观察时被采样。
- 无解时目标队列被移除,当前电路状态保留并报告错误。
iMerge 表达“希望并行”,不是强制并行
merge block 中只允许 iCall。工具可根据共享选择位、寄存器、端口、时钟或路径冲突决定串行化。IEEE 1687 不规定最终并行顺序,具体顺序由应用工具决定。
iMerge -begin -error_on_conflict可让冲突更早暴露。- iTake/iRelease 为端口、寄存器或实例声明资源所有权。
- 嵌套 iProc 会继承调用者的资源预留。
Extraction 与 Insertion 的方向相反
Insertion 从 DftSpecification 出发生成并接入 SIB、TDR、ScanMux 等硬件,同时输出修改后的设计与局部 ICL;Extraction 从实际网表追踪已有 IJTAG 互连,生成顶层/层次 ICL、可选 SDC 与 graybox。
- Insertion 后仍建议对真实结果执行 Extraction。
- Module matching、设计源搜索路径和参数化 Module 会影响提取。
- top-down 适合扁平顶层视图,bottom-up 适合层次交付与复用。
IJTAG 也服务于 ATPG setup/end
EDT、OCC 与其他嵌入式仪器可通过 PDL iProc 配置,再由 set_test_setup_icall / set_test_end_icall 接入 scan ATPG。完整流程可以包含网络插入、EDT 插入、顶层 ICL 提取与 ATPG 四个入口。
- 已有完整 ICL 网络时可跳过网络插入与顶层提取。
- 已有 EDT 或无压缩设计时对应步骤可裁剪。
- setup/end 的顺序、merge、时钟和网络 end state 必须一起签核。
USER GUIDE FLOW MAP
从模型到交付的七个证据点
每个阶段都要产生可以审阅的对象、报告或 Pattern;不要只以“命令执行成功”作为通过标准。
- 01读入与匹配
read_icl · set_design_sources · set_current_design证据:Module/实例层次、参数与 current design 对齐。
- 02模型自省
get_icl_* · report_icl_modules证据:端口语义、ScanInterface、reset 与路径可查询。
- 03进入分析
set_system_mode analysis证据:所有 IJTAG DRC 清零。
- 04意图重定向
iCall · iRead/iWrite · iApply证据:Pattern set 中的操作与预期状态变化一致。
- 05结构验证
create_icl_verification_patterns证据:scan network 与 data pin testbench/ATE 测试通过。
- 06真实互连提取
extract_icl · report_module_matching证据:提取 ICL 与网表连接、层次交付边界一致。
- 07格式化交付
report_pattern_sets · write_patterns证据:PDL、Verilog、STIL/ATE、报告和版本可追溯。
结构验证通过后,功能 Pattern 仍失败,应该查哪里?
先缩小问题边界:create_icl_verification_patterns 验证的是当前 ICL 所描述的网络与仪器连通性。如果其 RTL/门级仿真或 ATE 结果通过,说明从外部到目标 instrument 的访问基础设施基本可信;后续功能失败应优先检查 instrument 自身协议、iProc 参数、功能时钟、capture 时刻、期望值与 test setup。
如果结构验证也失败:先查 ICL 与 HDL 不一致、位宽/位序、ScanMux 选择、ResetValue、ScanInterface 控制关联、TCK/strobe,再用 comparison failure counter 和波形定位首次偏离点。
SHELL REFERENCE · COMMAND MANUAL
Tessent Shell 与 IJTAG 核心指令:上下文、语法与边界
以下 54 条核心指令同时覆盖 Tessent Shell User Guide 与 IJTAG User Guide,并逐项反查 Tessent Shell Reference Manual 2026.1。每条保留 context、mode、关键语法、用途与最容易踩坑的行为;顶部搜索可按命令名、阶段、语法或说明过滤。
覆盖 Shell、DFT/TSDB、PDL、提取、验证、自省和 ATPG 集成。
按“何时使用”组织,而不是只按字母排序。
可搜索 TSDB、design、iApply、extract、report 或 ATPG。
先看 Context同一命令可能只在 patterns -ijtag 或 dft 中可用。
再看 Modesetup 负责加载与配置,analysis 负责 DRC、求解与 Pattern。
最后看状态current design、open pattern set 与 network end state 会改变后续结果。
Tessent 基础
12 commandsdofileall modes按顺序执行文件中的 Tessent Shell/Tcl 命令,是工程自动化与可复现运行的基本入口。
- CONTEXT
- unspecified / all contexts
- USAGE
dofile filename [-History]
read_cell_librarysetup加载一个或多个 Tessent cell library,供设计解析、快速综合和 DFT 分析使用。
- CONTEXT
- unspecified / all contexts
- USAGE
read_cell_library lib_path ... [-quick_synthesis_library] [-force]
read_verilogsetup把 Verilog/SystemVerilog 设计文件读入指定或默认逻辑库。
- CONTEXT
- dft / patterns(除 scan_diagnosis)
- USAGE
read_verilog design_path ... [-format sv2012] [-interface_only] […]
set_design_sourcessetup指定 Module matching 时搜索 Verilog、ICL 或 TCD 模块定义的位置。
- CONTEXT
- unspecified / all contexts
- USAGE
set_design_sources -format {verilog|icl|tcd_*} [-V files] [-Y dirs -extensions ext] [-append|-clear]
check_design_rulessetup执行当前 context 所要求的 DRC;无 error 级违规时从 setup 转入 analysis。
- CONTEXT
- dft / patterns
- USAGE
check_design_rules
get_instancesall modes返回相对 current design 的设计实例 collection,并支持按层次、模块、对象关系与属性过滤。
- CONTEXT
- all contexts
- USAGE
get_instances [patterns] [-of_modules objects] [-below_instances objects] [-hierarchical] [-filter expr] […]
get_portsall modes查询 current design 或指定 Module 的层次端口 collection。
- CONTEXT
- all contexts
- USAGE
get_ports [patterns] [-of_modules objects] [-of_icl_ports objects] [-direction input|output|inout] […]
get_pinsall modes查询相对 current design 的层次 pin collection。
- CONTEXT
- all contexts
- USAGE
get_pins [patterns] [-of_instances objects] [-of_icl_pins objects] [-direction input|output|inout] […]
get_attribute_value_listall modes读取指定设计对象上的属性值,并按输入对象顺序返回 Tcl list。
- CONTEXT
- unspecified / all contexts
- USAGE
get_attribute_value_list object_spec -name attribute_name [-is_specified] [-silent]
set_attribute_valueall modes为指定设计对象设置属性,并返回设置成功的对象 collection。
- CONTEXT
- unspecified / all contexts
- USAGE
set_attribute_value object_spec -name attribute_name [-value attribute_value] [-silent]
open_visualizerall modes打开 Tessent Visualizer,用原理图、布局或报告视图检查当前设计与 DFT 对象。
- CONTEXT
- unspecified / all contexts
- USAGE
open_visualizer [-display tab ...] [-append] […]
catch_outputall modes执行工具命令并捕获输出/结果;命令失败时返回 1,成功时返回 0。
- CONTEXT
- unspecified / all contexts
- USAGE
catch_output {command} [-output variable] [-result variable] [-tee]
DFT 与 TSDB
10 commandsset_tsdb_output_directorysetup设置 process_dft_specification 等流程写入的 TSDB 输出目录。
- CONTEXT
- dft / patterns
- USAGE
set_tsdb_output_directory directory_path
open_tsdball modes让一个或多个 TSDB 的设计视图、接口、ICL、PDL 与交付数据对当前会话可见。
- CONTEXT
- all contexts
- USAGE
open_tsdb directory_path_list [-silent]
read_designsetup根据 TSDB 中的 design source dictionary 重新加载 DFT 插入后的指定设计视图。
- CONTEXT
- dft / patterns
- USAGE
read_design design_name [-design_identifier id] [-view full|scan_graybox|ijtag_graybox|interface] […]
create_dft_specificationanalysis创建 DftSpecification(design_name,id) 配置 wrapper,并返回对象供脚本定制。
- CONTEXT
- dft(无 sub-context)
- USAGE
set spec [create_dft_specification …]
process_dft_specificationsetup / analysis验证并处理 DftSpecification;根据配置执行 DFT 硬件插入或仅做验证。
- CONTEXT
- dft(无 sub-context)
- USAGE
process_dft_specification [id] [-no_insertion] [-validate_only] [-transcript_insertion_commands]
set_dft_specification_requirementssetup声明当前 DFT 阶段的设计类型与要构建/提取的结构;Tile 流用 -design_type tile,独立 EBScan 签核用 -tcd_bscan_extraction on。
- CONTEXT
- dft(无 sub-context)
- USAGE
set_dft_specification_requirements [-design_type standard|tile] [-boundary_scan on|off] [-tcd_bscan_extraction on|off] […]
process_top_module_connectionssetup / analysis验证并处理 TopModuleConnections,在 tiled module 上预建 DFT 端口,并在 chip-level netlist 中按声明连接。
- CONTEXT
- dft(无 sub-context)
- USAGE
process_top_module_connections [-validate_only] [-transcript_insertion_commands] [-extension_suffix suffix]
write_tsdb_dataanalysis把 scan/retargeting Pattern 流程数据写入 TSDB,形成可供后续步骤复用的版本化交付。
- CONTEXT
- patterns -scan / scan_retargeting
- USAGE
write_tsdb_data [-design_id id] [-pattern_id id] [-replace] [-flat_model auto|on] […]
extract_sdcall modes为当前设计与子块生成供综合和 STA 使用的 Tessent SDC 约束。
- CONTEXT
- all contexts
- USAGE
extract_sdc [-output_file output_file]
write_design_import_scriptsetup / analysis生成可由综合工具执行的脚本,用于综合已完成 DFT 插入的 RTL 设计。
- CONTEXT
- dft / patterns
- USAGE
write_design_import_script [filename] [-format dc_shell|genus|fc_shell] [-design_id id] [-replace] […]
流程骨架
7 commandsset_contextall modes进入 IJTAG Pattern 生成上下文;多数后续命令都依赖正确的 context。
- CONTEXT
- all contexts
- USAGE
set_context patterns -ijtag [-rtl | -no_rtl]
read_iclsetup把一个或多个 ICL Module 读入内部 ICL 数据库。
- CONTEXT
- all contexts
- USAGE
read_icl filename_list [-skip_child_blocks] [-force]
set_current_designsetup / insertion确定后续命令所使用的顶层设计与 ICL 重定向边界。
- CONTEXT
- all contexts
- USAGE
set_current_design [top_design [-icl_module icl_module]]
set_system_modeall modes切换 setup、insertion、analysis 阶段;进入 analysis 时完成最终 DRC。
- CONTEXT
- all contexts
- USAGE
set_system_mode {setup | insertion | analysis} [-force]
open_pattern_setanalysis打开一个命名 Pattern set,承接后续 iCall、iRead、iWrite、iApply 等操作。
- CONTEXT
- patterns -ijtag
- USAGE
open_pattern_set name [-timeplate tp | -tester_period p] [-tck_ratio n] [-replace]
close_pattern_setanalysis完成并关闭当前 Pattern set。
- CONTEXT
- patterns -ijtag
- USAGE
close_pattern_set [-network_end_state keep|reset|reset_all|initial] [-create_iproc]
write_patternsanalysis把内存中的 Pattern set 格式化并输出为 Verilog、STIL、PDL、ATE 或其他目标格式。
- CONTEXT
- patterns -ijtag
- USAGE
write_patterns file format_switch [-pattern_sets list] [-replace] [-unroll]
PDL 操作
10 commandsiProcsForModulesetup / insertion / patterns analysis声明后续 iProc 绑定到哪个 ICL Module,并可指定 PDL namespace。
- CONTEXT
- all contexts
- USAGE
iProcsForModule module_name [-iProcNameSpace namespace]
iProcsetup / insertion / patterns analysis定义一个可复用的 PDL 过程。
- CONTEXT
- all contexts
- USAGE
iProc name variables body
iCallanalysis在指定 ICL 实例上调用已注册的 iProc。
- CONTEXT
- dft / patterns -ijtag / scan
- USAGE
iCall [instance_path.]iproc_name [arguments…]
iWriteanalysis把写目标加入队列,等待下一次 iApply 统一求解。
- CONTEXT
- dft / patterns -ijtag / scan
- USAGE
iWrite [instance_path.]writable_object value [-ignore_when_value_already_present auto|off|on]
iReadanalysis把读取或带期望值的比较目标加入队列。
- CONTEXT
- dft / patterns -ijtag / scan
- USAGE
iRead [instance_path.]readable_object [expected_value]
iApplyanalysis求解全部排队的 iRead/iWrite,生成扫描装载、PIO 激励与观察序列。
- CONTEXT
- dft / patterns -ijtag / scan
- USAGE
iApply [-end_in_pause]
iResetanalysis向当前 Pattern set 加入把 ICL 网络恢复到复位状态的动作。
- CONTEXT
- dft / patterns -ijtag / scan
- USAGE
iReset [-sync]
iMergeanalysis请求重定向器尽量并行处理 merge block 内的多个 iCall。
- CONTEXT
- dft / patterns -ijtag / scan
- USAGE
iMerge -begin [-error_on_conflict] … iMerge -end
set_ijtag_retargeting_optionsmostly all modes配置 iApply 求解与 IJTAG 时序;生成的 SDC 也提供同名 replica proc,用它覆盖 TCK、strobe 与控制信号余量。
- CONTEXT
- all contexts
- USAGE
set_ijtag_retargeting_options [-tck_period time] [-default_scan_out_strobe_point value] [-extra_*_setup_hold_cycles n] […]
set_load_unload_timing_optionsall modes设置 SSN load/unload 的 bus/shift 时钟,以及动态控制信号的 setup/hold 时序。
- CONTEXT
- all contexts
- USAGE
set_load_unload_timing_options -usage ssn [-ssn_bus_clock_period time] [-shift_clock_period time] […]
提取与验证
5 commandsset_icl_extraction_optionsall modes定制 ICL Extraction 对 mux、DataOutPort 和 ScanInterface 的处理。
- CONTEXT
- all contexts
- USAGE
set_icl_extraction_options [-extract_learned_muxes on|off] [-extract_scan_interfaces on|off] …
add_loadboard_loopback_pairssetup(设计已 elaborated)按列表顺序把输出与输入配成 loadboard loopback,用于独立 Tile 中闭合外接 EBScan 分支并生成本地签核 Pattern。
- CONTEXT
- all contexts
- USAGE
add_loadboard_loopback_pairs -inputs {in…} -outputs {out…} [-ac_delay_to_z time]
set_flat_model_optionssetup控制 flat model 是否模拟 add_loadboard_loopback_pairs 声明的外部回环。
- CONTEXT
- all contexts
- USAGE
set_flat_model_options -emulate_loadboard_loopback_pairs on|off
extract_iclall modes检查 IJTAG 实例连通规则,并提取顶层 ICL、可选 SDC 与 IJTAG graybox。
- CONTEXT
- all contexts
- USAGE
extract_icl [-write_in_tsdb on|off|auto] [-skip_sdc_extraction] [-create_ijtag_graybox on|off]
create_icl_verification_patternsanalysis根据当前 ICL 自动生成网络扫描与数据引脚结构验证 Pattern。
- CONTEXT
- patterns -ijtag
- USAGE
create_icl_verification_patterns [-scan_test on|off] [-data_pin_test on|off|end_points_only] […]
查询与报告
8 commandsget_hb_ijtag_dataanalysis以 ICL instance collection 返回网络中全部 SIH,或指定 Pattern set 内实际活动的 SIH。
- CONTEXT
- all contexts
- USAGE
get_hb_ijtag_data {-ssn_ijtag_hosts | -active_ssn_ijtag_hosts} [-has_hb_ijtag_patterns] [-pattern_set ids]
report_hb_ijtag_dataanalysis报告 SIH 列表、HB retarget solution,以及 global/HB cycles、packet、切换次数、padding 和总利用率。
- CONTEXT
- all contexts
- USAGE
report_hb_ijtag_data {-ssn_ijtag_hosts | -active_ssn_ijtag_hosts | -retargeted_solution | -statistics} [-pattern_set ids]
get_pattern_set_dataanalysis查看重定向 Pattern 的内部事件;HB-IJTAG 中可展开 packet、SIH scan、slot 与完整本地 scan path。
- CONTEXT
- dft / patterns -ijtag / scan / scan_retargeting
- USAGE
get_pattern_set_data pattern_set_name [-unrolled] {-port_list | -event_list | -event_data event_id}
get_icl_objectsall modes按对象类型、层次、属性和名称模式查询 ICL 对象集合。
- CONTEXT
- all contexts
- USAGE
get_icl_objects [patterns] -object_types types [-below_instances obj] [-filter expr] [-hierarchical]
get_icl_instancesall modes返回相对 current design 的 ICL 实例集合。
- CONTEXT
- all contexts
- USAGE
get_icl_instances [patterns] [-of_modules modules] [-below_instances instances] [-filter expr]
get_icl_portsall modes查询 ICL Module 的端口及其方向、功能和属性。
- CONTEXT
- all contexts
- USAGE
get_icl_ports [patterns] [-of_modules modules] [-direction input|output] [-function function]
report_icl_modulesall modes以 ICL 语法或人类可读形式报告已加载和已提取的 ICL Module。
- CONTEXT
- dft / patterns
- USAGE
report_icl_modules [-all | -modules modules [-hierarchical]]
report_pattern_setsanalysis报告一个或全部 Pattern set 的内部表示和组织情况。
- CONTEXT
- patterns -ijtag
- USAGE
report_pattern_sets [-sort_by declaration_order|name] [pattern_set_list]
ATPG 集成
2 commandsset_test_setup_icallsetup把仪器配置 iCall 加入 ATPG test_setup 过程。
- CONTEXT
- dft / patterns -scan / scan_retargeting
- USAGE
set_test_setup_icall [path.]iproc [args…] [-append|-merge] [-front|-end]
set_test_end_icallsetup把恢复或收尾 iCall 加入 ATPG test_end 过程。
- CONTEXT
- dft / patterns -scan / scan_retargeting
- USAGE
set_test_end_icall [path.]iproc [args…] [-append|-merge] [-timeplate tp]
REFERENCE-ALIGNED EXAMPLE
一条带检查点的最小重定向流程
顺序体现 Reference 中的 context/mode 约束:先建立模型与 analysis 状态,再打开 Pattern set、执行 PDL,最后报告并写出。
# 1) 建立 IJTAG 分析上下文
set_context patterns -ijtag
read_icl ./icl/instruments.icl ./icl/chip_top.icl
dofile ./pdl/instruments.pdl
set_current_design chip_top
set_system_mode analysis
# 2) 先检查模型与实际选项
report_icl_modules -all
report_ijtag_retargeting_options
# 3) 组织可复查的 Pattern set
open_pattern_set smoke -replace
iReset
iCall Core0.Mbist.run_short
iWrite Core0.StatusMask 0xff
iRead Core0.Status 0x00
iApply
close_pattern_set -network_end_state reset
# 4) 报告后再写出
report_pattern_sets smoke
write_patterns ./patterns/smoke.v -verilog -pattern_sets smoke -replaceREFERENCE · QUICK LOOKUP
术语与命令速查
适合学习时随手查,也适合在调试日志和脚本评审时快速对齐含义。顶部搜索会同时过滤术语、目录与第 18 章的 Reference 指令。
核心术语
15 / 15- IJTAG
- IEEE 1687 仪器访问网络方法;本资料基于 IEEE 1687-2014。
- Instrument
- 片上可被配置、触发或读取状态的测试/监控功能,例如 MBIST、温度传感器、EDT/OCC。
- ICL
- Instrument Connectivity Language,描述端口语义、寄存器、复用关系、实例和网络连接。
- PDL
- Procedural Description Language,描述如何使用仪器,并允许从 IP 级自动重定向到芯片级。
- TAP
- IEEE 1149.1 Test Access Port,常作为 IJTAG 网络的芯片级入口。
- TDR
- Test Data Register,承载控制值或捕获状态,可串入扫描路径。
- SIB
- Segment Insertion Bit,用控制位决定某段扫描网络是否出现在当前活动扫描路径中。
- ScanMux
- 由选择信号决定扫描数据从哪条分支通过的 ICL 复用结构。
- iProc
- 绑定到某个 ICL Module 的 PDL 过程;同类 Module 的每个实例都可调用。
- iCall
- 按实例层次路径调用 iProc。
- iWrite / iRead
- 将写操作或期望读操作加入待求解队列。
- iApply
- 触发重定向器求解队列,生成打开路径、移位、捕获和更新所需序列。
- Retargeting
- 把仪器边界上的抽象 PDL 操作转换成当前设计层级可执行的顶层端口序列。
- ICL Extraction
- 从 Verilog/门级网表追踪 IJTAG 建筑块的真实连接并生成缺失的顶层/层次 ICL。
- SIH
- SSN IJTAG Host,HB-IJTAG 中连接 SSN 总线与本地 IJTAG 网络的节点。
Tessent Shell 流程速查
10 groupsset_context patterns -ijtag进入 IJTAG Pattern 上下文
read_icl读入 ICL Module 与实例层次
dofile / read_pdl装载与 Module 绑定的 PDL
set_current_design确定重定向目标层级
set_system_mode analysis执行最终 DRC,并进入可生成 Pattern 的分析模式
open_pattern_set / close_pattern_set组织一次或一组 PDL 操作为命名 Pattern 集
report_icl / get_*进行 ICL introspection 与层次/对象查询
write_patterns导出 PDL、Verilog testbench、STIL 或目标 Pattern 格式
extract_icl从设计网表抽取 IJTAG 互连 ICL
create_icl_verification_patterns自动生成网络与仪器结构验证 Pattern