DFT测试之TAP/SIB/TDR

TAP的作用

tap全称是test access port,是将jtag接口转为reset、sel、ce、ue、se、si、tck和so这一系列测试组件接口的模块。

jtag的接口主要是下面几个信号:

信号名称信号方向信号描述
TCK(测试时钟)输入测试时钟,同步JTAG状态机和数据移位操作。
TMS(测试模式选择)输入测试模式选择,控制JTAG TAP(Test Access Port)状态机 的转换。
TDI(测试数据输入)输入测试数据输入,用于向芯片的JTAG逻辑串行输入测试指令或数据。
TDO(测试数据输出)输出测试数据输出,用于从芯片的JTAG逻辑串行输出测试结果或状态。
TRST(测试重置)输入可选信号,用于重置 TAP 控制器的状态机,低电平有效。如果没有该信号,也可通过 TMS 对 TAP 控制器进行复位。

上面的信号才是Jtag的接口信号,每一个信号都对应一个IOPAD。在设计中常会遇见tdo_en信号,这个信号是控制IOPAD在没有输出时,输出高阻态。它并不是实体的IO信号。也有可能会遇见tdi_en信号,控制IOPAD没有输入时,输入为高阻。单一般不会控制IOPAD的输入。 

那么TAP就是把这些Jtag接口,主要是通过解析TMS的指令来生成以下组件控制信号。

端口方向全称功能描述时序
reset输入Reset异步或同步复位信号,用于初始化DFT逻辑(如扫描链)。复位时立即生效,扫描链寄存器被清零或置位。
sel输入Select选择测试模式或功能模式:
 `sel=1` → 测试模式(扫描链激活)
 `sel=0` → 功能模式
通常在测试开始时拉高,测试结束时拉低。
ce输入Capture Enable控制扫描链捕获功能逻辑数据:
 `ce=1` → 捕获数据
 `ce=0` → 保持或移位
在 `tck` 的上升沿生效。
ue输入Update Enable控制扫描链数据更新到功能逻辑:
 `ue=1` → 更新数据
 `ue=0` → 保持
通常在 `tck` 的下降沿生效(取决于设计)。
se输入shift Enable控制扫描链模式:
 `se=1` → 移位模式(数据从 `si` 移入)
 `se=0` → 捕获模式
在 `tck` 的上升沿生效。
si输入Scan Input扫描链的串行输入数据,用于移入测试向量。在 `tck` 的上升沿采样,数据逐位移入扫描链。
from_so输入From Scan Output来自另一条扫描链的串行输出(用于多扫描链级联)。类似 `si`,但数据来自其他扫描链的 `so`。
tck输入Test Clock测试时钟,独立于系统时钟,控制扫描链的移位和捕获操作。上升沿用于移位/捕获数据,下降沿可能用于更新(如 `ue`)。
so输出Scan Output扫描链的串行输出,用于移出测试响应数据。在 `tck` 的上升沿或下降沿(取决于设计)输出扫描链的最后一位数据。

TAP的使用场景

大多数芯片采用 单 TAP + SIB(Scan Insertion Buffer) 的层次化架构,而非为每个 harden 分配独立 TAP:

单 TAP 控制所有 IP

  • 芯片只有一个 顶层 TAP(遵循 IEEE 1149.1 JTAG 或 IEEE 1687 IJTAG 标准)。

  • 通过 SIB(Scan Insertion Buffer) 动态选择访问不同 harden 的扫描链。

  • 优点:节省面积、简化测试接口、兼容标准 JTAG 调试工具。

特殊情况:多 TAP(较少见)

某些场景可能为特定 harden 分配独立 TAP:

  1. 需求场景

    • 安全隔离需求:如安全域与非安全域需物理隔离测试接口。

    • 超大规模芯片:多个子系统需并行测试以减少时间。

    • 第三方 IP 要求:某些硬核 IP 可能强制要求独立 TAP(如某些 GPU/DSP 核)。

  2. 缺点

    • 面积开销:每个 TAP 需额外的 I/O 引脚和控制器逻辑。

    • 测试复杂度:需多路复用芯片级 TAP 接口,或增加专用测试引脚。

 

向下图多个chip接成菊花链的形式,实际上就是每个chip里面的tap接成菊花链,当然一个chip内有多个tap也可以这样接,这样就是一个chip内的多个tap共用一套jtag接口,实际上不能实现并行测试,和使用单TAP+SIB的效果是一样的,而且TAP比SIB复杂太多了。如果要保证chip内多个tap能够并行测试,独立测试就需要多组jtag接口。

而且即使是单TAP+SIB,测试多个harden,出了在用jtag配置的时候需要串行【配置一般很快】,patter现在都是走SSN,SSN给多个harden灌patter之后,多个harden就可以并行测试。所以完全没有必要chip内多个tap

 单TAP+SIB结构

 每个sib有一个so输出,和一个sel_out输出。电路简图如下:

