仿真(Simulation)_debug_access+f-程序员宅基地

技术标签: VCS快速实战指南  

1.4.1 如何执行仿真

%> ./simv <runtime_options>
Run-time 选项可以用来控制仿真行为的切换

  • User-defined run-time controls(plusargs)
  • Control VPD or FSDB creation
  • Modify assertion behaviors (-sva等)
  • Collect code coverage (-cov)

但是有些仿真选项并不是说用就能用,simv的执行,很多时候依赖于你执行vcs命令(编译步骤)时,所附加的选项,例如dump波形,就需要在编译时,加上使能dump波形的选项。

Common simv Options
  • +<runtime_args> -Specify simulation runtime plusargs
  • -l -Create runtime log file
  • +ntb_random_seed=# -Specify default random seed for simulation
  • -verdi -Start Verdi interactive debug session
  • -gui -Start interactive GUI session
  • -ucli -Stop at Tcl prompt upon start-up
  • -do <run.tcl> -Execute specified Tcl script upon start-up
  • -cm -Enable coverage options
仿真的模式

在仿真阶段,有两种模式,交互式模式和批处理模式。
每种模式,对应的调试方法大致相同,但是联调的交互式模式能做的更多,但是整个流程会更慢一些。
在联调的交互式模式下,你可以进行如下操作:

  • 查看波形
  • 比较波形
  • trace驱动和负载
  • 查看原理图
  • 执行UCLI/Tcl命令
  • 设置断点(行,时间,事件等)
  • 行调试

在后处理模式下,你可以进行如下操作:

  • 查看波形
  • 比较波形
  • trace驱动和负载
  • 查看原理图

如果想在仿真时,使用调试功能,不管哪一种调试模式,首先都需要在编译或者elaboration的时候,使能debug mode。
VCS MX为调试模式提供以下编译选项:
-debug_pp,-debug,-debug_access(+), -debug_all,-debug_region =()(+)

  • 在部分调试模式下elab设计
    vcs -debug [compile_options] TOP

  • 在完全调试模式下elab设计
    vcs -debug_all [compile_options] TOP

  • 用所需的调试功能来elab设计
    vcs -debug_access<+options> [compile_options] TOP

你可以在编译时使用-debug_access选项来更好地控制仿真中调试的功能。
与-debug_pp选项相比,-debug_access选项允许存储VPD和FSDB文件以进行后处理调试,并减少不必要的调试选项。
你可以使用-debug_access+指定其他选项,以有选择地启用所需的调试功能。 只启用所需的调试功能,即可优化仿真性能。
debug_access(+<option>)*

-debug_access支持的选项

Option Description
r The -debug_access+r option enables the read capability for the entire design.
w The -debug_access+w option applies write (deposit) capability to the registers and variables for the entire design.
wn The -debug_access+wn option applies write (deposit) capability to the nets for the entire design.
f The -debug_access+f option enables the following: Write (deposit) capability on registers and variables.Force capability on registers, variables, and nets.This option is equivalent to -debug_access+w+fn
fn The -debug_access+fn option applies force capability to the nets for the entire design.
fwn The -debug_access+fwn option applies write (deposit) and force capability to all nets in the design.
line The -debug_access+line option enables line debugging. It allows you to use the commands for step/next and line breakpoints.This option is equivalent to -debug_access+pp -line
cbk The -debug_access+cbk option enables PLI-based callbacks on static nets, registers, and variables.
cbkd The -debug_access+cbkd option enables both dumping and PLI-based callbacks on dynamic nets, registers, and variables.
thread The -debug_access+thread option enables the debugging of the SystemVerilog threads.
class The -debug_access+class option is equivalent to the following command:-debug_access+r+w+thread+class+line+cbk+cbkd.The -debug_access+class option enables testbench debug capabilities.
nomemcbk The -debug_access+nomemcbk option disables callbacks for memories and multidimensional arrays (MDAs). By default,-debug_access enables callbacks for memories and MDAs.
dmptf The -debug_access+dmptf option enables dumping of task/function ports and internal nodes/memories for the entire design.
pp The -debug_access+pp option is equivalent to the following command:-debug_access+w+cbk+drivers.The -debug_access+pp option enables debug capabilities equal to -debug_pp (except for no thread debugging and dumping of task/function signals, and does not apply capability inside cells and encrypted modules).
all The -debug_access+all option is equivalent to the following commands:-debug_access+line+class+wn+driver+r+w+cbk+f+fn+thread+cbkd.The -debug_access+all option enables debug capabilities equal to -debug_all (except it does not apply capability inside cells and encrypted modules).
report The -debug_access+report option enables the reporting of the global debug capability diagnostics.

在上面的选项中,存在-debug_access+pp, -debug_access+all的选项,你或许会有疑问,为什么会有-debug_pp -debug_all 选项呢? 感觉似乎有重复定义的嫌疑.
其实“-debug_access”是VCS从2014.03版本开始为用户提供的一个新选项.
下面要讲的“-debug_region”是在-debug_access之上VCS的2015.09发行版提供的一个新选项。
旧版的VCS调试更加易于使用,并在仿真运行时性能上进行权衡。 但是,运行时性能是提高用户工作效率的关键。 考虑到这一点,较新版本的VCS带来性能更有效的调试方法。
使用新调试选项(-debug_access和-debug_region)的有效调试方法可用于实现具有所需调试可见性的新性能,从而优化仿真运行时性能。
所以所有的一切都在于精细化控制,提高仿真效率。所以,尽量改用最新的优化的debug选项吧。

