首页 > 其他分享 >第五章 JTAG简介

第五章 JTAG简介

时间:2023-07-22 11:12:59浏览次数:42  
标签:TMS 芯片 简介 第五章 指令 测试 寄存器 JTAG

1.JTAG概念

1.1 背景介绍

1.1.1 传统针床测试

  1. 机台芯片测试 VS PCB板上测试
  2. 板级芯片间测试
    1. 传统针床测试
      1. 芯片管脚日益增多
      2. 多层印刷电路板
    2. 新型边界扫描测试

         

 1.1.2 边界扫描测试(Boundary Scan)

        

  1. 目的:
    1. 板级芯片互联线测试
    2. PCB板级芯片测试:如果针对板级某个芯片进行测试,可以Bypass掉其他芯片,通过边界扫描链将测试数据输入芯片
  2. 标准:
    1. JTAG(Joint Test Action Group)

         

2. JTAG架构

        

  • 指令寄存器:存储控制测试的指令,指导测试时流程。在IJTAG电路生成之前,就应该确定每种指令具体实现的是什么操作;
  • 旁路寄存器:旁落哪些模块不进行测试;
  • 标识寄存器:识别该JTAG网络出自哪个厂商;
  • 其他数据寄存器:存储用于测试不同模块的测试数据; 
  • 功能管脚:在功能管脚上增加边界扫描寄存器;
  • 指令解码寄存器:解析控制指令,确定哪个寄存器工作;

2.1 JTAG架构

  1. JTAG架构
    • JTAG标准端口
    • JTAG状态机控制器
    • JTAG寄存器
    • JTAG指令解码器
  2. JTAG标准端口
    • TCK
    • TMS:test mode
    • TDI
    • TDO
    • TRST(可选):可用TMS信号代替

2.2 边界扫描寄存器

         

对于输入功能管脚,PI就是管脚输入,PO就是功能逻辑的输入,SI就是TDI,SO就是ScanOut;

对于输出功能管脚,PI就是功能逻辑输出,PO是输出功能管脚,SI就是ScanIn,SO就是TDO;

         

 2.2.1移位shift

        

 2.2.2更新update

       

 2.2.3捕获操作capture:捕获电路状态

        

 2.3旁路寄存器

       仅需操作1bit

         

 2.4JTAG状态机控制器

        16个状态,输入收到TCK、TMS、TRST信号的控制;状态之间的跳转由TMS进行控制。DR线路与IR线路,其中DR线路是数据寄存器相关控制,IR线路是控制指令寄存器相关控制。

 

        

  •  指令控制:Run-Test/Idle -> 2个pulse的TMS=1 ->进入Select-IR Scan ->TMS=0 -> 进入Capture-IR -> TMS=0 -> Shift-IR,然后重复Capture与Shift操作 -> Exit-IR与Pause-IR为中间态,可跳过 -> Update-IR更新数据 -> TMS=0进入Run-Test/Idel,或者TMS=1直接进入Select-DR Scan状态;
  • 数据控制:每次只能操作一种data寄存器,例如数据寄存器或者旁路寄存器;
  • JTAG复位操作:5 个TMS = 1进入Test-Logic-Reset状态,或直接使用TRST=0进入Test-Logic-Reset状态;

3.JTAG指令集

IEEE1149协议规定的指令如下:

        

 3.1 激活JTAG指令的方法

  1. JTAG初始化
  2. 通过TMS运转状态机
  3. Select-IR
  4. Shift-IR
  5. Run-Test/idle

         

 3.2 EXTEST指令

        目的:测试板级芯片间互连线

         

  1.  输入EXTEST指令
  2. TDI移入数据到芯片一(shift)
  3. 更新芯片一的输出管脚(update)
  4. 芯片二捕获输入管脚数据
  5. TDO移出数据从芯片二

        

 3.3 BYPASS指令

  • 目的:旁路不需要测试的芯片
  • 芯片三的TDI和TDO之间只有一个bit的旁路寄存器
  • 缩短测试时间

        

 3.4 SAMPLE指令

  • 目的:获取新片输入输出管脚的即时数据
  • 在输入部分:采样来自外面的输入数据
  • 在输出部分:采样来自ChipSystem部分的输出数据

        

 3.5 PRELOAD指令

  • 目的:将数据Load进OnChipSystem部分,或者是将数据Load出去

        

 3.6 IDCODE指令

  • 目的:把存储芯片ID信息的寄存器接入TDI/TDO链,获取ID信息
  • ID信息有32BITS,有JEDEC组织分配给每一个厂家

       

 3.7 INTEST指令

  • 目的:芯片内部测试(通过BoundryScan可以控制OnChipSystem的任意IO,控制输入输出进行内部的测试)

        

 3.8 USERCODE

 

  1. 目的:芯片内部集成的Ip测试
  2. 针对不同的Ip,选择不同的指令,同时通过数据寄存器进行输出输入输出的控制
  3. UESRCODE更像是一个集合,里面包含针对不同Ip的指令,这些指令需要保存到指令寄存器中,同时指令解码器能够解码指令才可作用

        

4 Tessent边界扫描插入流程

