DFTug - Getting Started(上篇)

本文详细介绍了数字设计流程中的DFT(Design for Testability)配置,包括设置设计环境、读入设计、设定扫描风格、配置测试周期时间、定义DFT信号、插入DFT逻辑及后优化分析等步骤,并提供了相关命令示例。通过DFT_DRC检查和报告,确保设计的可测试性。此外,还强调了预览DFT和生成测试协议的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

本篇将从DFTug的第六章Getting Started进行介绍从而熟悉DFT的基本流程。本篇博客是对DFTug的一个总结概括,所以总结出来的命令是希望背下来的。

Setting Up Your Design Environment

首先,下面的几个SNPS的系统参数变量需要你在环境中定义。
link_library: 用于resolve 你的cell。
target_library:一般来说与link_library是相同的,除非你想translatng a design between technologies。
symbol_library: cell的图形
search_path:搜索的路径列表

hdlin_enable_rtldrc_info: Reports file names and line numbers associated with each violation during test design ruled checking. This makes it easier fr you to later edit the source code and fix violations.

For example:

# configuration logic libraries
set_app_var target_library {my_library.db}
set_app_var link_library {* my_library.db}
set_app_var hdlin_enable_rtldrc_info true

上面例子中,其实应该不熟悉的只有hdlin_enable_rtldrc_info了,查看syn3手册,解释如下:
在这里插入图片描述
官方的意思,我个人理解的应该是:开启了这个后,当我们使用dft_drc的时候,如果有violation,会定位到HDL code的行号,该选项默认是关闭的,所以官方的建议是打开。

Read In Your Design

接下来就是读入你的设计,
读取设计有三个命令:read_ddc, read_verilog, read_vhdl(verilog是我在项目中见过最多的)
dc_shell> read_verilog {my_design.v my_block.v}
dc_shell> current_design my_design
dc_shell> link
dc_shell> read_sdc top_constraints.sdc

Setting Scan Style

SNPS提供了下面四种style,其中第一种mux FF是最常用的一种,后面三种,待有机会,我会再来理解。
如下cmd是默认mux style。

dc_shell > set_scan_configuration -style multiplexed_flip_flop

在这里插入图片描述

Configuring te Test Cycle Timing

设置下面的测试时间变量需要询问半导体厂商,默认为下面的设置值:

dc_shell> set_app_var test_default_delay 0
dc_shell> set_app_var test_default_bidir_delay 0
dc_shell> set_app_var test_default_strobe 40
dc_shell> set_app_var test_default_period 100

Define the DFT Signals

设置DFT signals 的view有两种,一种是-view existing_dft .。另外一种是,-view spec。二者的区别,初学者可能并不能真正理解,existing_dft是不会在dft_insert阶段做make connection的动作(比如时钟信号、复位信号),而-view spec是会做make connection的动作(比如 scan_enbale信号),这是二者的本质区别。

dc_shell> set_dft_signal -view existing_dft -type ScanClock
dc_shell> set_dft_signal -view existing_dft -type Reset -active_state 0

dc_shell> set_dft_signal -view spec -type ScanEnable -port scan_enbale_port -active_state 1

即使,你是用已经存在的ports作为Scan_in和Scan_out仍然要使用-view spec的认知,因为在chain上内部是还没有连接的。这里我把-view翻译为“认知”。

dc_shell> set_dft_sgnal -view spec -type ScanDataIn -port DAT_IN[7]
dc_shell> set_dft_signal -view spec -type ScanDataOut -port DAT_OUT[7]
dc_shell> set_dft_signal -view spec -type ScanDataIn -port TEST_SI
dc_shell> set_dft_signal -view spec -type ScanDataOut -port TEST_SO
dc_shell> set_dft_signal -view spec -type ScanEnable -port TEST_SE

Configuring Scan Insertion

为了配置scan insertion,你可以指定test ports,define test modes, adn identify and mark any cells taht you do not want to have scaned.

dc_shell> set_scan_configuration -chain_count 4

接下来,你需要创建测试协议,即使你是读入了一个test_protocol,你也需要再create一下。

dc_shell> create_test_protocol

然后run pre-DFT test DRC

dc_shell> dft_drc

Preview Scan Insertion

dc_shell> preview_dft

Performing Post-DFT Optimization

默认情况下,在wire load mode中,insert_dft会自动的执行基本的门级优化,但建议是关掉他,某视频里面说他做优化做的并不好。

dc_shell> set_dft_insertion_configuration -synthesis_optimization none

但是在topographical mode下,inser_dft是不会执行post-DFT optimization的。

Inserting the DFT Logic

dc_shell> insert_dft

Analyzing Your Post-DFT Design

dc_shell> dft_drc

该过程称之为post_DFT DRC ,DFTC会检查设计测试的潜在问题。这个检查机制会比pre-DFT更加复杂。they check for the correct operation of the scan chain.

dc_shell> write -formate ddc -hierarchy -output my_design.ddc
dc_shell> write_test_protocol -output my_design_final.spf

但是有一些错误是不支持DRC的,因此只能在TMAX中来报错出来。

Reporting

接下来就是查看report,查看report是一向非常重要的技能。

dc_shell> report_scan_path -view existing_dft -chain all
dc_shell> report_scan_path -view existing_dft -cell all

#DFT Configuration Report
dc_shell> report_dft_configuration

#Scan Configuration Report
dc_shell> report_scan_configuration

#DFT Signal Report
dc_shell> report_dft_signal -view existing_dft
dc_shell>report_dft_signal -view spec

#Report on a user-specified scan path
dc_shell> report_scan_path -view spec -chain all

#autofix configuration report
dc_shell> report_autofix_configuration

本节脚本汇总,加强记忆

set_app_var target_library {  xx.db}
set_app_var link_library {xx.db}
set_app_var hdlin_enable_rtldrc_info true


set_app_var test_default_delay 0
set_app_var test_default_bidir_delay 0
set_app_var test_default_strobe 40
set_app_var test_default_period 100

set_dft_signal -view existing_dft -type ScanClock
set_dft_signal -view existing_dft -type Reset -active_state 0
set_dft_signal -view spec -type ScanDataIn -port DAT_IN[7]
set_dft_signal -view spec -type ScanDataOut -port DAT_OUT[7]

set_scan_configuration -style multiplexed_flip_flop
set_scan_configuration -chain_count 4
set_dft_insertion_configuration -synthesis_optimization none
set_dft_configuration -clock_mix mix_clocks
set_dft_configuration -clock_mix mix_edges
create_test_protocol

dft_drc

preview_dft

insert_dft

dft_drc

write -formate ddc -hierarchy -output my_design.ddc
write -formate verilog -hierarchy -output my_design.v
write_test_protocol -output my_design_final.spf
report_scan_path -view existing_dft -chain all
report_scan_path -view exisiting_dft -cell all

report_dft_configuration
report_scan_configuration
report_dft_signal -view existing_dft
report_dft_signal -view spec
report_scan_path -view spec -chain all
report_autofix_configuration

如何查看报告

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
preview_dft -show后面有几个比较好用的选项,需要背下来。
preview_dft -show scan_clocks
在这里插入图片描述

参考

DFTug 第六章 p103-p121
可以结合axr的第一个lab记录进行对比巩固。
https://blog.youkuaiyun.com/ciscomonkey/article/details/110942075
https://blog.youkuaiyun.com/ciscomonkey/article/details/112221279

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值