0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verdi环境配置、生成波形的方法

sanyue7758 来源:芯片扫地僧ICer 2023-05-29 09:48 次阅读

Verdi是一个功能强大的debug工具,可以配合不同的仿真软件进行debug,很多企业常用的就是VCS+Verdi或或者Xcelium(xrun)+Verdi的方式进行代码的仿真与检查,Verdi使用情形主要是IC验证工程师(Debug),IC设计工程师(Review)。总之,Verdi很重要,作为一名ICer要是不会用Verdi,确实说不过去。

一、Verdi环境配置

(一)公司 - 一般拿来直接用

1. 在芯片设计公司中,九成公司应该都配备了Verdi,一般都会放在公司服务器目录的Tools目录下,我们可以通过which命令查看任何公司购买的EDA Tools所在路径,查看各种版本/对应文档/配置等:

247adb8c-fd3e-11ed-90ce-dac502259ad0.png

2. 有些时候,我们需要切换Verdi版本,来满足不同项目或其他需求,在.cshrc中配置 或 直接module load 对应Verdi版本,最后module list查看是否load成功。

24d32a4e-fd3e-11ed-90ce-dac502259ad0.png

(二)其他 - 需自己摸索配置再用 (考虑排版+代码风格,直接上图)

25303284-fd3e-11ed-90ce-dac502259ad0.png    

二、配置波形文件“三方法”“八奇技”

FSDB(FastSignal Database)是Verdi支持的文件格式,用于保存仿真产生的信号波形。 据Verdi文档说明,FSDB比标准的VCD格式节省磁盘空间,处理速度更快。

(一)常用“三方法”:

1. (最常用) 一般是在testbench(验证环境,简称tb)中的top.sv文件里,创建个initial块结合$fsdbDumpxxx()命令来配置:

2591cd28-fd3e-11ed-90ce-dac502259ad0.png

提醒:使用这种方法,vcs编译前需要添加-debug_access选项。

2. (不常用) VCS添加编译选项"+vcs+fsdbon":

这样指定仿真过程生成.fsdb格式的波形,默认则保存成名为novas.fsdb的波形文件;

意的是,仿真过程会将整个design给dump下来,同时会自动添加 -debug_access 选项。

另外,配置过程中若出错,首先检查一下LD_LIBRARY_PATH是否配置对,目录下有没有Verdi需要的库文件xxx.so(静态库),pli.a(动态库),xxx.tab(表文件 for VCS)等,一般都是这里没配对导致没生成波形而报错;

提醒:vcs+fsdbon和tb中用$fsdbdumpvar()选一种方式即可;

3. (不常用) 使用UCLI命令: UCLI:Unified Command Line Interface

UCLI其实就是vcs的命令交互模式,需要在编译时加入参数 (-ucli) 以开启ucli,否则ucli交互时只能使用简单的'run'、'dump'、'quit'命令。

启动方式例如:./simv -ucli

该方法与方法1基本一样,均是使用fsdbDumpvars/fsdbDumpfile等命令,不同之处在于使用的方式和便捷程度,与方法1相比,该方法可以在不重新编译的情况下,通过修改.ucli.cmd文件中的命令,来指定需要dump波形的模块和层级,从而节省编译带来的资源消耗。

得注意的是,使用fsdbDumpvars/fsdbDumpfile等命令时,不需要像方法1使用时,前方使用符号: $。

执行仿真的过程中,通过./simv -ucli -i.ucli.cmd方式给入,.ucli.cmd(名字随便取,但格式不能变)中存放命令举例如下:

25aca94a-fd3e-11ed-90ce-dac502259ad0.png

提醒:使用这种方法,vcs编译前需要添加-debug_access选项。

(二)常用命令“八奇技”(结合例子看容易理解):

1. $fsdbDumpon - 打开 FSDB dumping;

2. $fsdbDumpoff - 关闭 FSDB dumping; 上述两个命令,一般搭配wait()函数使用,更加灵活,eg:

25e6bcfc-fd3e-11ed-90ce-dac502259ad0.png

表示之前未dump波形,直到等到o_xxx_cnt==1024时,才开始dump波形;

3. $fsdbDumpfile("fsdb_name", limit_size) - 指定dump文件;

fsdb_name - 表示指定的fsdb文件名,如"ip.fsdb"
limit_size - 表示dump波形的最大size(多少MB)- 可不配置