4.1 总流程

  1. 读入网表
  2. 配置测试信号
  3. 配置边界扫描插入
  4. 插入边界扫描
  5. 生成综合脚本

4.2 读入网表

  1. set_context dft -no_rtl
  2. read_cell_library & read_verilog
  3. set_current_design
  4. IO cell library

       

  •  IE:控制PAD是否能够输入
  • OEN:控制PAD是否能够输出
  • I:芯片内部向PAD进行数据输出(在PAD角度看)
  • PAD:PAD本身以双向IO存在
  • C:PAD将外部数据输出到芯片内部

4.3 配置测试信号

  1. set_dedign_level chip
  2. Define 5 JTAG TAP pins
  3. check_design_rules(check到AnalysisMode)

        

         其中IJTAG_TCK这些名字是信号的LogicalName,更重要的是需要哪些PhysicalName(tck、tdi...),以及对应关系

4.4 配置边界扫描插入

  1. set_dft_specification_requirements -boundary_scan on(设置操作模式boundaryScan)
  2. set spec [create_dft_specification](生成测试命令)
  3. set_boundary_scan_port_option xxxx(特殊化定制需求对扫描链)
    • Pin order according to physical location.(根据芯片的IO指定PAD的物理顺序)
    • Non-bscan IO.(哪些IO不做BoundaryScan)
  4. report_config_data $spec / write_config_data xxx.tcl -replace(打印链信息至屏幕 / .tcl内)

4.5 插入边界扫描

  1. process_dft_specification:生成相应的的RTL,并插入现有网表
  2. extract_icl(boundaryScan的插入会作为IJTAG网络一部分存在,需要检查边界扫描是否合理)
    • 检查1687相关连接是否正确,生成当前层次的ICL文件
    • 生成综合用时序约束文件

4.6 生成综合脚本

  1. run_synthesis (-generate_scripts_only)
    • 在tessent shell内部调用综合工具直接综合,但会占用tessent licence
    • 只生成综合脚本,用户在外部调用综合工具,例如DC
  2. write_design_import_script:将涉及的众多RTL文件统一写在script脚本中

 

标签:TMS,芯片,简介,第五章,指令,测试,寄存器,JTAG
From: https://www.cnblogs.com/jihexiansheng/p/17527673.html

相关文章

  • TCP/IP协议模型的五层处理流程简介
    TCP/IP是一种分层模型,它将通信协议分解为五个层次,每个层次都有特定的功能和任务。以下是TCP/IP五层的处理流程:应用层(ApplicationLayer):这是TCP/IP模型的最上层,负责处理应用程序的请求和数据。在该层,应用程序(例如浏览器、电子邮件客户端等)与用户进行交互,并将数据传递给下一层。......
  • 第五章 数组以及应用
    1.一维数组1.1一维数组的基本概念当需要在Java程序中记录单个数据内容时,则声明一个变量即可。当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可,一维数组本质上就是在内存空间中申请一段连续的存储单元。数组是相同数据类型的多个元素的容器,元素......
  • Java Netty简介
    Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io(http://netty.io/)。Netty是一个基于JAVANIO类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定......
  • mybatisPlus简介
    mybatisplus简化了dao层packagecom.example.mp_01.dao;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.example.mp_01.domain.User;importorg.apache.ibatis.annotations.Mapper;@MapperpublicinterfaceUserdaoextendsBaseMapper<User>......
  • springboot简介
    spring程序于springboot程序对比springboot程序必须联网  另外可以去spring的官网创建项目进入spring官网选择这个选择配置点击generate生成会生成zip压缩文件......
  • ThreadPoolExecutor线程池用法简介
    ThreadPoolExecutor 是Java中用于管理线程池的类,它提供了一种方便的方式来执行多线程任务。通过使用线程池,我们可以有效地管理和复用线程,提高程序的性能和资源利用率。下面是 ThreadPoolExecutor 线程池的详细用法介绍:创建线程池对象:ThreadPoolExecutorexecutor=ne......
  • Java高并发之CyclicBarrier简介(转)
    原文:https://juejin.cn/post/7209617649885184058作者:xindoo来源:稀土掘金  Java中的CyclicBarrier是一种同步工具,它可以让多个线程在一个屏障处等待,直到所有线程都到达该屏障处后,才能继续执行。CyclicBarrier可以用于协调多个线程的执行,以便它们可以在某个点上同步执行......
  • Coherence 简介
    Coherence是Oracle为了建立一种高可靠和高扩展集群计算的一个关键部件。 典型的使用Coherence的架构图是:Coherence被放在应用服务器和数据库服务器之间,从而解决通常应用架构里的瓶颈(数据瓶颈)来提高整个应用架构的可扩展性。类似如下图: 分布式集群缓存Coherence是一个分......
  • 第五章 搭建maven工程及测试
    搭建maven工程及测试5.1准备pom文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=......
  • 《python从入门到实践》第五章习题记录
    #在第5章中,你将学习如何使用if语句在不同的条件下采取不同的措施;学习如何将一组较复杂的条件测试组合起来,并在满足特定条件时采取相应的措施。你还将#学习如何在遍历列表时,通过使用if语句对特定元素采取特定的措施。#第5章if语句#5-1#条件测试:编写一系列条件测试;将每......