问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ASIC/IC设计中的测试技术:DFT、Scan Design和ATPG基础

创作时间:
作者:
@小白创作中心

ASIC/IC设计中的测试技术:DFT、Scan Design和ATPG基础

引用
CSDN
1.
https://blog.csdn.net/Tranquil_ovo/article/details/129652522

ASIC/IC设计中的可测试性(Testability)是衡量全面测试制造出的芯片质量的重要指标。传统的设计和测试过程是分开的,而在当代的设计流程中,测试与设计在IC流程的早期就已合并,形成了Design-for-test(DFT)流程。本文将详细介绍DFT的基本概念、Scan Design和ATPG(自动测试模式生成)的原理和实现方法,并结合Siemens EDA的Tessent工具进行具体说明。

DFT基础

什么是Design-for-Test

可测试性(Testability)是一种设计属性,用来衡量全面测试制造出的芯片质量的难易程度。传统上,设计和测试过程是分开的,只有在设计周期的最后阶段才考虑测试。但是在当代的设计流程中,测试与设计在IC流程的早期合并,创建了称之为DFT(Design-for-test)的流程。

电路的可测试性包括可控制性和可观察性(controllable and observable)。在可测试的设计中,在原始输入端(primary inputs)设置特定的值,使得原始输出端(primary outputs)上的值能够表明内部电路是否正常工作。

为了确保电路设计具有最大程度的可测试性,设计人员必须在开发过程的特定阶段采用特定的DFT技术。

DFT策略

在最高层次上,有两种主要的DFT方法:ad hoc和structured。

Ad Hoc DFT

Ad Hoc DFT是使用良好的设计惯例来增强设计的可测试性,而无需对设计风格进行重大更改。一些具体的方法包括:

  • 最小化冗余逻辑
  • 最小化异步逻辑
  • 隔离时钟和逻辑电路
  • 增加内部控制点和观察点

在整个设计过程中使用这些惯例可以提高设计的整体可测试性。然而,将结构化DFT技术与Siemens EDA DFT工具结合使用,可以极大程度提升良率(yield)。因此,本文的其余部分将集中讨论structured DFT技术。

Structured DFT

结构化DFT提供了一种更加系统和自动化的方法来增强设计的可测试性。结构化DFT的目标是提高电路的可控性和可观察性。有很多方法可以做到这一点,一些常见的技术如下:

  • Scan Design:修改电路内部的时序单元
  • Built-in- Self-Test:在设备中插入自测试功能模块
  • Boundary Scan:在芯片上添加电路来增加板级可测试性

带有DFT的自顶向下设计流程

下图展示了典型的ASIC自顶向下设计流程的基本步骤和该流程中可能使用到的Tessent工具。该流程只是在自顶向下的设计流程中使用结构化DFT策略的简单描述,主要讨论的内容时是图中灰色部分。

如上图所示,任何设计流程中的第一个任务都是创建初始的RTL级设计。在Tessent环境中,可以选择使用Questa™SIM创建高级Verilog描述,或者使用Design Architect™创建原理图。然后,通过使用Questa SIM或其他供应商的Verilog仿真器执行功能仿真来验证设计的功能。

完成RTL设计之后,就可以使用Tessent Scan在设计中插入内部扫描电路(internal scan circuitry)。因为添加了扫描电路,所以需要重新验证设计的时序(re-verify the timing)。在确定设计的功能满足需求之后,就可以生成测试向量,这一步可以使用ATPG工具生成适当格式的测试集。

完成上述任务之后,需要验证在添加了适当的时序信息后,设计和测试集仍然能够正确地运行。可以使用Questa SIM或其仿真器来实现这一目标。

此外,在将设计交付制造和测试之前,可能还需要执行一些额外步骤以满足ASIC客户的需求。

Note:

在设计过程的早期和客户一起检查可能影响DFT策略的特定要求和限制是很重要的。例如,供应商的测试设备可能只能处理单个扫描链,具有内存限制,或具有影响生成扫描电路和测试向量的特殊时序要求等。

扫描设计概述

扫描电路有助于测试生成过程,并可以减少外部测试设备的使用。主要有两种类型的扫描电路:

  • 内部扫描(internal scan):又称为scan design,是对电路的内部进行修改,以增加其可测试性。(对original design进行了修改。)
  • 边界扫描(boundary scan):在设计的外围增加扫描电路,使芯片的内部电路可以通过标准板级接口进行访问。增加的外围电路增强了芯片、芯片I/O pads以及芯片与其他板级电路的互连线的可测试性。

Internal scan(或scan design)是对电路的内部进行修改,以增加其可测试性。

扫描设计(Scan Design)的目标是将难以测试的时序电路(在测试过程中)的行为变成易于测试的组合电路。

