小姜的ATPG学习笔记_TetraMax

2024-02-08 11:10
文章标签 学习 笔记 atpg tetramax

本文主要是介绍小姜的ATPG学习笔记_TetraMax,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软件:Synopsys Tetramax

关于使用的参考资料:

  1. Tips For TetraMax
  2. link 使用中需注意2010后的版本生成测试激励不支持生成verilog版本
  3. 2006版本培训教程
  4. 知乎上的屁屁踢解读

软件探索:

  1. 打开图形界面的位置:tx/amd64/syn/bin/tmaxgui
    在这里插入图片描述
  2. 命令手册:tmax_qr.pdf
    在这里插入图片描述
  3. 图形界面使用好像有问题,先用命令行
    在这里插入图片描述
    需要在snps的环境下打开软件
    在这里插入图片描述

Flow:

在这里插入图片描述
脚本实例: link
在这里插入图片描述

在这里插入图片描述

1. read lib modules

在这里插入图片描述
在这里插入图片描述

根据示例,这里应该是读取一个工艺库文件
opencores的工艺库路径:
在这里插入图片描述
在这里插入图片描述


2. read netlist

读取设计的文件,根据ppt所述应该是门级网表,不确定rtl级是否可以

read_netlist /home/student00/student001/Functional_Safety/opencores/netlist/ac97_ctrl.v

3. build ATPG model

在这里插入图片描述

3.1 set build

在这里插入图片描述

设计中可能存在不希望执行ATPG的模块,如锁相环模块、模拟模块、测试期间被旁路的模块或单独测试的模块,如RAM模块。

一些ATPG工具要求您构建一个黑盒模型来表示设计中的这种功能。但是,通过使用以下命令之一,可以将设计中的任何块声明为黑盒或空盒黑盒输出为X,空盒输出为Z

set_build -black_box module_name
set_build -empty_box module_name

3.2 run build model

在这里插入图片描述
在这里插入图片描述
该命令从已读入TetraMAX的设计模块中构建内存仿真模型。若要控制构建过程,请使用set build命令。构建过程完成后,TetraMAX会执行一个学习过程,您可以使用set learning命令来控制该过程

示例:
在这里插入图片描述


4. Perform DRC

4.1 准备

4.1.1 相关理论

在这里插入图片描述
该软件的DRC可通过撰写STIL Protocol File或者用STIL快捷命令来实现
其中,STIL conmmand包括以下基础命令等等:

在这里插入图片描述
在这里插入图片描述

  1. add_pi_constraints
    在这里插入图片描述
  2. set_DRC
    在这里插入图片描述
4.1.2 SPF文件相关工作

上图的关键是要有一个SPF文件,该文件可以由DC自动生成,也可以用命令行手写。

  • 手写
    示例链接
    在这里插入图片描述
    在这里插入图片描述
  • DC自动生成 (首选方法)
    在这里插入图片描述

在这里插入图片描述
上图所示为测试自动化生成方法,首先读入RTL代码进行综合,在综合的过程中利用DFT Compiler进行扫描单元替换,然后完成一步到位的综合,包括设计规则检查,测试综合验证,内核测试包装。综合完毕后得到插入DFT电路的设计、STIL格式的程序文件、测试模型。同时由PT(Prime Time)工具分析电路给出关键路径。TetraMAX的ATPG工具会吃进这四个文件并生成对应的测试向量。
来源
脚本示例 :来源于PDF(百度文库),已存
在这里插入图片描述

参考脚本2(主要参考了这个)

在这里插入图片描述

我的工作:

  • design_vision 启动图形界面
  • setup 设置配置文件,包括源代码文件路径、工艺库文件路径等
    在这里插入图片描述
  • 读取设计(这里需要改用analyze+elaborate来读取)
    在这里插入图片描述
    在这里插入图片描述
    此时显示的设计会是按顺序读入的最后一个文件,需要修改顶层设计为当前设计:
    在这里插入图片描述
    上面的好像不行,没有反应,直接用命令输入修改
set current_design wb_dma_top
  • link源代码和工艺库(如果是analyze的方式则不需要link这一步)
    在这里插入图片描述
    这里出现了link失败的问题,不会报error,只是warning
    在这里插入图片描述
    感觉是setup的环节中出现了问题,还是得自己写一个setup才行
    在这里插入图片描述
    这里的当前目录指的是?
    使用report命令查看当前的design和lib
    在这里插入图片描述
    WORK对应之前warning中出现的WORK
    网上查的同样的问题的解决办法
    在这里插入图片描述
    按照上述方法进行尝试后,warning不再是WORK相关,变成了新的,之前没有报过这个warning
    在这里插入图片描述
    在这里插入图片描述
    去掉link操作后再次尝试
    PRE-DFT中出现的违例为D2/D3
    在这里插入图片描述
    执行完所有脚本后,仍存在违例TEST-120/TEST-224
    在这里插入图片描述
    TEST-120:no scan
    在这里插入图片描述
    TEST-224:Target library for design contains no scan-cell models
    在这里插入图片描述
    D8:clk_i ( Warning: Clock clk_i cannot capture data with other clocks off. (D8-1) )
    在这里插入图片描述
    –>DRC修复解决办法:
    (1)D2、D3:之前没有加入时钟信号的create以及复位信号rst的设置
    在这里插入图片描述