其中sib_ff2信号是sib在ue(update_En)时刻锁存的并打2拍信号,而sib是来自se(shift_en)有效时从si或者from_so shift进来的信号锁存。

下图给出了一个简单的三个harden级别的TAP+SIB结构

 sib_xxx控制着xxx_sys是否在测试菊花链上,相当于一个开关。 在update时候锁存的sib_ff1表示是否bypass当前sib_xxx下的xxx_sys。为1表示不pypass;为0表示bypass。

当sib_ff1=1时:sel_out==1,此时si经过xxx_sys到sib_xxx的from_so在经过sib_xxx的so输出给后级sib和subsys

当sib_ff1=0时:sel_out==0,此时xxx_sys的输入si无法传递,so被sib_xxx bypass。si经过sib_xxx直接经过so传输给下级。

对于subsys测试来说只有si和so这一对输入输出数据线即可。但是subsys内部还可以存在多个sib和tdr组件,但是连接方式和上图类似,如下图的基本结构.具体不在细讲

TDR(Test data register)

主要用于在芯片测试过程中存储、控制和观察测试数据。

和sib的使用类似,或者可以说sib是一个单bit的特殊TDR。

tdr是个多bit的移位寄存器,输入为si,移位输出为so。在ue(updateEn)有效时刻,把tdr中信号锁存为tdr_ff,这个tdr_ff可以用来配置其他寄存器,用作控制作用;在ce时刻可以capture电路的输出响应;在SE时刻可以将测试数据串行或并行加载到电路中。分别描述如下:

1. 存储测试数据

  • TDR 用于临时存储测试输入(测试激励)或测试输出(测试响应)。

  • 在 扫描测试(Scan Test) 中,TDR 可以作为扫描链(Scan Chain)的一部分,将测试数据串行或并行地加载到电路中。

2. 控制测试模式

  • 在测试模式下,TDR 可以配置芯片的内部逻辑(如切换功能模式到测试模式)。

  • 例如,通过 TDR 设置多路选择器(MUX)的输入,选择测试路径或功能路径。

3. 观察测试响应

  • 在测试执行后,TDR 可以捕获电路的输出响应,并通过扫描链移出,供外部测试设备(ATE)分析。

  • 帮助检测制造缺陷(如固定故障、桥接故障等)。

4. 支持多种测试方法

  • 扫描测试(Scan Test):TDR 作为扫描触发器(Scan Flip-Flop)的集合,构成扫描链。

  • 内建自测试(BIST):TDR 可能存储 BIST 的种子数据或中间结果。

  • 边界扫描(Boundary Scan, IEEE 1149.1 JTAG):TDR 是边界扫描寄存器的一部分,用于测试板级互连。

5. 提高测试灵活性和覆盖率

  • 通过动态配置 TDR 的值,可以针对不同模块或故障类型进行针对性测试。

  • 支持分片测试(Partitioned Testing),降低测试复杂度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python对接印度股票数据源实战指南

Python对接印度股票数据源实战指南 基于StockTV API实现印度证券市场数据对接,覆盖实时行情、K线、指数等核心功能,提供完整开发方案与避坑指南 一、数据源选型要点(技术维度对比) 根据2025年最新实测数据,印度市场主…

usbutils工具的使用帮助

