DFT Complier的WorkShop是为期三天的培训课程,这里尽量也这样安排,
本系列①②③是对Synopsys DFT Compiler Scan的Student Books的学习笔记;本篇是①DAY1的中篇,主要介绍Scan Flow/Setup/TestProtocol
1.能区分Ad-hoc 和Structured DFT 技术的区别;能说出DFTC支持的不同Scan Insertion Flows
2.对DFT Compiler Setup 配置文件有较深的理解;
3.熟悉TestProtocol的内容格式语法,熟悉常用的Scan Configuration 命令
由Designer 自行决定增加Control Points 和Observe Points以及相应的logic,使Design变的Testable
#Stuctured-DFT
高自动化,可由Tool自动完成,Design会被一系列DRC rules Check;可以通过更改和添加logic来修复Violation
#DFT Compiler Flows 有以下几种:
TOP-Down:Scan Insertion 在Top-level进行;
Bottom-UP:Scan Insertion 在Block-level进行,然后Top-level再组合;
Unmapped Flow& Mapped Flow:Scan Insertion直接从RTL开始;Mapped是在RTL综合完成的Mapped网表基础上进行Scan Insertion;
Extraction:处理Design里面已经包含Scan Chain的情况;
Unmapped和Mapped Flow这两个又叫 RTL FLOW 和 Netlist Flow
一般通过 Read_ddc 读入Mapped.ddc或者通过 read_verilog 读入Netlist(Mapped Design)一般推荐吃 Netlist 这样比较干净,不像ddc包含很多UPF/SDC的信息。Scan Insertion一定是基于Netlist因为要进行Scan Cell Replacement所以必须是Mapped 到具体Fab 工艺Cell的网表。不能使用GTECH Netlist做Scan Insertion
②Specification Scan Architecture
细心的童鞋可能发现,②这一步跟上图的FLow顺序不一样;是的,但是个人理解,这一步应该在③④之前;因为Control TDR正确配置之后,才能保证DRC不出错,常见的FLow也是这样;通过各种命令来控制的Scan Architecture;常用的有set_dft_signal&set_scan_configuration &set_test_assume
后面详细介绍。
③Create_test_protocol
Test protocol 描述Design在Test Mode下如何工作?Protocol里面涉及到的信号要通过Set_dft_signal 命令来定义。Protocol是通过reate_test_protocol 来生成的。
④DFT DRC
dft_drc 命令在进行Scan Insertion 之前进行DRC Check发现的DRC Violation 可以通过GUI debug也可以,让工具AutoFix
⑤Preview_dft
提前review 配置后的Scan architecture,如果发现Scan Chain和结构不符合预期,可以再更改命令,然后快速迭代Scan Architecture
⑥Insert_dft
将Scan_architecture 插入到Design里面,是具体的执行过程。
⑦DFT_DRC&Coverage
在完成Scan Chain 的Insertion 之后,可以再次run dft_drc,trace Scan Chain是否有问题,同时可以dft_drc可以得到预估的ATPG的Coverage基于现在Scan_Inserted Design
那如何Setup DFT Compiler工具?
Read design和Specification target/link Lib跟DC综合setup过程相同。
#下面我们看最终Boss:“Test Protocol”,这部分是理解后续DRC和ATPG关键
1.理解Test Protocol 里面包含的Element
2.在Test Protocol里声明Constant &Clock&Resets&Scan ins&Scan outs& ScanEnable
3.Test Protocol也包含了对Tester的Timing and EventOrder的Setting
Test-Protocol解释如何在TestMOde下控制Design,也即是对Design进行配置(Clocking&Scan-Shifting &Disabling Asynchronous Reseting)
Test-Protocol必须在dft_drc&Insert_dft Preview_dft 之前配置,不然Design不能进入DFT Mode导致DRC Fail; TestProtocol的文件格式一般是STIL(Standard Testing Interface Language)
#Steps for Creating a Test Protocol
①Define Scan signals、Clocks、resets、constants等等Test Protocol需要的Signal; set_dft_configuration
该命令还使能 Scan,同时设置Mode 编码方式二进制
Set_dft_signal
这里特别注意DFT Compiler 使用VIEW,来控制dft_drc/insert_dft如何处理这些信号。
-
-View spec: 用来声明在Insert_dft过程中使用的信号,
简单理解:-view spec Only会被用来 insert_dft
-
-View existing_dft:用来声明为了Pass dft_drc 必须被理解的DFT Signals;
简单理解:-view existing_dft Only会用来dft_drc
这就是为什么有些信号需要使用 spec/existing_dft 两种view,定义两次;不然会出问题。这个点(之前我一直不理解)
DFT 的signal类型:TestMode&Constant&ScanEnable&ScanClock&Reset等等,在TestProtocol需要定义这些Signal,如下:
set_scan_configuration -exclude [get_cells xxx] 来定义某些test_mode下需要exclude 的某些Hierarchy Cell -test_mode all
set_test_assume 该命令来给ptest_ctrl_mode的TDR值配置Initial值
set_streaming_compression_configuration -base_mode basic_scan xxx 来定义 basic_scan mode下的Streaming_compression配置比如 Chain_count& inputs 和output & shift_power_clock 等等
③定义不同TestMode下的SI/SO,不同Chain对应SI/SO
定义具体某一条Scan_chain上的Scan Register,如下:
⑤Set_scan_element true/false
用来设置那些Cell不上Chain和上Chain
Protocol 里面也需要定义Tester Timing和事件顺序
使用set_dft_config来define timing 和waveform(Clock or Reset信号)
Test Protocol的影响测试机台的Timing 变量有:
Items Defaults
test_default_period 100ns(10Mhz)
test_default_delay 0
Test_default_bidir_delay 0
Test_default_strobe 40
使用这些Default值可以设置 Test Protocol 里面的ScanCLock,用在Pre-clock Measure Timing
set_dft_signal -view exist -type ScanClock -port clk_RTZero -timing [list 45 55]
先上升后下降的Clock 波形,(第一个时间点一定是上升沿)
set_dft_signal -view exist -type ScanClock -port clk_RTOne -timing [list 55 45]
先上升后下降的Clock 波形,前面55是上升沿,45是下降沿波形如上图
#STIL格式的TestProtocol 文件内容如下
里面一般包含工具版本,时间信息,Design Name
包含所有的PAD的list
对的Signal 进行分组“_si “_so”“_clk” “_pi”“_po”方便后续ATPG
定义波形和给激励。同一个信号可以在多个SignalGroup里面出现。
定义ScanChai结构,描述Length&SI&SO/SE/CLK等等信息
定义信号组各种状态的时序,对不同WaveformTable进行描述
如时钟周期,输入0,1,Z,N。输出H,L,T,X。
其中0,表示输入0;1,表示输入1;Z,表示输入关闭,N,表示输入未知。
H,表示输出为高;L,表示输出为低;T,表示输出关闭;X,表示输出无操作
#ClockStructures
这里包含的Test_mode 名字:basic_scan ClockStructure包含了所有OCC的里面的CaptureReg的配置。
里面定义所有ClockCapture程序,这里有各种Capture的操作时序,也包含load_unload(就是Shift过程)
下图是Capture_clk 波形图,这个操作使用默认_default_WFT_定义的X信号组的状态时序,这里包含一个Cycle;第一个周期的操作,#表示输入,r表示重复,j表示连接。所以表示信号组_pi输入61个数据,信号组_po的每个信号再重复检测90次,得到90个数据;产生CLK Pulse脉冲。
#宏定义MarcoDefs
Test_setup测试矢量序列,这里W就是WaveformTable的意思,这里使用默认的“_default_WFT”
V:表示一个Cycle,例如,"rst"=1,"clk"=P
C:表示一个条件的判断Conditional,r表示Repeat
通常SOC项目的PAD资源都是紧张的,不太可能单独给一些PAD做测试用,所以对TestMode 的配置都是通过内部TDR(Test Design Register)来实现,这些Register只在DFT mode下被配置为静态信号1/0;为了初始化TestMode
我们需要更改SPF 的TestProtocol文件进行setup,也即是更改MarcoDefs里面“Test_setup”
到这里基本介绍完了DFTC 的Flow 和Setup;也重点介绍TestProtocol如何配置,更改和使用;配置好了之后,通过Create_test_protocol就可以进行dft_drc啦,那下一篇我们就来,盘一盘DFT_DRC
为方便有兴趣的同学继续学习,这里附上 DFT Compiler StudentBook相关百度网盘链接: https://pan.baidu.com/s/1g0aX4W-OLT3lQiT3AGufwQ 提取码: wv4t
发表评论