DFTug - Getting Started(上篇)

引言

本篇将从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.csdn.net/ciscomonkey/article/details/110942075
https://blog.csdn.net/ciscomonkey/article/details/112221279

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Stable Baselines3 是一个用于强化学习的Python库,它提供了训练和评估强化学习算法的工具。 要开始使用 Stable Baselines3,首先需要安装它。可以通过 pip 安装稳定的 Baselines3: ``` pip install stable-baselines3 ``` 安装完成后,我们可以导入所需的模块并开始构建我们的强化学习模型。 首先,我们需要选择一个适合我们任务的强化学习算法。Stable Baselines3 提供了多种算法,比如 A2C、PPO、SAC等。选择算法后,我们可以实例化一个模型对象。 ```python from stable_baselines3 import A2C model = A2C('MlpPolicy', 'CartPole-v1', verbose=1) ``` 在这个例子中,我们选择了 A2C 算法,并将其用于 CartPole-v1 的任务。 接下来,我们可以使用模型对象对算法进行训练。 ```python model.learn(total_timesteps=10000) ``` 这里我们使用了 learn 方法来训练模型,total_timesteps 参数指定了总的训练步数。 训练完成后,我们可以使用训练好的模型来进行评估。 ```python mean_reward, std_reward = evaluate_policy(model, 'CartPole-v1', n_eval_episodes=10) ``` 这里我们使用了 evaluate_policy 方法来评估模型的能,n_eval_episodes 参数指定了评估时的回合数。 除了训练和评估,Stable Baselines3 还提供了其他功能,比如加载和保存模型、可视化训练过程等。 总的来说,使用 Stable Baselines3 进行强化学习任务非常方便。只需要选择适合的算法、构建模型对象、训练和评估模型,就可以快速地开展强化学习研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值