DFT实训教程笔记3(bibili版本)-SOC Scan Implementtation & Scan Practice Session II

56 篇文章 307 订阅


本博文是博主记录DFT实训教程的笔记版本,此笔记并没有对所有的知识进行记录,仅仅以自身的认知水平,来记录了一些部分笔记并加上了自己的理解。

回顾作业

思考如下的问题:
在设计里面还有别的cell,当然主流仍然是MUX-D。
A、双端口扫描单元:为了把扫描时钟与正常时钟、扫描数据与正常触发器数据输入数据区分开,扫描触发器采用双(数据)双时钟触发器,有两个数据端口D和SI、两个时钟clk1和clk2,clk1和clk2时钟信号到来后SI端口的信号被捕获。
B、电平敏感扫描设计(Level-sensitive scan design, LSSD):采用双锁存设计,对瞬态特性,如上升沿、下降沿都不铭感,电路结构中包括两个相互链接的电平敏感锁存器、信号有效数据输入D、系统时钟CK、串行扫描输入SI和两个互不重复的时钟clk1和clk2、串行扫描输出SO。测试中L1(主)和L2(从)结构,正常function状态时只有L2起作用,作用如同触发器。

在这里插入图片描述
对于问题2:
如果当你进行capture时候,就可能会改变reg/Q上面的值,相当于PPI发生了变化,与PI共同作用,会导致PO的值改变。所以,此时PO上面的值不是PI+PPI的值,而是PI+caputure后PPI上的值的作用结果。一般而言我们是希望前面一种,如果采用后面一种方式,工具会多了一个新的计算,相当于用新的PPI+PI运算结果。
如下图所示,对于measure PO, 如果发生在capture之后,由于capture这个动作会冲掉reg上面的值,导致产生新的PPI。
在这里插入图片描述

scan.tcl的脚本

#configure library
set search_path "$search_path ./netlist ./lib"
set target_library {./lib/typical.db}
set link_library {* ./lib/typical.db}

#read and link the design
read_verilog -netlist ./netlist/top.v
current_design top link
link
#configure DFT
set_scan_configuration -chain_count 1
set_dft_signal -type Scanclock -port clk -view existing_dft -timing {45 55}
set_dft_signal -type ScanDataOut -view spec -port outa

#preview and inset DFT
create_test_protocol
dft_drc
preview_dft
inset_dft
dft_drc

#write out the information
report scan_path -view existing_dft -chain all
write -format verilog -hierachy -output netlist/top._scan.v
write_test_protocol -output generated/scan.spf
 

如何分析SPF文件

header是文件的基本信息
signals代表我这个芯片有哪些port。
signalGroup就是对信号的分类。
_si包含了信号test_in,作用是ScanIn
_so包含了信号outa,作用是ScanOut
_clk包含了信号clk。
我们知道IO有input output 和bid 所以这边spf文件里面还给出了以下的分类。
all_inputs
all_puts
所有的ports
_pi
_po
这些分组会简化下面的书写过程。
接着是Scan Structure的部分,描述了我现在scan这个这个structure的基本信息。
接下来就是timing的部分了,最关键的部分,比如我们之前谈到scan shift, force pi, measure po,shif out,以及shift out的比值的点在哪里,就包含在其中timing的信息中。
period就是测试时钟周期是100ns

在这里插入图片描述
在这里插入图片描述
下面再看一下Procedures的描述
在这里插入图片描述

做scan时候的Flow脚本

rundftc.tcl

dc_shell-t -f scan.cmd | tee -i my.log

scan.cmd

#settings
source -echo -verbose dc_setup.tcl
#design
source -echo -verbose designReadIn.tcl
#Constraints
source -echo -verbose designConstrainIn.tcl
#scan
source -echo -verbose InsertScan.tcl

#source -echo -verbose designRecompile.tcl

#outputs
source -echo -verbose designOutput.tcl

dc_setup.tcl如下
在这里插入图片描述
designReadIn.tcl如下
在这里插入图片描述
。。。。。
这里不一一展示,以后再workshop中再看官方的脚本,总结出自己的一套flow

PPI的是什么的简称。如下图。
在这里插入图片描述

让工具autofix rst问题

在这里插入图片描述

如何看preview_dft

在这里插入图片描述

set_scan_element false

因为timing关系,不希望增加mux,不希望串scan等原因

Scan reorder

在PR之前是按照字母顺序进行串chain。在做了PR之后,考虑到布局布线的资源,可能就会调换scan cell的位置。但如果跨了clock domain换的话,就会出现问题,所以需要告诉工具只能在一个clock domain内换。所以,在做scan flow的时候有command可以产生-scandef的文件。
scan reorder就是要解决优化链接关系,节省布线的资源。

在解决DFTviolation的时候可以,通过autofix来修改,然后反馈给DD,这样,能从中学习到解决violation的方法。

scan compression

ATE设备按照2-10美分/s来收费。
测试时间主要花费在了shift上面,如果我的chain的条数增加,shift时间就变短了。
采用如下图所示的broadcast结构。
在这里插入图片描述

  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值