stil文件语法

ads


DFT Complier的WorkShop是为期三天的培训课程,这里尽量也这样安排,
本系列①②③是对Synopsys DFT Compiler Scan的Student Books的学习笔记;本篇是①DAY1的中篇,主要介绍Scan Flow/Setup/TestProtocol
DAY1的主要内容如下:
完成这个系列后,我们要掌握下面三点:

1.能区分Ad-hoc 和Structured DFT 技术的区别;能说出DFTC支持的不同Scan Insertion Flows

2.对DFT Compiler Setup 配置文件有较深的理解;

3.熟悉TestProtocol的内容格式语法,熟悉常用的Scan Configuration 命令

#什么是AD-Hoc DFT?
     由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

#Scan Insertion Flow如下
①Read_Design

一般通过 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
    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 等等

  ②定义Scan_in 和Scan_out Pin
  ③定义不同TestMode下的SI/SO,不同Chain对应SI/SO
 
  ④set_scan_path 
      定义具体某一条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 文件内容如下

#Header
里面一般包含工具版本,时间信息,Design Name
#Signals

包含所有的PAD的list

#SignalGroups
对的Signal 进行分组“_si “_so”“_clk” “_pi”“_po”方便后续ATPG
定义波形和给激励。同一个信号可以在多个SignalGroup里面出现。
#ScanStructures
定义ScanChai结构,描述Length&SI&SO/SE/CLK等等信息
#Timing
义信号组各种状态的时序,对不同WaveformTable进行描述
如时钟周期,输入0,1,Z,N。输出H,L,T,X。
其中0,表示输入0;1,表示输入1;Z,表示输入关闭,N,表示输入未知。
H,表示输出为高;L,表示输出为低;T,表示输出关闭;X,表示输出无操作
P表示脉冲,D表示强制为低,U表示强制为高

#ClockStructures 

这里包含的Test_mode 名字:basic_scan ClockStructure包含了所有OCC的里面的CaptureReg的配置。

#Procedures 
里面定义所有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”

F:表示Force Signal

V:表示一个Cycle,例如,"rst"=1,"clk"=P

C:表示一个条件的判断Conditional,r表示Repeat

通常SOC项目的PAD资源都是紧张的,不太可能单独给一些PAD做测试用,所以对TestMode 的配置都是通过内部TDRTest 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 


最后编辑于:2024/1/9 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com