目录
10.1.3 自动测试设备(ATE,Automatic Test Equipment)
第十章 可测性设计
10.1 集成电路测试概述
10.1.1 测试的概念和原理
通常是指芯片流片后的测试,定义为被测芯片施加已知的测试向量,观察其输出结果,并与已知正确输出结果进行比较二判断芯片功能、性能、结构好坏的过程。
10.1.2 测试及测试向量的分类
- 按测试目的分类
- 验证测试
- 生产测试
- 可靠性测试
- 接受测试
- 按测试方式的分类
- 穷举测试向量
- 功能测试向量
- 结构测试向量
10.1.3 自动测试设备(ATE,Automatic Test Equipment)
可以自动完成测试向量的输入和核对输出的工作,大大提高了测试速度,但是目前仍旧面临不小的挑战。
10.2 故障建模及ATPG原理
10.2.1 故障建模的基本概念
故障建模是生产测试的基础,在介绍故障建模前需要先理清集成电路中几个容易混淆的概念:
-
- 缺陷:指在集成电路制造过程中,在硅片上所产生的物理异常,如某些器件多余或被遗漏了;
- 故障:是指由于缺陷所表现出的不同于正常功能的现象;
- 误差:由于故障而造成的系统功能的偏差和错误;
- 漏洞:是指由于一些设计问题而造成的功能错误,也就是常说的bug;
10.2.2 常见故障模型
- 数字逻辑单元中的故障模型
- 固定型故障(SAF,Stuck At Fault)
- 晶体管固定开/短路故障(Stuck-open/Stuck-short)
- 桥接故障
- 跳变延迟故障
- 传输延迟故障
- 存储器的故障模型
- 单元固定故障
- 状态跳变故障
- 单元耦合故障
- 临近图形敏感故障
- 地址译码故障
- 数据保留故障
10.2.3 ATPG基本原理
在抽象出有效故障模型的基础上,就可以开发各种自动测试向量产生(ATPG,Automatic Test Pattern Generation)向量了。
故障覆盖率 = 被检测到的故障数目 / 被测电路的故障总数
10.2.4 ATPG的工作原理
ATPG采用故障模型,通过分析芯片的结构生成测试向量,进行结构测试,筛选出不合格的芯片。
10.2.5 ATPG工具的使用步骤
- 将含有扫描结构的门级网表输入到ATPG工具;
- 输入库文件,必须与门级网表相对应并且能够被ATPG工具识别;
- 建立ATPG模型;
- 根据STIL文件做DRC检测;
- 生成向量;
- 压缩向量;
- 转换ATPG模式的向量为ATE所需要格式的测试向量;
- 输出测试向量和故障列表;
10.3 可测性设计基础
10.3.1 可测性的概念
框架式的定义是可测性是在一定的时间和财力限制下,生成、评价、运行测试,以满足一系列的测试对象(例如,故障覆盖率、测试时间等)。
- 可测性设计(DFT,Design For Test)
是指设计人员在设计系统和电路的同时,考虑到测试的要求,通过增加一定的硬件开销,获得最大可测性的设计过程,简单来说,可测性设计是指为了达到故障检测目的所做的辅助性设计,这种设计为基于故障模型的结构测试服务,用来检测生产故障。
- 可控制性(Controllability)和可观测性(Observability)
可控制性是指将信号设置成0或者1的难度;可观测性是指观察这个信号所产生故障的难度。
10.3.2 可测性设计的优势和不足
优势 | 不足 |
可以利用EDA工具进行测试向量的生成 | 增大了芯片的面积、提高了出错概率 |
便于故障的诊断和调试 | 增加设计的复杂程度 |
可以提高芯片的成品率并衡量其品质 | 需要额外的引脚,增加了硅片面积 |
减少测试成本 | 影响了芯片的功耗、速度和其他性能 |
10.4 扫描测试(SCAN)
10.4.1 基于故障模型的可测性
10.4.2 扫描测试的基本概念
常指内部扫描,而不是边界扫描,扫描时序分成时序和组合两部分,从而使内部节点可以控制并且可以观察。测试向量的施加及传输时通过将寄存器用特殊设计的带有扫描功能的寄存器代替,使其连接成一个或几个长的移位寄存器链来实现的。
- 带多路选择器的D型触发器
- 带扫描端的锁存器
10.4.3 扫描测试原理
在一般的设计中,为了达到IC设计的周期化和同步的目的,电路的主要组成结构为组合逻辑和触发器,信号在经历了组合逻辑传输后,用触发器进行同步。因此对于一般的设计,采用基于多路选择触发器的扫描设计方法,相应的扫描单元就是带多路选择的扫描触发器。而在处理核中,锁存器如果时主要寄存逻辑单元,那么就采用电平敏感扫描设计,响应的扫描单元就是带扫描端的锁存器。
10.4.4 扫描设计规则
- 使用同种类扫描单元进行替换,通常选择带多路选择器的扫描触发器;
- 在原始输入端必须能够对所有触发器的时钟端和一步复位端进行控制;
- 时钟信号不能作为触发器的输入信号;
- 三态总线在扫描测试模式必须处于非活跃状态;
- ATPG无法识别的逻辑应加以屏蔽盒旁路;
- 三态总线
- 门控时钟或者门控异步输入端
- ATPG工具不识别的逻辑
10.4.5 扫描测试的可测性设计流程及相关EDA工具
扫描测试的设计主要包括两部分内容——测试电路插入和测试向量的生成。其中,测试电路插入主要完成下列工作:
-
- 在电路中(RTL)加入测试控制点,包括测试使能信号和必要的时钟控制信号;
- 在扫描模式下将触发器替换为扫描触发器,并且将其串入扫描链中;
- 通过检查DRC,保证每个触发器的可控制性和可观察性;
10.5 存储器的内建自测
10.5.1 存储器测试的必要性
- 存储器本身的物理结构密度很大;
- 随着存储器容量和密度的不断增加,各种针对存储器的新的错误类型不断产生;
- SoC对于存储器的需求越来越大;
- 对于SoC系统而言,SRAM、DRAM、ROM、E2PROM和Flash都可以嵌入其中,因此需要不同的测试方法去测试;
- 存储器的测试时间越来越长;
10.5.2 存储器测试方法
- 直接访问测试方法
- 通过片上微处理器进行测试
- 利用存储器内建自测
- 扫描寄存器测试
- 用ASIC功能测试的方法进行测试
10.5.3 BIST的基本概念
内建自测是当前广泛使用的可测性设计方法,基本思想是电路自己生成测试向量,而不是要求外部施加测试向量,有独立的比较结构来决定所得到的测试结构是否正确,所以内建自测必须加入额外的电路,包括向量生成器、BIST控制器和响应分析器。
10.5.4 存储器的测试算法
- 棋盘式图形算法
- March算法
- 数据保留测试
- 多数据背景
10.5.5 BIST模块在设计中的集成
BIST电路作为逻辑电路的一部分通常在RTL级插入,并且需要与其他逻辑一起进行综合。
10.6 边界扫描测试
10.6.1 边界扫描测试原理
边界扫描的原理是在核心逻辑电路的输入和输出端口都增加一个寄存器,通过将这些I/O上的寄存器连接起来,可以将数据串行输入被测单元,并且从相应端口读出。在这个过程中,可以实现三方面的测试:
-
- 芯片级测试:即可以对芯片本身进行测试和调试,是芯片工作在正常模式,通过输入端输入测试向量,并通过观察串行移位的输出响应进行调试;
- 板级测试:检测集成电路和PCB之间的互连,实现原理是将一块PCB板上的所有具有边界扫描的IC中的扫描寄存器连接在一起,通过一定的测试向量,可以发现元件是否丢失或者摆放错误,同时可以检测引脚的开发和短路故障;
- 系统级测试,在板级集成后,可以通过对板上CPLD或者Flash的在线编程,实现系统级测试。
10.6.2 IEEE 1149.1标准
10.6.3 边界扫描测试策略和相关工具
- 板级测试策略
- 根据IEEE 1149.1标准建立边界扫描的测试结构
- 利用边界扫描测试结构,对被测部分之间的连接进行向量输入和响应分析。这是板级测试的主要环节,也是边界扫描结构的主要应用;
- 对单个核心逻辑进行测试,可以初始化该逻辑并且利用其本身的测试结构。
- 相关EDA工具
- Siemen EDA的Tessent Boundary scan
- Synopsys 的BSD Compilier
10.7 其他DFT技术
10.7.1 微处理器核的可测性设计
- 访问、控制及隔离的设计
- 测试隔离逻辑
- IEEE P1500简述
- 嵌入式核测试语言
10.7.2 Logic BIST
10.8 DFT技术在SoC中的应用
10.8.1 模拟级的DFT技术
- 微处理器
- 存储器
- 其他数字模块
- 模拟模块
10.8.2 SoC中的DFT应用
SoC的测试目标是利用最小的测试向量来检测SoC中所有IP可能出现的故障。SoC一般包含处理器IP、存储器IP、各类接口IP及ADC/DAC等模拟IP,因此需要不同的测试向量对这些IP进行检测,同时不同的IP的测试要求也不同。
第十一章 低功耗设计
11.1 为什么需要低功耗设计
- 便携式设备——电池寿命
- 桌面系统——高功耗
- 高功耗对系统的负面影响
- 系统可靠性降低
- 系统性能降低
- 系统生产及封装成本上升
- 系统散热成本上升
11.2 功耗的类型
CMOS电路中的功耗由两部分组成。第一部分为负载电容充放电时引起的功耗,称为动态功耗,另一部分为漏电流引起的功耗,称为静态功耗。
其中,动态功耗包括翻转功耗(是数字电路要完成功能计算所必须消耗的功耗,也叫有效功耗)和短路功耗(是由于CMOS在翻转过程中PMOS管和NMOS管同时导通时消耗的功耗,又叫无效功耗)。
式中,第一项与第二项为动态功耗,最后一项为静态功耗。
- 动态功耗:大小与数字CMOS电路的工作频率成正比,与工作电压的平方成正比;
- 静态功耗:主要是漏电流(包含PN结反向电流、源极和漏极之间的亚阈值漏电流、栅极漏电流、栅极和衬底之间的隧道漏电流)产生的功耗;
- CMOS工艺的发展与功耗的变化:随着工艺的进步,电源电压随之减小以降低动态功耗,同时降低了阈值电压,导致了系统静态功耗的增加;
- SoC中的主要动态功耗:主要的功耗通常在芯片上的处理器、存储器、时钟树上。
11.3 低功耗设计方法
可以在5个层次上对系统的功耗进行优化,自顶向下分别是系统及优化、行为级优化、RTL级优化、逻辑级优化和物理级优化。层次越高的优化方法效果越明显。
11.4 低功耗技术
11.4.1 静态低功耗技术
- 多阈值CMOS方法:没有任何面积开销,其流程首先使用低阈值的单元库进行综合,然后使用高阈值的标准逻辑单元去替代哪些时间裕量过大的路径上的低阈值的标准逻辑单元;
- 电源门控方法:思想是芯片上的一些模块可以根据应用需求采用不同的电源网络供电;
- 体偏置:在工作模式下,MOS管的体偏置为0,MOS管处于低阈值状态,翻转速度快;在等待模式下,MOS管的体偏置为反向偏执,处于高阈值状态、漏电小。
11.4.2 动态低功耗技术
- 多电压域
- 预计算:是指通过判断输入向量在满足一些特定条件时将输入释放或者屏蔽。
- 门控时钟:是RTL级的低功耗技术
11.4.3 采用低功耗技术的设计流程
与标准设计流程的区别主要由以下几点:
-
- 低功耗设计计划;
- 在RTL中或综合设计中添加相应的低功耗电路描述;
- 在综合过程中创建电压域;
- 带有电源始终接通管理的状态保持综合;
- 物理设计中的多电压域的划分和多阈值CMOS单元的电源门控开关单元的添加;
- 在电源规划阶段,针对多阈值CMOS功耗门控门控的多电压的电源网的综合;
- 早期电源网分析,进而验证电源门控开关布局;
- 多电压布局优化,包括电平转换单元和隔离单元优化;
- 多电压时钟树综合和优化;
- 布线后的电源网分析和带有上电顺序的功耗验证;
11.4.4 低功耗SoC系统的动态管理
低功耗软件的设计有一个原则:在满足系统应用的基础上,速度尽可能慢,电压尽可能低,尽可能满足时间要求。
- 动态电压及频率调节技术(DVFS):是一种通过将不同电路模块的工作电压及工作频率调低到恰好满足系统最低要求,来实时降低系统中不同电路模块功耗的方法;
- 操作系统的低功耗管理:把在系统运行过程中那些没有使用的硬件单元都关闭,操作系统的动态功耗管理有以下两种方法:计时的功耗管理和可预测关闭机制;
- 存储器功耗控制;
11.4.5 低功耗SoC设计技术的综合考虑
对时序、面积、功能椅、验证与仿真复杂度等综合考虑。
11.5 低功耗分析和工具
11.6 UPF及低功耗设计实现
统一功耗格式(UPF,Unified Power Format)是被工业界广泛采用的低功耗设计和验证的描述文件格式。UPF是为了在相对高的设计层次上描述低功耗设计意图,例如采用电源闸门技术和多电压域技术。
11.6.1 基于UPF的低功耗电路综合
UPF支持不同供应商的EDA工具,并在设计过程中,保证一致性。在基于UPF的设计流程中,设计师用UPF文件(指令)来描述低功耗设计的想法。
11.6.2 UPF功耗描述文件举例
- 创建电压域
- 定义工作电压
- 定义电源状态
- 插入电平转换单元
- 插入隔离单元
- 插入保持寄存器
11.7 低功耗设计趋势
- 系统层次上的低功耗设计:主要包含两个方面,静态功耗优化(研究重点在编译和算法设计上)和动态功耗优化(在操作系统支持下的动态功耗管理和动态电压频率缩放);
- 测试电路的低功耗设计:测试环境下的电路中的触发器翻转概率比正常工作条件下大得多,动态功耗会相应的增大;
- 异步电路设计技术:暂不成熟;
- 内存的低功耗设计:未来的重要方向。