4. $fsdbDumpvars(depth,instance, "option=") - dump指定模块的信号; 这个命令可以多次使用,但一般不使用多次,使用多次目的是:想用来dump不同instance的波形,想达到相同目的其实有更加灵活的方法 ——“建立dump_scope.list + $fsdbDumpvarsToFile()” (后面会介绍);

depth - 0 表示dump instance以下所有层级的信号(常用) - 1 表示只dump instance这一层的信号
instance -指定dump的hierarchy,如 dut.top.xxx
option - dump时可以选择的一些选项:- 可不配置
"+mda" - 表示dump memory或者MDA(多维数据)的数据;
"+packedmda" - 表示dump 压缩的memory数据;
"+functions" - 表示dump function和task里的信号;
"+all" -表示dump all;
"+Reg_Only" - 表示只dump reg类型的数据;
"+strength" - 表示开启强力dump开关;
"+struct" - 表示dump struct数据(默认开);
"+power" - 表示dump power相关信号的数据(默认开);
"+fsdbfile" - 表示直接dump指定的hierarchy的fsdb文件名字,eg: 260aeed8-fd3e-11ed-90ce-dac502259ad0.png

5. $fsdbDumpMDA(depth, instance,"options") - dump指定模块中的多维数组,内部参数含义同上; eg_1:如果想更方便,可直接什么参数都不配,即默认都dump

262e2efc-fd3e-11ed-90ce-dac502259ad0.png

6. $fsdbDumpSVA(depth, instance, "option") - dump指定模块中的assertion,内部参数含义同上; eg_1:将该instance (top)下所有assert全部dump到SVA.fsdb中

26552746-fd3e-11ed-90ce-dac502259ad0.png

eg_2:如果想更方便,可直接什么参数都不配,即默认都dump

268425a0-fd3e-11ed-90ce-dac502259ad0.png

7.$fsdbAutoSwitchDumpfile(file_size,"fsdb_name",number_of_files,"log_file_name", "+fsdb+no_overwrite") - 波形过大/资源紧张情况,灵活使用拆分Dump波形很有用

file_size 波形文件大小限制,单位为MB,最小为10M,若值小于10MB则默认10MB;
"fsdb_name" 波形文件的名字,在实际加载波形时,文件名为fsdb_name_000.fsdb, fsdb_name_001.fsdb …;
number_of_files 最多可以加载多少个fsdb_size这么大的波形文件,如果写为0,则默认没有限制;
"log_file_name" 指定log文件的名字,log文件中会记录每段波形的起始和中止时间; - 可不配置
"+fsdb+no_overwrite" 当number_of_files限制的个数达到时停止dump波形,反之,一旦超出限制,会从头dump,这样会一定程度上覆盖掉起初的波形文件;- 可不配置

eg_1:单个波形文件为500MB,最大可以加载10个这么大的文件,每段波形的起始和中止时间记录在fsdb.log中,并具备防overwrite的限制;

26ab07ec-fd3e-11ed-90ce-dac502259ad0.png