与-debug_access配合可以使用-debug_region来控制-debug_access指定的功能作用的范围,从而进一步提高了运行时性能
-debug_region选项使你能够将调试功能应用于设计的所需部分[DUT,单元,TB和标准包(OVM,UVM和RAL)或加密实例(模块,程序,包和接口)]。
编译时必须和-debug_access选项一起使用-debug_region选项。 以下是-debug_region的语法:
-debug_access(+ <option>)* -debug_region =(<option>)(+ <option>)*

-debug_region支持的选项

Option Description Default Functionality if -debug_region is not specified
lib Applies debug capabilities to the cells inside libraries. Debug capability is not applied to the libraries.
cell Applies debug capabilities to the cells. Debug capability is not applied to the cells.
encrypt Applies debug capabilities to the fully-encrypted instances (modules, programs, packages, and interfaces). Debug capability is not applied to the fully-encrypted
tb Applies debug capabilities only to the testbench, but does not apply debug capabilities to the standard packages. It does not apply debug capability to the standard packages. The VPD/FSDB dumping of the DUT is not affected by this option. Debug capability is applied to testbench and DUT.
dut Applies debug capabilities only to the non-testbench objects. Debug capability is applied to testbench and DUT.
stdpkg Applies debug capabilities to the standard packages. You must use the stdpkg option in combination with the tb option. VCS issues a warning message if you use -debug_region=stdpkg only. The -debug_region=tb+stdpkg option applies debug capabilities to both testbench and standard packages. Debug capability is applied to the standard packages.

examples:
-debug_access+class -debug_region=tb
仅将类调试功能应用于测试平台。 调试功能不适用于标准软件包
-debug_access+force -debug_region=dut
将force调试功能应用于DUT
-debug_access+class -debug_region=tb+stdpkg
将调试功能应用于TB和标准软件包

TB的定义

  • SystemVerilog程序(program)/包(package)实例是测试平台的一部分。 在程序/包块内声明的所有对象都被视为测试平台的一部分。
  • 如果模块(module)包含以下任何元素,则SystemVerilog模块(包括在模块块内声明的所有对象)被视为测试平台的一部分:
  • 类定义
  • 动态或关联数组的声明
  • 智能队列的声明
  • 类变量的声明
  • 导入部分或者全部包(package)
  • 包含时钟块或上述点中提到的元素(类定义,动态数组等)的SystemVerilog接口实例是测试平台的一部分。 在接口块内声明的所有对象都被视为测试平台的一部分
simv在错误结果上返回非零值

VCS MX生成的simv可执行文件在出现错误,致命错误和断言失败时返回非零值。
simv可执行文件返回错误,致命错误和断言值的值为:

  • 0(无指示)
  • 1(如运行时崩溃或系统崩溃)
  • 2(错误)
  • 3(致命)

下表列出了可能的场景和返回的错误值:

Scenario Return Error Value
$fatal/UVM_FATAL/OVM_FATAL/VMM_FATAL 3
$error/UVM_ERROR/ OVM_ERROR/ VMM_ERROR/ Errors promoted from warning messages to errors 2
Assertion failure Verilog 2
$warning /UVM_WARNING/ OVM_WARNING/ VMM_WARNING 0
Unique/priority RT warnings 0
-xzcheck 0

使用时,只需在simv命令后,添加-exitstatus选项即可,命令如下:

%> simv -exitstatus
%> echo $status
UCLI (Unified Command line interface)

统一命令行界面(UCLI)为交互式仿真提供了一组通用命令。 UCLI是VCS MX中批处理模式调试的默认命令行界面。
UCLI命令基于Tcl,因此你可以使用任何带有UCLI的Tcl命令。 你还可以编写Tcl程序并在UCLI提示符下执行它们。 使用UCLI命令,您可以执行以下操作:

  • 控制仿真
  • 存储VPD/FSDB波形文件
  • 保存/恢复仿真状态
  • force/release信号
  • 可以使用断点,范围/线程信息和内置宏调试设计

VCS has two command line I / F
-CLI: Command line I / F for Verilog (default)
-UCLI: Multi-language compatible TCL-based command line I / F
Support from VCS 2005.06
Available for DVE/Verdi debug
Compared to conventional CL I command
You can use the TCL command
Can be controlled with common commands even in Verilog/VHDL mixed environment

Can be specified at simv runtime
%> simv –ucli –i cmd.lst
cmd.lst

run 1000 ns
finish
UCLI commands examples
Command Description
finish Finishes/ends processing in the tool
force Forces a value onto a variable
get Returns the current value of the specified variable
run Advances the tool to a specific point

More info:

Unified Command Line Interface User Guide in the SolvNet
“Using UCLI” in VCS MX/VCS MXi User Guide

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhajio/article/details/109449726

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签