1、《数字系统测试与可测性设计》 实验指导书(二) 实验教师: 2012年4月9日 I. 实验名称和目的 实验名称:ATPG应用 实验目的:了解Mentor公司的FastScan-(ATPG生成工具)业界最杰出的测试向量自动生成工具。了解测试各种基准电路的标准输入格式,运用FastScan工具生成测试向量。深入理解单固定故障模型相关概念。 II.实验前的预习及准备工作: 1、 充分理解课堂上学习的故障模型相关概念。 2、 Mentor公司的测试相关工具的介绍 缩略语清单: ATPG :Automatic Test Pattern Generation ATE :Au
2、tomated Test Equipment BIST :Built In Self Test CUT :Chip/Circuit Under Test DFT :Design For Testability DRC :Design Rule Checking PI :Primary Input PO :Primary Output 组合ATPG生成工具FastScan FastScan是业界最杰出的测试向量自动生成(ATPG)工具,为全扫描IC设计或规整的部分扫描设计生成高质量的测试向量。FastScan支持所有主要的故障类型,它不仅可以对常用的Stuck-at模型生
3、成测试向量,还可针对transition模型生成at-speed测试向量、针对IDDQ模型生成IDDQ测试向量。此外FastScan还可以利用生成的测试向量进行故障仿真和测试覆盖率计算。 另外,FastScan MacroTest模块支持小规模的嵌入模块或存储器的测试向量生成。针对关键时序路径,Fastscan CPA模块可以进行全面的分析。 主要特点: •支持对全扫描设计和规整的部分扫描设计自动生成高性能、高质量的测试向量; •提供高效的静态及动态测试向量压缩性能,保证生成的测试向量数量少,质量高; •支持多种故障模型:stuck-at、toggle、transition、crit
4、ical path和IDDQ; •支持多种扫描类型:多扫描时钟电路,门控时钟电路和部分规整的非扫描电路结构; •支持对包含BIST电路,RAM/ROM和透明Latch的电路结构生成ATPG; •支持多种测试向量类型:Basic,clock-sequential,RAM-Sequential,clock PO,Multi-load; •利用简易的Procedure文件,可以很方便地与其他测试综合工具集成; •通过进行超过140条基于仿真的测试设计规则检查,保证高质量的测试向量生成; •FastScan CPA选项支持at-speed测试用的路径延迟测试向量生成; •FastScan
5、 MacroTest选项支持小规模的嵌入模块或存储器的测试向量生成; •FastScanDiagnostics选项可以通过分析ATE机上失败的测试向量来帮助定位芯片上的故障; •ASICVector Interfaces选项可以针对不同的ASIC工艺与测试仪来生成测试向量; 最新的ATPG Accelerator技术可以支持多CPU 分布式运算; •智能的 ATPG专家技术简单易用,用户即使不懂ATPG,也能够由工具自动生成高质量的测试向量; •支持32位或64位的UNIX平台(Solaris,HP-PA)及LINUX操作平台; FastScan的ATPG流程 由上图可知,在
6、启动FastScan时,FastScan 首先读入、解释并检查门级网表和一个DFT库。如果遇到问题,FastScan会退出并发布一个消息。如果没有遇到问题,FastScan直接进入到配置(Setup)模式。在配置模式,可以使用交互方式或者使用Dofile批处理方式,来建立关于电路和扫描的基本信息,以及指定在设计展平(flattening)阶段时影响生成仿真模型的条件。完成所有配置后,退出配置模式就直接进入到DRC检查阶段,进行DRC检查。如果检查通过,那么直接进入到ATPG模式。进入ATPG模式后由上图可看出,有四个过程:生成错误列表,生成测试模式,压缩测试模式和储存测试向量。 FastSc
7、an的输入需要以下几个文件:带Scan chain 的电路网表,库描述文件和FastScan的三个控制文件(*.dofile,*.testproc,Timplate),下面分别进行详细解释。 1.电路网表(*.v) 已经带有扫描链的Verilog格式的网表。 2.库描述文件(fs_lib) 用于连接厂家提供的Mentor模型库。 3.timeplate文件 timeplate文件描述了ATPG向量中各时间点(输入跳变点,输出取样点,时钟沿位置,周期等) timescale 和测试过程文件(procedure file)文件名,可以根据需要加以修改。 FastScan是以事件为基础
8、的。其时序模型是基于以测试周期划分事件的,主要包含了下列一些事件: force_pi:对PI(Primary Input)输入值。 measure_po:测量PO(Primary Output)的输出值。 capture_clock_on:把捕获时钟打开。 capture_clock_off:把捕获时钟关闭。 ram_clock_on:把用于读写RAM的时钟打开。 ram_clock_off:把用于读写RAM的时钟关闭。 其基本格式如下: timeplate “timeplate_name”= timeplate_statement;... end; 以下是一个实例:
9、// Example Timeplare // 指定了以后所有的时间单位为纳秒(ns),刻度为1,这一步是必须的。 set time scale 1nS; // 指定采样(strobe)窗口的宽度为1,由于前面定义了时间刻度为1ns,所以strobe窗口实际宽度为1ns set strobe_window time 1; // 定义了名字为tp0的timeplate文件 timeplate "tp0" = // 定义了在0时刻对PI输入 force_pi 0; // 定义了在80时刻对PO采样 measure_po
10、 80; // 定义了在100时刻把捕获时钟打开 capture_clock_on 100; // 定义了在120时刻把捕获时钟关闭 capture_clock_off 120; // 定义了周期为200,即在200时刻所有动作结束,重新开始新一周期动作 period 200; end; // 指定后面要用到的测试过程文件名为design.testproc,scan group名为grp1 set procedure file "grp1" "design.testproc"; 4.
11、design.dofile .dofile文件主要是Mentor提供的一个批处理文件,可以自动控制FastScan的操作。 下列design.dofile中主要描述了Scan chain的组成管脚和group定义(见下例中 add scan chains 命令和add scan group命令)。时钟的定义及其值,由于FastScan认为所有改变时序元件的状态的信号都为时钟,包括了复位信号,置位信号和系统时钟信号等。reset信号表示为时钟,其值赋为无效电平。在测试状态下需要保持恒定逻辑值的管脚如TEST_ENABLE,测试覆盖率的设定。 //sample .dofile // 定义了
12、scan group add scan groups grp1 design.testproc // 定义了Scan chain的组成管脚 add scan chains chain1 grp1 SCAN_IN SCAN_OUT // 使RESET信号无效 add clocks 1 RESET // 使SCAN_CLOCK信号有效 add clocks 0 SCAN_CLOCK // 设置TEST_ENABLE为恒1 add pin constraints TEST_ENABLE C1 // 设置最大覆盖率 set atpg li -test_coverage 9
13、0
5. 测试过程文件(*.testproc)
测试过程文件定义了扫描电路的操作,主要包括时钟的定义和一些管脚的逻辑值设定, 可以手工生成,也可自动生成。
测试过程文件仅仅包含了扫描相关事件的时序信息,然而ATPG过程本身不需要测试过程文件来包含实际时序信息,自动测试设备(ATE)和某些仿真器需要这些信息。因此必须修改用于ATPG的测试过程文件来包含实际时序信息。 定义了扫描电路的操作。
测试过程文件有自己的规则如: 每一句必须占一单行,双斜杠//后面的内容都是注释,所有语句必须在procedure和end之间,可以有空白行等等。其基本格式如下:
procedure 14、re_type> 15、 the SCAN_ENABLE a value of 0
force SCAN_ENABLE 0 0;
// at time 0 force the TEST_ENABLE a value of 1
force TEST_ENABLE 1 0;
// 表明整个周期在400ns结束,即周期为400ns
period 400;
end;
Shift(required)
这个过程描述了如何通过翻转时钟,在输入端输入值以及采样输出端等方式来将数据顺着扫描链移动一个位置。其数据流向如下图:
ͼ1 移位过程
在这个过程中,必须 16、要包括force命令,force_sci命令(或者force_sci_equiv命令)和measure_sco命令。
在下面这个实例中,定义了一个典型扫描移位操作。由于我们前面定义了时间刻度为1ns,所以在测试过程文件中所有的时间都以1ns为刻度,即所有时间数字都倍乘1ns。
procedure shift =
// force scan chain input at time 20ns
force_sci 20;
// measure scan chain output at time 40ns
measure_sco 40;
// pu 17、lse the clock
force cp.0 1 100;
force cp.0 0 200;
// a unit of dead time for stability
period 400;
end;
针对上面实例的详细时序见下图:
ͼ1 移位过程时序
显然在这个过程包含了四个扫描事件:在20ns时刻输入,在40ns采样,时钟在100ns变为1,在200ns变为0,周期为400ns。图中引入X是为了表示测试过程文件执行的顺序性,X表示任何一个时刻。
Load_Unload(required)
这个过程描述了 18、如何装载和卸载扫描链。为了扫描链顺利装载,必须为移位寄存器保持在一个合适的状态,在这个状态时钟、复位和RAM的写信号等信号无效,而且如果扫描输出端是双向端口,则双向端口处在输出状态。然后可以使用apply shift语句来指定移位周期数,这个数目等于所有扫描链中的最大扫描元件数目。
在下面这个实例中,定义了一个典型的load_unload过程,其中假设所有扫描链中的最大扫描元件数目是N。
procedure load_unload =
// force clocks off at time 0
force SCAN_ENABLE 1 0;
force 19、 RESET 1 0;
// force scan clocks on at time 0
force SCAN_CLK 0 0;
// shift data thru each of N cells, N is the maximum scan cell number in all chains
apply shift N 200;
period 200;
end;
注意,为apply语句指定的时间仅仅是相对于load_unload过程的时刻。因此,为load_unload过程指定的周期200ns并不包含执行内嵌appl 20、y命令的时间。实际的周期是(200+400*N)ns,其详细时间关系见下图:
ͼ1 load_unload过程的时间顺序示意图
由于开始shift时刻是200ns,而period也是200ns,因此在shift过程结束的同时load_unload过程结束。
上面三个文件可分开成三个测试过程文件,也可合成一个扫描测试文件。其中在编辑时需注意各值的设定和单链上最大cell数的设定。
以上各文件除电路网表外均可以人工编辑生成,也可以运行一次DFTadvisor得到模版文件加以修改。有了以上各控制文件就可以用FastScan生成ATPG测试向量。
Design for Tes 21、t可测性设计技术
随着SoC/ASIC设计技术的迅猛发展,可测性设计(Design-For-Test)逐渐为SoC/ASIC设计流程不可缺少的必要环节, DFT的应用也逐渐变得深入, Mentor Graphics公司作为全球SoC/ASIC设计中DFT领域的领导者, 一直以来倡导高质量和低成本(High Quality & Low Cost)的DFT设计理念,并拥有业界最为优秀和完善的全线DFT设计工具, 多年来一直居于业界领导地位,引领着EDA行业DFT工具的技术发展方向。
测试综合工具DFTAdvisor
DFTAdvisor利用友好的图形用户界面引导完成可测性分析并优化测试结构的 22、插入,执行全面的测试规则检查,从而保证在ATPG之前不存在任何遗留的可测性设计问题。DFTAdvisor 测试综合工具自动插入测试结构电路,支持全扫描或部分扫描的测试逻辑,能够自动识别电路中的时序单元并自动转换成可扫描的单元,并能够把电路中可扫描的单元串接成扫描链,从而大大增强了IC和ASIC设计的可测试性。此外,利用它在设计过程的早期阶段进行可测性分析,测试综合生成和测试向量自动生成之前发现并修改违反测试设计规则的问题,尽可能提高ATPG的效率并缩短测试开发的周期。
III.实验项目
一、 熟悉FastScan的图形化界面(GUI)
二、 演示生成测试向量的过程(以pipe_net 23、noscan.v 文件为例)
扫描插入之前做的准备
进入以下路径
DFT/ATPG/atpg_data/lab2/exercise_1/
1、启动DFTAdvisor
shell> dftadvisor pipe_net_noscan.v –verilog -lib ../../libraries_1_to_4/adk.atpg
-log results/ex_1dfta.log –rep
.log –日志文件,存相关信息,可以打开查看
pipe_net_noscan.v---没插入扫描链的网表文件
2.自动分析时钟信号/控制信号
SETUP> analyze co 24、ntrol signals -auto_fix
3. 进入 DFT 模式.
SETUP> set system mode dft
此时报告了哪些信息?
此时可以看电路,在DFTAdvisor Control Panel 里点击 Open DFTVisualizer
4. 设置扫描识别.
DFT> setup scan identification full_scan
DFT> setup test_point identification -control 0 -observe 0
DFT> report cell models -type mux
默认的扫描类型是什 25、么? _______mux21_cacro_________________________
5.开始扫描.
DFT> run
DFT> report statistics
在本设计中有多少个连续的单元?____1________
识别了多少个扫描单元?______1___________
生成插入扫描的网表并生成ATPG配置文件
1.插入扫描链
DFT> insert test logic -scan on -test_point on -ram on -number 1
2.报告结果.
DFT> report statistics
连续的单元数量是多少? _____ 26、1________
插入的扫描链的数量? ___________1___________
新插入的pins的数量? ___________2__________
3.报告插入扫描单元和扫描链的结果.
DFT> report scan cells
4. 保存Verilog 网表和ATPG的配置文件.
DFT> write_design –output_file results/pipe_scan.v –replace
pipe_scan.v—已插入扫描链的网表文件
DFT> write_atpg_setup results/pipe_scan -replace 27、 -procfile
5. 退出DFTAdvisor.
DFT> exit
产生测试向量
Basic ATPG Flow
1. 启动fastscan.
shell> fastscan results/pipe_scan.v -verilog -lib ../../libraries_1_to_4/adk.atpg
-log results/ex_1tk.log -rep
此时可以看电路,在FastScan Control Panel 里点击 Open DFTVisualizer,点击windows下的brower,下面的pipe右键选择Add to Design,可以看 28、到插入扫描链后的电路图。
2. 导入dofile文件 pipe_scan.dofile.
SETUP> dofile results/pipe_scan.dofile
批处理包含了一个导入测试过程文件(test procedure file)的命令,是什么?
command: add_scan_groups grp1 results/pipe_scan.testproc
FAST所需的文件
² 编译库文件(library)
² 读入插入扫描链后的网表文件(pipe_scan.v)
² 读入测试过程文件(test procedure file)
² 读入批处理文件(pipe 29、scan.dofile)
3. 进入 ATPG 模式.
SETUP> set system mode atpg
4.加入故障、生成测试向量.
ATPG > set fault type stuck
ATPG > add faults -all
ATPG > create patterns
5.检查结果.
ATPG> report statistics
写出运行结果
#test_patterns _________5________
#simulated_patterns _________32________
CPU_time (s 30、ecs) _________0.3________
test_coverage _________100%________
fault_coverage _________94%________
atpg_effectiveness _________100%________
6.通过三种压缩方法压缩测试向量.
ATPG> compress patterns 3
写出三种压缩方法的结果
#patterns
simulated
test coverage
#faults
in list
31、faults detected
# eff. patterns
# test patterns
process CPUtime
Pass1
5
100%
0
33
5
5
0
Pass2
5
100%
0
33
5
5
0
Pass3
5
100%
0
33
5
5
0
7.保存测试向量.(并行)
ATPG> save patterns results/pat1_par.v -verilog -procfile -parallel -begin 0 -all_test -mode_internal –replace
32、
8. 保存测试向量.(串行).
ATPG> set pattern filtering -sample 5
ATPG> save patterns results/pat1_ser.v -verilog -procfile -serial -all_test -mode_internal
-replace
9.退出.
ATPG> exit
三.简单的组合电路
A
C
B
1、 用verilog语言(门级)描述电路(库DFT/ATPG/atpg_data/libraries_1_to_4/adk.atpg)
2、按照上面的演示用AT 33、PG生成测试向量,最后要求列出ATPG完成后生成的测试向量文件内容。
3、分别画出插入扫描链前后的电路图
插入扫描链前的电路图:在设置成dft模式前查看。图形化界面:open DFTvisulalizer
插入扫描链后的电路图:Dftadvisor完成后,把设计导入Fastscan,这时可以看插入扫描链的电路图。
四.测试一位加法器
加法器是数字电路中应用比较广泛的器件。一位全加器的电路图如下所示:
图2 一位加法器
该加法器的表达式为:
1、用verilog语言(门级)描述电路(库DFT/ATPG/atpg_data/libraries_1_to_4/a 34、dk.atpg)
2、按照上面的演示用ATPG生成测试向量(要求列出ATPG完成后的生成的测试向量文件内容)
3、分别画出插入扫描链前后的电路图
插入扫描链前的电路图:在设置成dft模式前查看。图形化界面:open DFTvisulalizer
插入扫描链后的电路图:Dftadvisor完成后,把设计导入Fastscan,这时可以看插入扫描链的电路图。
IV实验步骤
1、用fastscan对组合电路进行ATPG。
2、对一位全加器,寻找测试向量。
V评分标准
项目
分值的比例
检查时间
实验预习
15%
实验开始前
演示实验
补充过程
15%
实验过程中
组合电路
代码书写
10%
实验过程中
测试向量生成
10%
1位加法器
代码书写
10%
测试向量生成
10%
完成实验报告
30%
实验结束后






