| ||
1. Mentor的MBISTArchitect Process Guide: Mentor_MbistArchitect_Process_Guide.pdf(3.05 MB)2. MBIST的插入阶段:用工具插入Mbist时,我们既可以在RTL代码插入,也可以在netlist里面插入。目前,常见的做法是在netlist插入。但是,由于插入的Mbist逻辑是RTL代码,这样如果在netlist里面插入的话,我们还需要再进行一次综合。如果在RTL代码中直接插入Mbist,则只需要综合一次。为什么现在都推荐在netlist里面插入Mbist,而不是在RTL插入呢?回答1:综合通常是针对unit来做的,而布局布线通常针对partion,而mbist逻辑会涉及到很多个unit,如果把mbist逻辑划分到每个unit里面去,会使得mbist逻辑变得有些杂乱,如果一个unit里面的mbist出错了,将来拼起来就不容易找出来,所以现在把mbist作为一个独立的unit来综合,得到了netlist以后,然后插回到正常逻辑的netlist里面去,这样一方面mbist逻辑本身的完整性和控制性更好,另一方面,function逻辑的设计者并不需要知道mbist怎么实现的,减少了function逻辑设计者的设计effort。但是,把mbist逻辑独立来处理也有不好的地方,因为把mbist与function逻辑分开综合并不是最接近实际芯片设计情况的,因为mbist和function逻辑本身就是互相渗透的,如果完全独立开来并不能很好的符合实际情况。综合来说,分开综合,然后将mbist插入到netlist里面实践起来比较简单!但是如果可以使得一起综合的方式更便于管理和控制,显然也是一种不错的做法。回答2:At rtl coding and synthesis stage, normally the focus is on the timing/area/power optimization, designer do not want to be involed too much in the DFT task, such as scan chAIn insertion and BIST test, therefore most people would like to insert the bist logic in the netlist instead of RTL. Actually the recommended way is to compile the bist block into gate level block first and then insert them into the design.注解1:mbist可以在rtl中添加,就是把一些规则数据写入memory,然后再读出来,如果一样就是通过了。不需要DC做什么。3. MBIST技术详细说明(转载)
随着半导体工艺尺寸不断缩小,IC设计的规模越来越大,高度复杂的IC产品正面临着高可靠性、高质量、低成本以及更短的产品上市周期等日益严峻的挑战。一方面随着半导体工艺尺寸的缩小,嵌入式存储器可能存在的缺陷类型越来越多;另一方面,随着IC产品的复杂度的提高,ROM、RAM、EEPROM在IC产品中的比重越来越大。
嵌入式存储器的可测试设计技术包括直接测试、用嵌入式cpu进行测试和内建自测试技术(MBIST)。直接测试方法利用自动测试设备进行测试,可以轻易实现多种高质量测试算法,但是这种方法存在着一些不足之处,一是在ATE机上实现的算法越复杂,对ATE机存储器的容量要求越高,测试的费用也就越高;二是在ATE机上不易实现对嵌入式存储器的“全速”测试,测试时钟的工作频率越高,测试成本越高;三是由于芯片外围管脚的限制,对芯片内大容量嵌入式存储器进行直接测试往往不大现实。利用嵌入式cpu进行测试的好处在于不需要对设计硬件做任何修改,而且测试算法的修改与实现可以通过灵活修改CPU软件程序完成。但是这种方法也存在缺点,首先是设计中的CPU并没有和所有的嵌入式存储器直接相连,其次编写或修改软件程序实现测试算法需要耗费大量的人力,另外这种方法还很难对存储CPU程序的存储器进行测试。
MBIST技术的缺点是增加了芯片的面积并有可能影响芯片的时序特性,然而,随着存储器容量的增加,这种方法所增加的芯片面积所占的比例相对很小,而且这种测试技术还有很多其它技术优势。首先它可以实现可测性设计的自动化,自动实现通用存储器测试算法,达到高测试质量、低测试成本的目的;其次MBIST电路可以利用系统时钟进行“全速”测试,从而覆盖更多生成缺陷,减少测试时间;最后它可以针对每一个存储单元提供自诊断和自修复功能。此外MBIST的初始化测试向量可以在很低成本的测试设备上进行。所以,从高测试质量、低测试成本的角度考虑,MBIST是目前嵌入式存储器测试设计的主流技术。
MBIST概述
BIST是一种结构性DFT技术,它将器件的测试结构置于该器件内部。BIST结构可以测试多种类型的电路,包括随机逻辑器件和规整的电路结构如数据通道、存储器等。BIST电路视其应用对象不同其实现存在显著差异,但任何类型的BIST都有共同的用途。BIST结构可以针对目标电路自动生成各种测试向量,并对输出响应进行比较。目标电路的类型也呈现多样化特征,它可以是整个芯片设计,也可以是设计模块或设计模块中的某个结构。此外,测试向量生成以及输出比较电路也可能存在差异。
下面我们主要探讨MBIST。大型、复杂电路通常包含多处难以测试的逻辑部分,即使就可测试性最好的大型设计而言,也同样需要耗费大量测试生成时间、占用大量的ATE存储器和ATE测试时间,所有这些都是非常昂贵,但对于采用ATPG方法进行测试而言又是必需的。另外,由于存储器缺陷类型不同于一般逻辑的缺陷类型,存储器在较大规模设计之中层次较深,ATPG通常不能提供完备的存储器测试解决方案,而MBIST技术则可以解决这些问题。BIST能够在不牺牲检测质量的前提下提供一种存储器测试解决方案,在很多情况下,BIST结构可以彻底消除或最大限度减少对外部测试向量生成(以及ATE机存储器容量)和测试应用时间的需要。设计人员可以在某设计内部执行MBIST电路,并由于MBIST电路邻近被测试的存储器而轻易实现全速测试,设计人员也可以从该设计的较高层次运行MBIST流程。
MBIST电路以某项设计中的RAM和ROM模型为目标。前面已经提到,由于存储器缺陷类型不同于一般逻辑的缺陷类型,所以检测RAM和ROM不同于检测随机逻辑,MBIST针对检测RAM和ROM共有的缺陷类型采用了有效的电路和算法。MBIST电路还可以基于各种算法生成多种测试向量,每种测试向量都着重测试一种特定的电路类型或错误类型。比较电路具有多种独特的实现方式,其中包括比较器和标签分析器。存储器电路模型一般由三个基本模块组成,分别是地址译码器、读/写控制逻辑以及存储单元阵列(图1)。
图 1
MBIST架构
MBIST通常采用一种或多种算法为测试存储器一种或多种缺陷类型而特别设计,MBIST电路包括测试向量产生电路、BIST控制电路、响应分析器三部分(图2)。
图 2
测试向量产生电路可生成多种测试向量,不同的测试算法实现的电路所产生的测试向量内容也不同;BIST控制电路通常由状态机实现,控制BIST对存储器的读写操作,响应分析器既可以用比较器实现,也可以用压缩器多输入移位寄存器(MISR)电路实现,它对照已知正常的存储器响应,比较实际存储器模型响应并检测器件错误。
采用比较器实现的MBIST电路如图3所示,该电路提供两个标志输出信号tst_done和fail_h通知系统测试进程的状态和结果。tst_done在测试结束时被置为有效状态,在测试过程中发现任何错误,fail_h信号即置为有效并保持到测试结束。采用压缩器实现的MBIST电路如图4所示,该电路提供了基于MISR的比较技术,测试结束后可以输出压缩后的标签寄存器结果。
图 3 比较器实现的MBIST电路
图 4 压缩器实现的MBIST电路
通常情况下,MBIST电路不仅可以筛选出失效的器件,还能够自动分析失效的原因,此时测试数据同时被用来分析定位存储器失效的具体地址空间。
此外,特殊的MBIST电路还可以提供自诊断和自修复功能。在MBIST电路中引入内建自分析模块,BIST模块根据失效的数据和地址等信息输出相应的控制信号R2R1R0,把系统对存储器失效地址空间的读写操作指向用于自修复冗余设计。
MBIST电路通常还包括BIST Collar模块,BIST Collar模块的内容包括流水处理电路、扫描旁路电路、多路复用器电路和MISR电路等,其中扫描旁路电路最为常用(图5)。
图 5 带扫描旁路电路的MBIST
MBIST实现与EDA工具
MBIST工具允许设计人员将更多时间花在设计工作中,而不是在有关测试的问题上忧心忡忡。工具已经内建了开发存储器测试和管理BIST电路所必需的知识,其生成的故障诊断电路允许设计人员对故障数据进行识别和分析。它可以产生相应的testbench,方便对MBIST外围电路逻辑开展验证,还可产生相应的自动化脚本文件以有助于逻辑综合的自动化运行。此外对任何EDA工具来说,要想有效工作就必须能够适应设计者现有的设计流程,遵循各种行业标准。
MBISTArchitect是Mentor公司提供的MBIST自动化EDA工具。它可以针对一个或多个嵌入式存储器开发嵌入式测试电路,自动实现存储器单元或阵列的RTL级内建自测试电路。它支持多种测试算法,可对一个或多个内嵌存储器自动创建BIST逻辑,并完成BIST逻辑与存储器的连接,另外还能在多个存储器之间共享BIST控制器,实现并行测试,从而缩短测试时间并节约芯片面积。MBIST结构中还可以包括故障的自动诊断功能,方便了故障定位和开发针对性的测试向量。
4. 基于mbistarchitect的Top-Down mbist生成(转载):版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bb2hh.blogbus.com/logs/74731326.html 例子代码为http://bb2hh.blogbus.com/logs/71430827.htmlmbistarchitect的top-down的步骤很简单:加载库->setup(设置一些参数clocks,pin sharing,new port)->进入bist模式->添加生成好的bist或者新的bist->插入bist->保存设计->将bist的pattern转换成top的pattern->集成pattern->保存测试.例子文件如下:http://filer.blogbus.com/4218525/resource_4218525_1284174580k.zip resource_4218525_1284174580k.zip(271 KB) 进入work目录运行scripts的mbist_run即可,sim_run为仿真.由于mbistarchitect不能读入vhdl代码所以混合的和vhdl的需要综合成网表.结合mentor的mbist_ref.pdf,mbist_pg.pdf可以很全面的了解和使用mbistarchitect.步骤说明:1.top-down flow 2.bist insert
5. Mbistarchitecture产生各种类型的memory bist(转自EETOP) Mbistarchitecture产生各种类型的memory bist
1. ROM bist
ROM由于只能读,所以不能任意的输入特定的测试向量,但是通过读出ROM内容,逐个地址比较的方法对于大容量的ROM非常的浪费时间,于是有人提供了一种算法,即读出一个地址,该地址的内容做校验(CRC?),校验值参与下一个地址的校验,扫描所有的地址之后得到一个最终的校验值,将这个值通过scan port shift出来进行比较。也可以内部比较这个值,输出fail/pass结果。请看这个例子。
model DROM (Q, CLK, CEN, A)(
bist_definition (
address A(array=11:0;);
data_out Q(array=63:0;);
clock CLK high;
output_enable CEN low; tech = smic18;
vendor = arm;
version = "1.0";
message = "synchronous 4096X64 ROM"; address_size = 12;
min_address = 0;
max_address = 4095;
data_size = 64; read_port (
read_cycle (
change A;
assert CEN;
wait;
wait;
expect Q move;
)
)
)
)以上是以mentor语法描述的ROM,我们产生其bist生成脚本
// rom_bist.do=================================================
reset state
load lib ../bist_model/DROM.vmadd memory model DROM
add memory model DROM_B3
add memory model IROM_B1
add memory model IROM_B1_MR
add memory model IROM_B2
add memory model IROM_B3
setup mbist algorithms Rom2
set design name controller -module SPROM_4096X64_bist
set file naming -bist_model ../result/SPROM_4096X64_bist.v
set file naming -connected_model ../result/SPROM_4096X64_bist_con.v
set file naming -testbench ../result/SPROM_4096X64_bist_tb.v
set file naming -script. ../result/SPROM_4096X64_bist.v_dcscript
set file naming -ctdl ../result/SPROM_4096X64_bist.v_ctdf
set file naming -wgl ../result/SPROM_4096X64_bist.v_wgl
run
save bist -verilog -script. -replace
exit –discard=================================================
// run_bist
mbistarchitect \-bistgen \-dofile ./rom_bist.do \-logfile ./rom_bist.log \-replace \-nogui 运行run_bist即可得到ROM bist的rtl文件。2. SRAM bist
SRAM是一种单口的静态RAM,可以读写,所以我们可以控制往RAM中写入的内容,然后读出来比较。这类bist算法很多,常用March2算法,可以检查address decoder faults (AF), stuck at faults(SAF), transition faults (TF), stuck open faults (SOF), inversion coupling faults (CFin), and linkedidempotent coupling faults (CFid)这些问题。
下面给出一个model的例子,运行脚本和ROM类似。
model SPRAM_512X32 (Q,CLK,CEN,WEN,A,D,OEN)(
bist_definition (
address A(array=8:0;);
data_in D(array=31:0;);
data_out Q(array=31:0;);
clock CLK high;
chip_enable CEN low;
write_enable WEN low;
dont_touch OEN high; tech = smic18;
vendor = arm;
version = "1.0";
message = "synchronous 512X32 RAM"; address_size = 9;
min_address = 0;
max_address = 511;
data_size = 32; read_write_port (
write_cycle (
change A;
change D;
assert CEN;
assert WEN;
wait;
) read_cycle (
change A;
assert CEN;
wait;
wait;
expect Q move;
)
)
)
)3. DRAM
DRAM是双口的RAM,一般有两种类型,第一种是两套接口都可以完成读写操作,第二种是一套口专门读,另一套口专门写,所用的bist算法与SRAM相同。下面给出一个例子。
model DPRF_128X32 (QA,AA,CLKA,CENA,AB,DB,CLKB,CENB)(
bist_definition (
address AA(array=6:0;);
address AB(array=6:0;);
data_in DB(array=31:0;);
data_out QA(array=31:0;);
clock CLKA high;
clock CLKB high;
read_enable CENA low;
write_enable CENB low; tech = smic18;
vendor = ARM;
version = "1.0";
message = "synchronous 128X32 dual port RAM"; address_size = 7;
min_address = 0;
max_address = 127;
data_size = 32; write_port (
write_cycle (
change AB;
change DB;
assert CENB;
wait;
)
)
read_port (
read_cycle (
change AA;
assert CENA;
wait;
wait;
expect QA move;
)
)
)
)
总结:Mentor的工具在产生bist的时候比较强大,美中不足的是需要我们用它自己的语法来描述memory对象,不过好在其语法比较简单。所以model能不能写的符合要求,能不能与vendor提供的model一直十分的重要,也是要特别注意的地方。 6.文件: Mentor_MbistArchitect_Process_Guide.pdf文件: resource_4218525_1284174580k.zip