DFT基本入门介绍

news2024/11/24 6:35:23

    • 1.什么是DFT?
    • 2.为什么要做DFT?
    • 3.“测试”与“验证”的区别
    • 4.DFT的核心技术
      • 1)扫描路径设计(Scan Design)
      • 2)内建自测试(Bist)
      • 3)JTAG
      • 4)ATPG
    • 5.DFT工程师的岗位职责

随着芯片的制程越来小(5nm), 芯片的规模越来越大,对芯片的测试也就变得越来越困难。
而测试作为芯片尤为重要的一个环节,是不能忽略的。DFT也是随着测试应运而生的一个概念,目前在芯片设计中都离不开DFT。
本文先对DFT做一个全面的介绍,旨在让大家了解DFT的中的基本概念。

1.什么是DFT?

提到DFT, 大部分人想到的应该是离散傅里叶变换(Discrete Fourier Transform,缩写为DFT), 嗯…, 笔者大学被信号与系统这门课虐的不轻。但是在IC界,DFT的全称是 Design For Test

指的是在芯片原始设计中阶段即插入各种用于提高芯片可测试性(包括可控制性和可观测性)的硬件逻辑,通过这部分逻辑,生成测试向量,达到测试大规模芯片的目的。

Design–实现特定的辅助性设计,但要增加一定的硬件开销

For test–利用实现的辅助性设计,产生高效经济的结构测试向量在ATE上进行芯片测试。

2.为什么要做DFT?

从1958年Jack Kilby发明了第一只包含一个双极性晶体管开始,集成电路经过了半个多世纪的发展。

芯片的制程工艺越来越小,数字芯片的规模越来越大,测试成本进一步增加,甚至超过芯片功能部分本来的成本。如何在芯片设计的过程中考虑测试的问题,成为当前芯片设计很重要的一部分。

测试已经成为集成电路设计和制造过程中非常重要的因素,它已经不再单纯作为芯片产品的检验、验证手段,而是与集成电路设计有着密切联系的专门技术,与设计和制造成为了一个有机整体。可测性设计(DFT)给整个测试领域开拓了一条切实可行的途径,目前国际上大中型IC设计公司基本上都采用了可测性设计的设计流程,DFT已经成为芯片设计的关键环节。

3.“测试”与“验证”的区别

验证(Verification)的目的是检查设计中的错误,确保设计符合其设计规范和所期望的功能;而测试(Testing)则是检查芯片的加工制造过程中所产生的缺陷和故障。

4.DFT的核心技术

1)扫描路径设计(Scan Design)

扫描路径法是一种针对时序电路芯片的DFT方案.其基本原理是时序电路可以模型化为一个组合电路网络和带触发器(Flip-Flop,简称FF)的时序电路网络的反馈。

Scan 包括两个步骤,scan replacementscan stitching,目的是把一个不容易测试的时序电路变成容易测试的组合电路。

2)内建自测试(Bist)

内建自测试(BIST)设计技术通过在芯片的设计中加入一些额外的自测试电路,测试时只需要从外部施加必要的控制信号,通过运行内建的自测试硬件和软件,检查被测电路的缺陷或故障。和扫描设计不同的是,内建自测试的测试向量一般是内部生成的,而不是外部输入的。内建自测试可以简化测试步骤,而且无需昂贵的测试仪器和设备(如ATE设备),但它增加了芯片设计的复杂性。
在这里插入图片描述

3)JTAG

JTAG(Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。

JTAG的基本原理是在器件内部定义一个TAPTest Access Port,测试访问口)通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。

4)ATPG

ATPG(Automatic Test Pattern Generation)自动测试向量生成是在半导体电器测试中使用的测试图形向量由程序自动生成的过程。测试向量按顺序地加载到器件的输入脚上,输出的信号被收集并与预算好的测试向量相比较从而判断测试的结果。

5.DFT工程师的岗位职责

  • 芯片级DFT设计与集成,包括SCAN, MBIST和JTAG;
  • 负责DFT测试向量的自动生成及仿真;
  • 与逻辑设计工程师紧密合作,提高DFT测试覆盖率;
  • 与产品工程师和测试工程师紧密合作,调试并解决在测试机上失败的DFT测试向量;
  • 芯片级综合;
  • 与后端工程师紧密合作,完成芯片级timing signoff;
  • 芯片级形式验证;

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

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

相关文章

xxjob分布式任务调度

前言 在工作中使用到了定时任务,通过查找资料选择了xxjob,以下是xxjob的介绍以及基本的使用. xxjob介绍 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 将调度行为抽象形成“调度中心”公共平台,而平台自身…

vue3+rust个人博客建站日记3-编写主页

内容 绘制了主页的基本布局设置了封装了header栏组件并设置了全局黑夜模式. 选择一个组件库-Naive UI 如果没有设计能力,又想开发出风格统一的前端页面。就一定要选择一个漂亮的组件库。 本次项目选择使用Naive UI,NaivUI库曾被Vue框架作者尤雨溪推荐…

【云原生】k8s核心技术—集群安全机制 Ingress Helm 持久化存储-20230222

文章目录一、k8s集群安全机制1. 概述2. RBAC——基于角色的访问控制二、Ingress三、Helm1. 引入2. 使用功能Helm可以解决哪些问题3. 介绍4. 3个重要概念5. helm 版本变化6. helm安装及配置仓库7. 使用helm快速部署应用8. 自己创建chart9. 实现yaml高效复用四、持久化存储1.nfs—…

ArXiv简介以及论文提交