The goal of scan design is to make a difficult-to-test sequential circuit behave(during the testing process)like an easier-to-test combinational circuit。

实现这一目标需要使用扫描时序单元(scannable sequential elements,scan cells)替换时序单元(sequential elements),然后将扫描单元串联起来形成扫描寄存器或扫描链(scan chain)。这样,当设计处于扫描模式(scan mode)时,可以使用这些串连的扫描单元将数据移进和移出。

下图所示的设计包含组合和时序两部分。在添加scan之前,设计有三个输入端口A、B、C,两个输出端口OUT1、OUT2。这种“Before scan”的设计很难将其初始化到已知状态,这就使得通过设计的原始输入输出端口控制内部电路和观察输出行为变得很困难。

在添加扫描电路之后,该设计有两个额外的输入sc_in和sc_en,以及一个额外的输出sc_out。扫描存储单元(Scan memory elements)替换原来的存储单元,这样当您使能shifting(sc_en激活)时,工具将从sc_in读入扫描数据。

扫描电路的工作过程如下(使用atpg工具生成的scan patterns的施加过程):

  1. 启用扫描功能,允许移位(shift),初始化scan cells(加载数据到scan cells)。【扫描使能信号连接到了所有的scan cells】
  2. 扫描单元数据加载完毕之后,保持扫描时钟关闭,在PI施加激励
  3. 记录(measure)输出端口数据。【电路稳定之后,PO的输出相应使和预期的fault-free响应进行对比,该过程也可以称之为parallel measure】
  4. 给定时钟(one or more clocks),将新的数据(组合电路的steady-state output response)捕获到scan cells中;【parallel capture】
  5. 启用扫描功能,取出(unload)并记录捕获到得数据值,同时通过shift过程加载新的值到scan cells中。

这里,scan cells其实可以称之为pseudo-primary outputs。【PPI、PPO】

【该图来自DFTC manual】

关于扫描设计方法论

Scan是一种扫描设计方法,它将设计中的所有存储单元(memory elements)替换为等效的可扫描单元,然后将它们连接起来形成扫描链(scan chain)。其目标是控制和观察设计中的所有存储单元中的值,这样就可以使时序电路的测试生成和故障仿真像组合电路一样简单。

图2-2中的黑色矩形代表扫描单元(scan elements),连接它们的线就是扫描路径(scan path)。因为这是一个扫描设计,所有的存储单元都被替换并连接在扫描路径中。圆形的方框表示电路的组合部分。

Scan的优点

  • Highly automated process 使用scan insertion工具自动进行扫描链插入,需要的manual effort极少
  • Highly-effective, predictable method 提高测试覆盖率的一种简单有效,易于理解和接受的方法
  • Ease of use 容易上手和操作,不需要测试工程师帮助就可以进行扫描链的插入和运行ATPG
  • Assured quality 质量保证,包含这种电路的部件可以在芯片制造过程中进行彻底的测试

关于Wrapper Chains

在规模大、复杂度高的设计中,ATPG过程通常是不可预测的,尤其是对于大型时序扫描或部分扫描设计而言。

为了减少这种不可预测性,大量用于测试结构插入和测试生成的层次化技术开始出现,创建wrapper chains就是其中之一,该技术(wrapper chains)对分块(design blocks)的大规模设计十分有益。

Wrapper chains通过分层封装(wrapper)扫描链增加了设计的可控性和可观察性。

A wrapper chain is a series of scan cells connected around the boundary of a design partition that is accessible at the design level。

wrapper chain通过将从外部看具有较低的可测试性(可控制性和可观察性)的block的输入端口和输出端口的sequential elements转换为scan cells,从而提高了测试的覆盖率和运行时间。

Wrapper chain的结构如下图所示:

图中所示的设计被划分为三个部分A、B、C,粗线表示block A的输入和输出,这些输入和输出在设计层面(desing level)上不能直接控制或观察(因为他们不是design的PI和PO)。由于这些连线不能直接访问,被这些引脚控制的部分电路可能会导致整体设计的可测试性降低。

图2-4显示了如何向block A添加wrapper chains结构,从而在design level提高分区A的可控性和可观察性。

这里,只有和不可控或者不可观察的PI(或PO)直接相连的第一个存储单元才会被放置到wrapper chain上。(这里的PI和PO针对的是design block而言)

wrapper chain由两种类型的单元组成:

  • 直接连接到partitions的不可控制的PI的时序单元
  • 直接连接到partitions的不可观察的PO的时序单元

为了直接访问之前不可控或不可观察的电路,该分区还需要两个设计级的引脚(design-level pins),scan in和scan out。