(2)TEST-120:scan model主要是来源于工艺库的问题,换一个工艺库就好了
在这里插入图片描述

  • *检查设计
    在这里插入图片描述
  • *时钟设置,先打开schematic然后点击clk的端口进行设置
    在这里插入图片描述

保存生成的文件,包括网表文件、spf文件等

write_test_protocol -output /home/student00/student001/Functional_Safety/work_for_DMA_DC/DMA.spfwrite -hierarchy -format ddc -output /home/student00/student001/Functional_Safety/work_for_DMA_DC/DC_result_wb_dma.ddc
write -hierarchy -format verilog -output /home/student00/student001/Functional_Safety/work_for_DMA_DC/DC_result_wb_dma.v

完整DC脚本

gui_startanalyze -library WORK -format verilog {/home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_wb_slv.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_wb_mast.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_wb_if.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_top.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_rf.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_pri_enc_sub.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_inc30r.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_defines.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_de.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_ch_sel.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_ch_rf.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_ch_pri_enc.v /home/student00/student001/Functional_Safety/DC_works/DMA/wb_dma_ch_arb.v}
elaborate wb_dma_top -architecture verilog -library DEFAULTset_scan_configuration -style multiplexed_flip_flop
set_dft_signal -view existing_dft -type ScanClock -port clk_i -timing [list 45 55]#时钟默认10%的占空比(在45%时上升沿,在55%时下降沿)
create_clock -name CLK -period 100 -waveform [list 0 50] [get_ports clk_i]
set_dft_signal -view existing_dft -port rst_i -type Reset -active_state 1create_test_protocol
dft_drc
compile -scanpreview_dft -show all
create_test_protocol
dft_drc
insert_dft
check_designwrite_test_protocol -output /home/student00/student001/Functional_Safety/DC_works/DMA/DMA.spf
write -hierarchy -format ddc -output /home/student00/student001/Functional_Safety/DC_works/DMA/DC_result_wb_dma.ddc
write -hierarchy -format verilog -output /home/student00/student001/Functional_Safety/DC_works/DMA/DC_result_wb_dma.v

4.2 run DRC

运行DRC,有两种方式

run_DRC xxx.spf
或者
set_DRC xxx.spf
run_DRC

运行后出现违例
在这里插入图片描述
report DRC结果

report_rules -fail

在这里插入图片描述


5 加入故障并运行ATPG

在这里插入图片描述

add_faults -all
run_atpg -auto

在添加了故障后且run atpg之前,可用以下代码获得详细的fault report内容

set faults -summary verbose 
report_summaries

在这里插入图片描述
在这里插入图片描述
run atpg后,上述的故障数量会发生改变
在这里插入图片描述
在这里插入图片描述


6 保存测试激励

write_patterns /home/student00/student001/Functional_Safety/ATPG_works/TEST.v -format verilog_single_file -serial -replace

在这里插入图片描述

完整tetramax脚本

  1. setup文件
#setup environmentset search_path /home/student00/student001/Functional_Safety/library
set link_library {* scc018ug_hd_rvt_tt_v1p8_25c_basic.db}
set target_library {scc018ug_hd_rvt_tt_v1p8_25c_basic.db}
  1. tcl文件
#source ~/Functional_Safety/ATPG_works/DMA/Tmax_DMA.tcl# 打开Tetramax
#./tx/amd64/syn/bin/tmax64# 读取工艺库文件
read_netlist /home/student00/student001/Functional_Safety/library/scc018ug_hd_rvt_neg_pg.v
read_netlist /home/student00/student001/Functional_Safety/library/scc018ug_hd_rvt_neg.v
read_netlist /home/student00/student001/Functional_Safety/library/scc018ug_hd_rvt_pg.v
read_netlist /home/student00/student001/Functional_Safety/library/scc018ug_hd_rvt.v# 读取设计门级网表
read_netlist /home/student00/student001/Functional_Safety/DC_works/DMA/DC_result_wb_dma.v#Build the ATPG model
run_build_model wb_dma_top#建立并运行DRC
set_drc /home/student00/student001/Functional_Safety/DC_works/DMA/DMA.spf
run_drc#加入故障并运行ATPG
add_faults -all
run_atpg -auto#保存测试激励
write_patterns /home/student00/student001/Functional_Safety/ATPG_works/DMA/tb_DMA.v -format verilog_single_file -serial -replace

这篇关于小姜的ATPG学习笔记_TetraMax的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690838

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识