news 2026/9/27 6:37:06

ATPG的仿真

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ATPG的仿真

最近在学习关于ATPG的内容,现分批次整理最近的学习笔记。仅为自己以后的回顾做记录,若有不对的地方,欢迎走过路过的大侠指正。

关于ATPG是指自动测试向量生成的缩写,所以这里说的仿真是指对ATPG的工具生成的测试向量进行仿真。本文主要针对TetraMax工具生成的测试向量进行仿真笔记的记录,在TetraMax网页版帮助文档中找到(这里参考的是2013版本,下面也是基于此版本进行展开)可以得知:支持Verilog DPV testbench的仿真器有synopsys VCS、cadence NC-Verilog、Cadence Verilog-XL、Model Technology ModelSim。

1 关于Verilog DPV testbench

通过TetraMAX工具生成patterns的同时也可产生用于仿真的文件,该命令为write_patterns,其具体的使用可以在TetraMax的命令行通过man write_patterns查看(该命令会打开网页版的帮助文档)。生成的仿真文件包括design_name.v和design_name_stildpv.v两个文件(design_name是指我们自己命名的文件名)。Design_name.v文件在design_name_stildpv.v中调用。Design_name_stildpv.v就是vcs仿真时的testbench文件,里面的格式就是正常仿真时的文件格式一样,module-endmodule,该文件是命令生成的,不需要手写。Design_name.v文件通过$STILDPV_setup()系统函数调用,该系统函数可以在网页版的帮助文档里查找到并能看到design_name_stildpv.v文档的详细内容。

2 关于design_name.v文件

Design_name.v文件的格式和design_name.stil文件的一样,内容相近。都主要包含了header、signals、signal groups、timing、scanstructures(和.stil文件中的不一样,该文件中把具体的scan上的reg按先后顺序都列出来了)、scanchain、patternburst、patternexec、procedures、macrodefs(里面包含test_setup)、pattern块。在进行patterns仿真时,仿真波形的变化应该和test_setup和pattern里的数据对应,pattern也是按其顺序在波形上先后体现的。Test_setup和pattern里的数据是一个时钟周期对应一个数据。Test_setup中的C是指相应的端口为常数,V为对应端口变化的矢量,loop是指将该loop中的矢量循环打入输入端口,loop后面跟着的次数是指循环输入的次数。Pattern里面包含多个具体的pattern,从0到N。每个具体的pattern里包含了call “load_unload”和call “multiclock_capture”两部分。在call “load_unload”部分包含了不同的scan输入输出引脚,需要在对应scan_chain的pin脚看;call “multiclock_capture”中包含了“_pi(定义好的输入引脚列表)”、“_po(输出引脚列表)”、“_clk(scan时钟)”。若“_clk”等于0,则不执行capture操作,若“_clk”等于P,则执行capture操作。执行capture操作时,scan_enable一定为0.pattern 0包含了输入数据,没有包含输出数据,是因为第一组数据输入后才会输出有效数据,故没有输出数据;最后一个pattern只包含了输出数据,没有包含输入数据,此时波形上输入数据为固定值,在最后一个pattern只需要打出最后一组输出有效数据。Scanstructures中写明了scanlength,该长度和后面具体pattern中输入输出数据量一致。

3 关于使用VCS的仿真命令

使用该种方法进行atpg的仿真需要在正常的仿真命令中需加入如下语句:

+acc+2 \

-P $STILDPV_HOME/lib/stildpv_vcs.tab \

$STILDPV_HOME/lib/libstildpv.a \

+tetramax

加入该部分语句后编译器才能识别design_name_stildpv.v中的$STILDPB_*()系统函数,也指向tetramax的pattern。

注意:atpg仿真和功能仿真的芯片物理环境不一样。如数模混合芯片中,功能仿真模拟部分需要正常产生相应的激励,而在atpg仿真中只需要模拟部分处于某种状态。因此用于仿真的部分文件需要在功能仿真的基础上进行相应的调整。

4 未弄明白的问题

Q1:同一个项目,同一个脚本,同一个命令输出的.stil文件和.v文件,scanlength为何不一样?

Q2:为何.stil文件中的scanlength和该文件中pattern的输入输出数据长度不一致?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 6:29:11

债券流动性风险剖析:市场深度指标计算与DeepSeek预警实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/27 6:28:33

沙巴克传奇正版官方客户端下载指引,忆往游戏正规安全渠道指南

《沙巴克传奇》由安徽游昕网络科技有限公司联合忆往游戏平台负责运营,是经过正版授权打造的经典传奇怀旧手游。现阶段游戏依托专属官方主站面向全网正式开放,高度复刻原版传奇内容,坚持绿色公平长久的运营模式,还原端游时期经典核…

作者头像 李华
网站建设 2026/9/27 6:27:44

5G SA接入故障排查:从ENM计数器到TRACE信令的根因定位

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华