可以将wrapper chain与扫描结构结合使用。不符合wrapper chain的时序单元可以作为内部扫描的候选单元。

使用Tessent Scan进行测试结构插入

Tessent Scan是西门子EDA的internal scan synthesis工具,它可以识别并将时序单元(sequential elements)转换为scan cells,然后将这些扫描单元连接形成扫描链。

Tessent Scan的特性如下:

  • Verilog format:对Verilog门级网表进行读写操作
  • Multiple scan types:支持插入两种不同类型的scan types:mux-DFF and clocked-scan。
  • Multiple test structures:支持识别和插入scan(both sequential ATPG-based and scan sequential procedure-based)、wrapper chains和test point。
  • Scannability checking:为设计中的时序单元提供强大的可扫描性检查/报告功能。
  • Design rules checking:在实际插入扫描之前,执行设计规则检查以确保scan的配置和操作的正确性。此规则检查还保证Tessent scan执行的扫描插入的结果在ATPG工具中正常运行。
  • Interface to ATPG tools:自动为ATPG工具生成关于如何使用Tessent scan创建的扫描电路的相关信息
  • Optimal partial scan selection:提供最佳的部分扫描链的分析和插入功能。
  • Flexible scan configurations:灵活性强,例如可以选择scan cells的连接顺序,一条或者多条scan chains,对一条scan chain使用多个时钟等。
  • Test logic:提供在不可控的设置、复位、时钟、三态使能和RAM读/写控制线上插入测试逻辑电路的功能。
  • User specified pins:Enables user-specified pin names for test and other I/O pins。【自定义用于测试的引脚的名称】
  • Multiple model levels:Handles gate-level, as well as gate/transistor-level models。
  • Online help:Provides online help for every command along with online manuals

ATPG概述

ATPG:Automatic Test Pattern Generation

test patterns有时称为test vectors,是在制造测试过程中施加在原始输入引脚上的一组01逻辑值,用以确定芯片是否正常工作。

当施加test pattern时,自动测试设备(Automatic Test Equipment,ATE)通过将测试向量中包含的无故障输出(fault-free output)与ATE测量的实际输出进行比较,来确定电路是否没有制造缺陷。

ATPG过程

ATPG的目标是创建可以满足给定测试覆盖率(test coverage)的测试集。

ATPG主要包括两个步骤:

  1. 生成测试向量
  2. 故障仿真,确定测试集能够检测哪些故障

Tessent ATPG工具自动完成以上步骤,可以生成各种格式的patterns,满足不同的测试需求。

两种最典型的向量生成方法是随机性测试向量生成和确定性测试向量生成。

此外,ATPG工具可以对来自外部的向量进行故障仿真,并将那些检测到故障的向量放置在测试集中。

随机性测试向量生成

ATPG工具生成许多随机向量,识别其中可以检测到故障的向量,然后只将这些向量存储到测试集中。

随机测试向量生成中使用的故障仿真不能取代确定性测试生成,因为它永远不能识别冗余故障(redundant faults),它也不能为检测概率非常低的故障创建测试向量。但是,它可以作为确定性测试生成的初始步骤,使用少量随机向量可以提高ATPG性能。

确定性测试向量生成

ATPG针对给定的故障生成测试集,其过程是从故障列表(fault list)中选择一个故障,创建一个向量来检测故障,对向量进行故障仿真,确保向量能够检测到故障。

更具体来说,工具给可控点(control point)赋值,使故障点(fault site)的状态(state)和无故障的状态(fault-free state)相反,这样故障值和无故障值之间就存在一个可以检测到的差异。

工具还必须找到一种方法,将这种差异传播到它可以观察到故障影响的点。【ATPG算法】

如果工具用尽所有可能的选择都没有找到一个成功的测试向量,那么它必须在对故障进行分类之前执行进一步的分析。

需要进行该分析的故障(Fault)类型包括redundant, ATPG-untestable, 和possible-detected-untestable。

识别这些故障类型是确定性测试生成的一个重要部分,它对于实现高测试覆盖率至关重要。例如,如果工具证明了一个故障是redundant,那么它就可以安全地将该故障标记为不可测试的(untestable)。否则,它将被分类为潜在的可检测故障(potentially detectable fault),在计算测试覆盖率时作为未测试故障(untest fault)计数。

外部测试向量生成

当ATPG的初始内容是一组预先存在的外部向量时,ATPG工具使用外部向量测试生成。

工具分析该外部向量集,以确定哪些向量可以检测故障列表中的故障。然后,它将这些有效的向量放入内部测试向量集中。在这种情况下,工具最终"生成的向量(generated patterns)"中是包含从外部集合中选择的能够有效帮助达到最高测试覆盖率的向量。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号