龙芯2E处理器可测试性设计
张珩
中国科学院计算技术研究所
系统结构部微处理器中心
摘要
可测试性设计已经成为现代集成电路设计流程中必不可少的一环,其中以基于stuck-at故障模型的扫描设计为主要方法。在龙芯2E处理器的设计流程中由 于使用了90nm工艺,因此仅仅使用stuck-at故障模型的扫描设计已经不能满足设计需要,更多的故障模型可以使用时延故障模型来建模。龙芯2E的可 测试性设计采用了全扫描设计、存储器BIST、时延测试和IDDQ测试等技术来提高故障覆盖率和对物理缺陷的检测能力。在实现过程中使用了 synopsys公司的DFT Compiler、TetraMAX等工具,通过这些工具的支持在较短的时间内完成了可测试性设计工作。
1.0 前言
随着集成电路制造工艺的快速发展,设计的规模越来越大。随之而来的是在制造过程中产生的物理缺陷逐渐成为设计人员关注的主要问题。在对芯片进行测试时人们 关注的主要问题是:测试是否覆盖了所有故障,即测试的覆盖率;测试产生的时间占全部设计流程的比例,即测试生成的复杂度;测试的执行时间是否经济,即测试 向量的测试效率。解决上述问题的方法是采用可测试性设计,该方法是指在芯片的设计阶段就考虑以后测试的需要,使得芯片容易测试,可以被充分测试,以及降低 测试成本。可测试性设计已经成为现代集成电路设计流程中必不可少的一环。
目前比较成熟的测试技术主要有内部扫描设计、内建自测试、测试点插入、边界扫描设计等。可测试性设计对原始设计的修改必须在不改变原始设计功能的前提下进 行。在众多可测试性设计方法中基于扫描的设计方法是使用最为广泛的方法,该方法是把设计中的时序电路建模为一个组合网络和一组带记忆元件(触发器)的反 馈,如图1A中实线所示。这些记忆元件的取值体现了电路的状态,但由于很难控制或观测它们的取值,所以对时序电路进行测试很困难。内部扫描就是把这些记忆 元件修改为扫描触发器(如图1B),并连接成为扫描链(相当于可以移位的寄存器),扫描链的输入在芯片管脚可控,其输出在管脚可观测,从而达到对记忆元件 的取值进行控制和观测的目的。如图1A中虚线所示。通过扫描输入口,可以把需要的数据串行地移位到扫描链中相应的单元,即可以串行地控制它们;同样,通过 扫描输出口,可以串行地观测它们。这样一来,所有被扫描的记忆单元即可以看作测试数据的输入(称为伪输入),也可以看作测试响应的输出(称为伪输出),进 行内部扫描设计后的时序电路的测试可以参照组合电路测试的方式来进行。
图1 扫描设计的基本原理和扫描触发器的基本结构
随着设计制造工艺向纳米级推进,更多的物理缺陷可以用与时延相关的故障类型来建模。在龙芯2E的可测试性设计中使用全扫描设计、存储器BIST、时延测试 和IDDQ测试等多种方法来提高故障覆盖率和对物理缺陷的检测能力。本文的主要结构如下: 在第二节主要介绍了在龙芯2E中采用的可测试性设计方案;第三节主要介绍了使用TetraMAX针对内部扫描设计产生测试向量的主要方法和相应结果;第四 节总结了龙芯2E的可测试性设计工作并对未来的工作进行了展望。
2.0 龙芯2E可测试设计方案
龙芯2E的可测试性设计可以分为三个主要部分:内部扫描设计、存储器内建自测试和边界扫描设计。其主要结构如图2所示,下面分别进行说明。
图2 龙芯2E可测试性设计的主要结构
2.1 内部扫描设计
龙芯CPU中约有6万多个记忆单元,为了获得较高的故障覆盖率,我们采用了接近全扫描设计方案,用最基本的扫描触发器来替代记忆单元。共66400个扫描 单元,2285个非扫描单元。总共设计了69条扫描链。最长的扫描链含有1000个扫描触发器,最短的扫描链含有585个扫描触发器。考虑到一条扫描链上 触发器的物理位置尽量毗邻,以避免扫描触发器之间的连线过长,因此,在扫描链的布局上,将同一功能模块内部的扫描触发器尽量安排在同一条扫描链上。同时值 得注意的是这款CPU中的逻辑电路不含有组合逻辑环路。
全扫描设计不可避免的要增加一个输入管脚scanmode_(图2下端,标示(2)处),用于扫描使能。为了节省管脚开销,69条扫描链共用同一个扫描使 能信号,这样69条扫描链的测试输入数据将并发送入,测试响应数据将并发移出,所需时间以最长扫描链的长度为准,即一个测试需要约1000个扫描时钟周期 来完成测试数据的加载和测试响应的观测。
同样是为了节省扫描设计的管脚开销,所有69条扫描链的扫描输入管脚与54个功能管脚复用,如图2右端FI1(SI1)~FI54(SI54)所示,为了 减少所需要复用的功能管脚的个数,这里采用了Illinois扫描结构(即share scan in技术),用相同的扫描输入管脚驱动不同的扫描链,同时采用相同扫描输入的扫描链条数不超过2;所有69条扫描链的扫描输出管脚分别与69个功能管脚复 用,如图2右端FO1(SO1)~FO69(SO69)所示。在扫描模式下,复用的这些管脚用来输入或输出测试数据;在功能模式下,这些管脚等同于一般的 功能管脚。
2.2 存储器内建自测试设计
龙芯2E中,嵌入式存储器由五种型号的SRAM组成,共约0.73M,占芯片总面积的45%以上。其组成情况见表1。由于这五组SRAM的位置并不集中, 出于布局布线的考虑,我们为不同组合的ram组设计了单独的BIST逻辑,它们构造相同。BIST控制器的结构如图3所示。其中4个 dcache_data和1个dcache_tag打包设计一个BIST,其中4个scache_data和1个scache_tag打包设计一个 BIST,4个fr模块设计一个BIST。
由于布局布线的限制,每一个BIST内包含的SRAM内是串行测试的;又由于这些个BIST控制器受同样的信号控制,采用同样的测试时钟,同时启动、同步 执行,因此这些组SRAM的测试是并行进行的。测试所需的时间为最大的SRAM块(即一个Scache_ram_with_bist内包含的5个ram) 的测试执行时间。
为了得到每一块RAM的测试结果同时又最大限度的减少芯片管脚开销,可以借助于这款CPU芯片的可测性设计采用的另一种重要方案——扫描设计(Scan Design),将这些SRAM的测试结果通过扫描链扫描输出。
表1龙芯2E中的SRAM分布情况
BIST控制器的基本结构如下:
是体现march算法的核心部件,它依照算法步骤对其它模块施加控制信号,如控制地址产生器的地址变化顺序、控制数据产生器选择数据背景、控制比较器的比 较时机以及控制RAM的读写等。BIST控制器是一个有限状态机,它的状态数目取决于所采用的march算法的元素个数。
,也叫步进器,产生遍历RAM的地址序列。这个序列并不需要是严格的递增或递减序列,只要?、?两列地址的排列顺序完全相反即可。
向RAM送入数据背景(或它的取反值),并将相同的数据送入比较器作为期待读出的正确结果。
比较器 对RAM的读出信号与期待的正确值进行比较,在不一致时给出出错指示。
二选一电路 套封在RAM的外围,由BIST测试模式信号控制,使得在正常工作模式下RAM接收来自系统的信号,而在BIST测试模式下接收march测试产生的信号。
图3 BIST控制器的基本结构
2.3 边界扫描设计
在龙芯2E的JTAG的中,主要实现边界扫描最基本的三条指令,其编码与译码如表2所示。
表 2指令及其编码与译码
其中,编码有4位,可以方便以后扩充到16条指令。其译码信号主要有选链信号(Selected TDR,对测试数据寄存器进行选择)和对边界扫描单元的多路器的控制信号(control,为0表示选择正常的功能数据)。
边界扫描链的长度为448,即它有448个扫描单元,它们都具有相同的扫描单元结构。其顺序反映了它们在版图中的实际相对位置,对于不同的布线方案,可以自由地调整其连接顺序。
3.0 基于内部扫描设计的向量生成
在龙芯2E的可测试性设计中基于内部扫描的测试方法又可以分为:固定型故障测试、时延型故障测试和IDDQ测试。下面针对这三种测试方法进行说明。
3.1 固定型故障测试
制造过程中的缺陷是集成电路设计制造中不可忽视的问题,依赖于测试过程来检测。固定型(Stuck-at)故障模型是自动测试向量产生系统(ATPG)中 的重要模型,也是在实际测试领域中应用得非常广泛和成功的故障模型。该模型假设电路中的缺陷在行为上表现为恒定的值0或1。测试产生程序尝试激活潜在的 stuck-at故障,并检测其效果是否能够传播到原始输出或者被捕获到扫描链上。单固定型故障是芯片测试的主要目标。由于对core采用接近全扫描设 计,因此对大部分电路可以使用组合电路的测试方式完成,即测试输入数据通过扫描链准备好后,只经过一个节拍就进行输出响应的捕获。但是,由于RAM的存 在,读写RAM的信号不可观测和控制,因此对于最靠近RAM的一级触发器到RAM之间的组合逻辑,称为RAM的阴影逻辑(shadow logic),无法通过组合电路的测试方式完成。解决这个问题一般有两种方式。一种方式是在RAM外部插入测试点来提高阴影逻辑的可控制性和可观测性,由 于这会影响访存RAM的性能,这种方案在该通用CPU芯片中不可取。另一种方式被采用,即对RAM建立等价功能模型,这将导致需要用测试时序电路的方式来 测试阴影逻辑(即使用fast-sequential)。使用TetraMAX生成测试向量的基本流程是:
1) 指定log文件。
2) 读入网表。
3) 读入库模型,包括:标准单元库,RAM的行为模型 和旁路模型。
对RAM进行行为建模之后,可以使用时序的测试产生算法,来针对RAM周围的shadow logic产生测试矢量;
对RAM建立旁路模型之后,即将输入直接连到输出,也可以提高对RAM周围的shadow logic中的故障的观测能力。
如果不对RAM建模,要把RAM设置为black-box。
4) 构建ATPG的设计模型。
指定ATPG的顶层模块名称,并展开该模块的层次逻辑,把预进行ATPG操作的模块转换成TetraMAX要求的内存映象格式。
对于特定的逻辑,例如PLL需要设置为black-box, 才能够通过这一步操作。
5) 读入STIL测试协议文件,实施test DRC。如果发 现违反设计规则,则进行相应修改。
DRC检查以下内容:
扫描链的输入输出在逻辑上是否是连接好的;
所有连接到扫描链上flip-flops的时钟以及异步set/ reset引脚是否是输入端口可控的;
当由功能模式转换到扫描移位模式的时候,clocks/ sets/resets是否无效;当转换回功能模式的时候, 这 些信号是否有效;
所有内部的多驱动nets上是否有竞争。
STIL测试协议文件提供了必需的测试信息,包括:时钟端口、扫描链、bistmode_,bisthold_和scanmode_端口,等等。
6) 为ATPG做预先的设置,包括:建立fault list、分 析总线竞争、设置ATPG相关选项。
7) 测试矢量自动产生。
可以选择不同的ATPG算法——Basic_scan, Fast_sequential, Full_sequential——在故障覆盖率和耗费的计算资源之间做出折中。
8) 压缩测试矢量。
9) 存储测试矢量和fault list。
10) 产生相应的报告。
产生测试向量的结果报告如下:
3.2时延故障测试
对时序电路来说,系统的工作通常可通过时钟信号同步。在指定的时钟周期中,所有组合逻辑单元必须到达稳定状态。stuck-at测试矢量在较高速度下应用 可检测某些延迟缺陷。然而,最近的研究成果表明生成专门的测试矢量检测延迟缺陷可能是必需的。为了正确工作,组合逻辑的延迟不应该超过时钟周期。 transition测试和path-delay测试就是来测试延迟故障的。
3.2.1 跳变时延故障
Transition故障模型跟stuck-at故障模型类似,只是它试图检测slow-to-rise和slow-to-fall节点,而不是 stuck-at-0和stuck-at-1节点。一个节点的slow-to-rise故障是指在实速工作状态,这个节点从0到1的转换过慢,导致系统产 生错误的结果。TetraMax支持三种ATPG模式来进行跳变延迟测试,分别是last_shift、system_clock和any。可以通过 set delay _launch_cycle 来选择其中的一种模式。
在any模式下,TetraMax先使用last_shift模式来检测故障,然后使用system_clock模式来测试那些last_shift模式 下测不到的故障。 last_shift 模式基于Basic_Scan ATPG,它在scan load和scan unload期间只使用一个capture过程,只产生Basic_Scan类型的向量。system_clock模式基于 Fast_Sequential ATPG,它总是产生Fast_Sequentia的向量。any模式可以产生这两种类型的向量。在龙芯2E的测试生成中,采用的是 system_clock模式。
3.2.2 通路时延故障
Path-delay故障模型用来测试电路中关键路径的时延,它通过测试实速(芯片正常工作的频率)状态下某条路径的时间延迟来检测这条路径是不是因为制 造等原因出现了故障。如果此条路径的时延超过了时钟周期,则认为此路径有延迟故障。path-delay故障测试主要针对有可能影响芯片区域性的与时延有 关的物理故障,例如不正确的氧化层厚度会引起信号传播时间变长,进一步会引起故障所在的路径的时延超过时钟周期。相比而言,stuck-at,IDDQ和 transition-delay故障一般针对单个点的故障。
Path-delay测试通过触发一个状态变化,然后在路径的后端进行捕获以验证时序。进行path-delay故障测试需要专门的静态时序分析工具提供关键路径的信息,例如Prime Time。Path-delay的测试流程如图 :
图 4 通路时延故障的测试流程
此外进行path-delay测试还需要一些timing exceptions 的信息,这些信息把一些false path除去,只对有必要测试的路径进行测试。例如那些”multi-cycle”的路径,通过IO的延迟大的路径等,所以在ATPG中要将其屏蔽。
Path-delay测试是在时序测试模式下进行的,它产生的向量都是时序向量。由于它是测试实速状态下路径的延迟,所以capture的时候需要一个快 速时钟,此时钟的周期应该与正常工作时的周期相同,而不应该与测试时钟的周期相同。所以在spf文件里面需要定义一些额外的WFT,来保证从launch 到capture的时间是一个实速周期。这些WFT是:_launch_WFT,_capture_WFT,_launch_capture_WFT。
另外path-delay的ATPG产生的向量,不仅要做不带时延的仿真,更重要的是做带时延的仿真,带时延的仿真需要提供时序反标文件(SDF)。
测试产生的实验结果:对1000条路径进行测试,共产生55个时序向量。能被检测到的路径数量为752条,覆盖率为75.2%。
3.3 IDDQ测试
IDDQ测试可以检测许多类型的电路故障,比如冗余逻辑的故障,扫描链控制和数据路径的故障,ATPG不可测的故障和一些桥接故障,这些故障用功能测试和 stuck_at故障模型很难测到,有时候根本不可能测到。IDDQ测试通过度量静态状态下的某个CMOS管的漏电流来测试电路的故障。正常状态下,电路 的静态电流很小,所以一个大电流就意味着故障的存在,CMOS电路的一个重要特征就是静态的时候几乎没有电流,”静态”是指所有的输入是稳定的,电路处于 非活动状态,内部寄存器不发生翻转,存储器的内容保持不变。IDDQ测试与传统的测试方法不同,它不是看设计的逻辑行为,而是通过检测测试电路在静态状态 下的电流来检查各个节点的正确性。甚至只有一个故障节点也会引起大的漏电流。为了把电路置为一个已知的状态,IDDQ测试要用ATPG提供的方法把数据扫 描进去,但是不用把数据扫描出来。IDDQ测试也可以测不可观测的节点的故障。
IDDQ测试只采样几次就可以获得比较高的故障覆盖率。第一次采样就能检测出一半的short_to_ground和short_to_VDD故障。随后 的测试向量使尽量多的节点的值发生变化来提高故障覆盖率。当电路被置为一个已知的状态后,在IDDQ测量电流之前要有一段时间使各个节点达到稳定,一般 的,只需对电流采样10到20次就可以达到期望的故障覆盖率。
测试向量使用Synopsys公司的TetraMAX测试产生工具产生出来,在每个产生的向量中,TetraMax生成静态采样点来避免所有的总线竞争和 浮动状态。生成的向量在每一个ATPG的测试周期都有一个IDDQ的采样点,也就是说,生成的向量只试用于IDDQ测试。
TetraMax 支持两种IDDQ故障模型:the pseudo-stuck-at model 和the toggle model。The pseudo-stuck-at model 考虑单个cell的功能性,它跟标准的stuck-at module很相似,只是在IDDQ测试中,每个cell的输出被认为是可观的。一个门输入的故障点需要激活并传播到门的输出,不需要传播到设计的输出。 the toggle model 不考虑门的功能性,是net-only 模型,所以每个故障点必须状态可控。the toggle model 的复杂性要低于the pseudo-stuck-at model,但是cell内部的故障它不一定能检测到。在对龙芯2E的测试中,使用的是the pseudo-stack-at model。
测试产生的实验结果如下:产生了10个测试向量,全部都是basic_scan的,其覆盖率达到80.10%。
4.0 总结和未来工作展望
在龙芯2E的可测试性设计中使用了多种方法保证了其流片的成功,在全部的设计流程中通过使用synopsys公司的相关工具(TeraMAX等)简化了工 作强度,提高了设计效率。随着设计工作频率的不断提高在进行时延测试时ATE已经提供不了高速的外部测试时钟信号,这就需要使用内部的测试时钟。同时,在 测试时的功耗也成为一个必须考虑的问题,在生成测试向量的同时考虑降低功耗成为发展趋势。我们期望在未来的工作中得到synopsys公司更加有力的支 持。