作为嵌入式系统开发中的常用工具,usbutils 是一套用于管理和调试USB设备的Linux命令行工具集。以下是其核心功能和使用方法的详细说明: 1. 工具组成 核心命令: lsusb:列出所有连接的USB设备及详细信息(默认安装&#…

k8s入门教程(集群部署、使用,镜像拉取失败网络问题排查)

文章目录 K8S基础创建centos虚拟机K3S部署配置k3s容器containerd镜像2025年4月测试可用镜像源配置 Pod容器Deployment(部署)和ReplicaSet(副本集)镜像拉取失败问题排查 Service服务ServiceType取值 NameSpace命名空间声明式对象配…

使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中

使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中 什么是VuePress VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个…

Vue3 + Element Plus 防止按钮重复点击的解决方案

在 Vue3 和 Element Plus 项目中,防止按钮重复点击是一个常见的需求,特别是在表单提交、支付等场景下。以下是几种实现方式: 1. 使用 Element Plus 的 loading 状态 Element Plus 的按钮组件本身就支持 loading 状态,这是最简单…

ES101系列09 | 运维、监控与性能优化

本篇文章主要讲解 ElasticSearch 中 DevOps 与性能优化的内容,包括集群部署最佳实践、容量规划、读写性能优化和缓存、熔断器等。 集群部署最佳实践 在生产环境中建议设置单一角色的节点。 Dedicated master eligible nodes:负责集群状态的管理。使用…

如何基于Mihomo Party http端口配置git与bash命令行代理

如何基于Mihomo Party http端口配置git与bash命令行代理 1. 确定Mihomo Party http端口配置 点击内核设置后即可查看 默认7892端口,开启允许局域网连接 2. 配置git代理 配置本机代理可以使用 127.0.0.1 配置局域网内其它机代理需要使用本机的非回环地址 IP&am…

SSL安全证书怎么安装?

SSI并非一个标准的、广为人知的安全证书类型,通常网站安装的是SSL/TLS证书,用于加密网站和用户浏览器之间的通信,保障数据传输安全。以下以安装SSL/TLS证书为例,介绍网站安装证书的步骤: 一、证书申请与获取 选择证书…

QPS、TPS、RT、IOQS、并发数等性能名词介绍

以下是计算机领域中 QPS、TPS 及相关性能名词的详细解释,涵盖定义、计算方法、典型场景和对比: 一、核心概念解析 1. QPS(Queries Per Second) 定义:每秒查询数,指系统每秒能处理的 请求数量(…

MIT 6.S081 2020 Lab7 Multithreading 个人全流程

文章目录 零、写在前面1、XV6 中的锁2、XV6 进程切换3、触发调度 一、Uthread: switching between threads1.1 说明1.2 实现 二、Using threads2.1 说明2.2 实现 三、Barrier3.1 说明3.2 实现 零、写在前面 可以读一下xv6 book 的第六章 锁 以及 第七章 调度: htt…

C++中的变量

变量是C语言中存储数据的基本单元,用于在程序运行过程中动态存储和操作数据。掌握变量的定义、类型、作用域和使用规则是C语言编程的核心基础。以下从多个维度详细解析变量的关键知识: 一、变量的本质与定义 1. 本质 变量是内存中命名的存储单元&…

办公提效的AI免费工具使用感悟

背景: 随着AI的发展,职场人都纷纷被要求办公提效,用上AI工具,市场上的AI工具纷繁复杂,也有很多工具纷纷开启了会员制,VIP等付费功能,本着互联网分享精神,我自己摸索使用了几个适合办…

软件测评服务如何依据标准确保品质?涵盖哪些常见内容?

软件测评服务涉及对软件的功能和性能等多维度进行评估和检验,这一过程有助于确保软件的品质,降低故障发生率及维护费用,对于软件开发和维护环节具有至关重要的价值。 测评标准依据 GB/T 25000.51 - 2016是软件测评的核心依据。依照这一标准…

前端项目初始化

​​​​​​ 目录 1. 安装 nvm 2. 配置 nvm 并切换到 Node.js 16.15.0 3. 安装 LightProxy 代理 4. GIT安装 1. 配置用户名和邮箱(这些信息将用于您在提交代码时的标识): 2. 生成SSH密钥(用于将本地代码仓库与远程存储库连…

我用AI降低AI率:一次“用魔法打败魔法”的实验

最近,我做了一件非常“AI”的事情——我用AI来降低AI率。 听起来有点绕对吧?实际上原因十分简单,在参与某内容创作平台的活动过程中,我发现该平台对于“AI生成内容”的判定极为严苛,并且还规定了不得高于一定比例的“AI率”,对此我也产生了极大的好奇。 于是,我便踏上了…

设备驱动与文件系统:01 I/O与显示器

操作系统设备驱动学习之旅——以显示器驱动为例 从这一节开始,我要学习操作系统的第四个部分,就是i o设备的驱动。今天要讲的是第26讲,内容围绕i o设备中的显示器展开,探究显示器是如何被驱动的,也就是操作系统怎样让…

数据分析六部曲?

引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…

完美搭建appium自动化环境

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 桌面版appium提供可视化操作appium主要功能的使用方式,对于初学者非常适用。 如何在windows平台安装appium桌面版呢,大体分两个步骤&…

中级保安员资格证考试理论题库

以下是一些中级保安员资格证理论单选题及答案: 1.抓臂带离要求抓握对方掌骨部位的手,在抓握掌骨的同时要贴紧自己的()。 A. 腹部 B. 髋部 C. 胸部 D. 肋部 答案:B 2.治安保卫责任制体系的重点是(&#xff…

LangChainGo入门指南:Go语言实现与OpenAI/Qwen模型集成实战

目录 1、什么是langchainGo2、langchainGo的官方地址3、LangChainGo with OpenAI3-1、前置准备3-2、安装依赖库3-3、新建模型客户端3-4、使用模型进行对话 4、总结 1、什么是langchainGo langchaingo是langchain的go语言实现版本 2、langchainGo的官方地址 官网:…