arXiv网站简介 arXiv是一个收集物理学、数学、计算机科学、生物学与数理经济学的论文预印本的网站。其中arXiv发音同“archive”,因为“X”代表希腊字母 ,国际音标为[kai]。它于1991年8月14日成立,现由美国康奈尔大学维护。 ——维基百科 对…

在Angular项目中引入NG-ZORRO

在Angular项目中引入NG-ZORRO1.前置2.安装NG-ZORRO并进行初始化配置3.引入样式4.引入组件1.前置 首先创建一个angular项目:angular创建一个新项目的步骤 这是我项目的结构: 2.安装NG-ZORRO并进行初始化配置 安装NG-ZORRO:cd 到当前项目位…

微信小程序、小游戏的流量主一般可以赚多少钱?

本篇文章主要科普小程序、小游戏流量主一般赚钱的实际情况,通过在下长期运营的经验汇总而成。 日期:2023年2月26日 作者:任聪聪 小程序、小程序满1000用户后即可开通流量主,但实际上很多人并没有传说中的那种日赚几千的流量收入的…

学习笔记之Vuex(五)

Vuex(五)Vuex一、什么是Vuex二、Vuex工作原理三、搭建Vuex环境四、求和案例分析4.1 求和案例——vue实现4.2 求和案例——vuex实现(五)Vuex 一、什么是Vuex 1.概念 在Vue中实现集中式状态(数据)管理的一…

第二节类型转换、运算符

类型转换 自动类型转换: 类型小的变量可以赋值给大的类型变量。 表达式的自动类型转换: byte short char在表达式中是当做 int计算的。 强制类型转换: 大类型的变量转化为小类型的变量。 注:浮点型转换为整数是直接丢掉小数部…

nacos config

https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config 必须在 bootstrap.properties 配置 nacos server 的地址 data id : 对应一个微服务 namespace : 对应环境 dev prod 默认 public group : 对应一个项目,,默认 DEFUALT_GROUP 当你…

神经网络 线性回归从0开始实现的代码分析 --跟李沐学AI

3.2. 线性回归的从零开始实现 — 动手学深度学习 2.0.0 documentation 分析了好几天才懂,个人水平有限 如果有错请指出 1.导包 %matplotlib inline import random import torch from d2l import torch as d2ldef synthetic_data(w, b, num_examples): #save""&quo…

spring integration使用:消息转换器

系列文章目录 …TODO spring integration开篇:说明 …TODO spring integration使用:消息路由 spring integration使用:消息转换器 spring integration使用:消息转换器系列文章目录前言消息转换器(或者叫翻译器&#x…

SQLserver 语句查询当前数据库版本型号

SQL执行语句select serverproperty(productversion) as 产品版本号,serverproperty(productlevel) as 产品层次,serverproperty(edition) as 版本SQL执行历史记录:select version as 版本号select serverproperty(productversion) as 产品版本号,serverproperty(pro…

【Redis】一文搞懂 Redis 中的缓存穿透、缓存击穿、缓存雪崩及其解决方案

一文搞懂 Redis 中的缓存穿透、缓存击穿、缓存雪崩及其解决方案1. 缓存穿透1.1 什么是缓存穿透1.2 缓存穿透的解决方案1.2.1 缓存空对象1.2.2 布隆过滤器布隆过滤器工作原理Redis 使用布隆过滤器2. 缓存击穿1.1 什么是缓存击穿1.2 缓存击穿的解决方案1.2.1 设置热点数据永不过期…

【无限思维画布】制作思维导图第三步,节点移动与编辑

正在为无限词典制作单词思维导图功能,实现无限单词导图,无限思维画布。目前制作到第三步,实现节点移动与编辑: 节点移动与编辑Details 第一步,搜索 github。 一个是比较完善的,基于普通dom,用…

Random(二)什么是伪共享?@sun.misc.Contended注解

目录1.背景简介2.伪共享问题3.问题解决4.JDK使用示例1.背景简介 我们知道,CPU 是不能直接访问内存的,数据都是从高速缓存中加载到寄存器的,高速缓存又有 L1,L2,L3 等层级。在这里,我们先简化这些复杂的层级…

对象创建的过程

对象创建的过程 在语言层面上,创建对象通常仅仅是一个new关键字而已(例外:复制、反序列化); 而在虚拟机中,对象的创建又是怎样一个过程呢?(文中讨论的对象限于普通Java对象&#xff…

Jetpack Compose 深入探索系列一:Composable 函数

Composable 函数的含义 如果我们只专注于简单的语法,任何标准的Kotlin函数都可以成为一个可组合函数,只需将其注解为Composable: 通过这样做,我们实际上是在告诉编译器,该函数打算将一些数据转换为一个Node节点,以便注…

Simulink建模:如何学习Simulink建模

本文介绍博主自己学习Simulink建模的方法。后续博客都会按照本文中的思路来记录博主学习的过程。 文章目录1 Simulink建模的分类1.1 连续模型建模1.2 物理模型建模1.3 控制算法建模2 控制算法建模的基本知识2.1 控制算法与电控软件架构2.2 控制算法与周期调度2.3 控制算法与其他…

分布式-分布式缓存笔记

分布式系统缓存 缓存分类 前端缓存 前端缓存包括页面和浏览器缓存,如果是 App,那么在 App 端也会有缓存。当你打开商品详情页,除了首次打开以外,后面重复刷新时,页面上加载的信息来自多种缓存。 页面缓存属于客户端…

61 - 进程互斥锁的详细设计

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 问题1.1 生活中的示例1.1.1 吃饭问题1.1.2 十字路口1.1.3 洗手间1.1.4 生产消费者问题1.2 结论2. 接下来的问题2.1 临界资源(Critical Resource)2.2 临界区(Critical Section)2.3 任…