文章目录
理论部分已经奠定了基础,我想记录实践部分,希望能在实践中,不断深化对ug的理解,对整个DFT的理解。
本次实验的目标是实现TOP Down Flow、熟悉DFT的基本脚本
实验目录环境:
此时,我们DFT的工作人员已经得到了ddc文件,所以在scripts文件夹里面我们不用关心1compile。
实验步骤
启动dc
dc_shell &
执行脚本2read_design
source 2read_design
脚本如下:
set hdlin_enable_rtldrc_info true;# enable rtl code checking in DV
set test_simulation_library "./tmax/rams.v"
# Read the mapped ORCA design
read_ddc mapped/ORCA.ddc
current_design ORCA
link
执行脚本3create_test_protocol
source 3create_test_protocol
# Read the design from the unmapped flow
#read_ddc mapped/ORCA.ddc
#set current_design ORCA
#link
set test_simulation_library ../ref/tmax/libs.v
remove_test_protocol
# Setup timing
set test_default_delay 0
set test_default_bidir_delay 0
set test_default_strobe 40
# Declare signals for the protocol
set_dft_signal -view existing_dft -type ScanClock -timing {45 55} -port {pclk sdr_clk sys_clk}
set_dft_signal -view existing_dft -port prst_n -type Reset -active_state 0
set_dft_signal -view existing_dft -port scan_en -type ScanEnable -active_state 1
#set_dft_signal -view existing_dft -type Constant -active_state 1 -port test_mode
set_dft_signal -view existing_dft -type Constant -active_state 0 -port conf_ena
##
read_test_protocol -section test_setup ./scripts/test_setup.spf -verbose
write_test_protocol -output output.spf
# From the above specifications, create the test protocal
create_test_protocol
dft_drc
如果我们现在没有read spf文件,然后就创建协议运行的话,会出现如下的pre-DFT violation
注意:上面的脚本不是一次写进去,如果是unmapped的ddc,应该不会有spf文件,所以流程应该是声明信号、然后创建协议,然后吐出spf文件。
那现在跑pre dft的话,会出现如下的错误:
D1是时钟相关的,D3是复位相关的。这两个是最常见的错误。
打开第一个D1的violation,发现mux的选择端口由三个配置寄存器控制,而这三个寄存器的值现在是不知道的。可以通过internal pin来赋值。另外,还可以看到时钟此时为X态,因为工具选为pin data为clock off状态。关于pindata的具体细节,后续会专门写一篇文章。这里就不再浪费时间赘述。
但是我们可以看到其实是下图中的mux的选择端口出了问题。
虽然采用internal pin设置为constant的值来产生pattern,但是在真正测试的时候,这三个寄存器的值是需要真正的赋值上去的,也就是说你需要pattern让这三个寄存器在ATE测试的时候有该有的值。