8. $fsdbDumpvarsToFile("./dump_scope.list"); - 将需要dump的hierarchy以及depth放到一个文件里吃进来,波形过大/资源紧张情况,灵活使用选取必要波形Debug; ./ - 表示当前路径,也就是dump_scope.list要与top.sv在同一路径,当然也可以灵活改变路径; eg_1:dump_scope.list (0/1代表深度,用法通上述函数一致;#用于注释)

26d11752-fd3e-11ed-90ce-dac502259ad0.png





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IC设计
    +关注

    关注

    37

    文章

    1291

    浏览量

    103752
  • EDA工具
    +关注

    关注

    4

    文章

    264

    浏览量

    31708
  • VCS
    VCS
    +关注

    关注

    0

    文章

    78

    浏览量

    9590

原文标题:Verdi环境配置、生成波形的“三方法”和“八奇技”

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请教VCS和verdi怎么联合使用

    最近要用到VCS仿真后生成FSDB文件,然后在Verdi中进行自动侦错,请问我怎么安装Verdi这个软件以及如何启动license,并且怎么写testbench文件才可以产生FSDB文件。请懂得人给我支支招,我也是刚开始学习这个
    发表于 01-22 14:53

    VCS仿真卡住,为什么无法生成verdi波形文件呢?

    在make com编译成功后,terminal卡住了一直没有反应,这是什么情况有大佬知道吗?VCS仿真卡住,为什么无法生成verdi波形文件呢?
    发表于 06-21 08:14

    怎么修改verdi软件波形背景颜色?

    毕业设计中用到verdi波形,需要波形窗口的背景最好为白色,默认为黑色。怎么修改设置,谢谢在线等,经过半天的尝试,和各位大神的请教,终于搞定了,拿出来和各位大神分享,希望更多的人参与到分享中来,谢谢[/td]
    发表于 06-23 10:32

    Verdi使用技巧 连续有效信号量测方法

    Verdi自动化调试系统是Verdi SoC调试平台的核心,它支持对所有设计和验证流程进行全面的调试。它包括强大的技术,帮助您理解复杂和不熟悉的设计行为,让困难和乏味的调试过程自动化,并能让多样和复杂的设计环境一致化。
    的头像 发表于 05-15 15:46 9829次阅读
    <b class='flag-5'>Verdi</b>使用技巧 连续有效信号量测<b class='flag-5'>方法</b>

    vcs和verdi的调试及联合仿真案例

    若想用Verdi观察波形,需要在仿真时生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通过两个系统调用$fsdbDumpfile $fsdbDumpvars来实现的。
    的头像 发表于 09-22 15:01 8544次阅读

    如何通过自动化脚本实现Questasim和Verdi的联合仿真

    Verdi是用来仿真以及debug波形的工具,但它不能够用来编译verilog和systemverilog文件,所以需要借助第三方EDA工具去做编译的工作。 这里主要分享一下使用questasim
    的头像 发表于 06-13 17:00 4485次阅读
    如何通过自动化脚本实现Questasim和<b class='flag-5'>Verdi</b>的联合仿真

    全网最实用的Verdi教程1

    过程中,常常用来调试(debug)一些错误的情况。Verdi既可以阅读调试代码,又可以查看波形,包括数字设计的波形和模拟设计的波形
    的头像 发表于 05-05 14:49 1.6w次阅读
    全网最实用的<b class='flag-5'>Verdi</b>教程1

    全网最实用的Verdi教程2

    过程中,常常用来调试(debug)一些错误的情况。Verdi既可以阅读调试代码,又可以查看波形,包括数字设计的波形和模拟设计的波形
    的头像 发表于 05-05 14:53 8110次阅读
    全网最实用的<b class='flag-5'>Verdi</b>教程2

    全网最实用的Verdi教程3

    过程中,常常用来调试(debug)一些错误的情况。Verdi既可以阅读调试代码,又可以查看波形,包括数字设计的波形和模拟设计的波形
    的头像 发表于 05-05 14:53 5519次阅读
    全网最实用的<b class='flag-5'>Verdi</b>教程3

    如何用vcs+verdi仿真Verilog文件并查看波形呢?

    我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形
    的头像 发表于 05-08 16:00 6319次阅读
    如何用vcs+<b class='flag-5'>verdi</b>仿真Verilog文件并查看<b class='flag-5'>波形</b>呢?

    如何用vcs+verdi仿真Verilog文件

    我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件内容如下:
    的头像 发表于 05-11 17:03 1867次阅读
    如何用vcs+<b class='flag-5'>verdi</b>仿真Verilog文件

    浅析后仿波形处理

    我们知道,Verdi横空出世,大大加速了数字设计验证的debug的效率,verdi波形格式是fsdb,压缩率高,逐步取代了VCD波形,但是有些芯片设计环节仍然需要VCD。
    的头像 发表于 08-12 10:02 2113次阅读
    浅析后仿<b class='flag-5'>波形</b>处理

    生成SPWM波形方法

    生成SPWM波形方法  SPWM波形产生是一种常见的数字信号生成技术,用于控制交流电子设备的输出电压或电流的形状,使其接近正弦波。 SPW
    的头像 发表于 02-06 13:52 2592次阅读

    任意波形发生器中波形生成方法

    中,任意波形发生器都发挥着不可或缺的作用。本文将详细探讨任意波形发生器中波形生成方法,以期为相关领域的研究和应用提供参考。
    的头像 发表于 05-29 17:13 759次阅读

    Linux环境变量配置方法

    Linux上环境变量配置分为设置永久变量和临时变量两种。环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量
    的头像 发表于 10-23 13:39 119次阅读