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

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

3天内不再提示

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

西西 来源:博客园 作者:任怀鲁 2020-09-22 15:01 次阅读

环境配置

首先搭建好vcs和Verdi都能工作的环境,主要有license问题,环境变量的设置。在220实验室的服务器上所有软件的运行环境都是csh。所以,所写的脚本也都是csh的语法。

生成波形文件

Testbench的编写

若想用Verdi观察波形,需要在仿真时生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通过两个系统调用$fsdbDumpfile $fsdbDumpvars来实现的。而这两个系统调用并不是Verilog中规定的,是Verdi以pli(Programming Language Interface)的方式实现的。这就需要让vcs编译时能找到相应的库。

首先在testbench中需加入以下语句

`ifdef DUMP_FSDB

initialbegin

$fsdbDumpfile(“test.fsdb”);

$fsdbDumpvars;

end

`endif

这个编译开关在用vcs编译时加入+define+DUMP_FSDB选项就可以打开,也可以在define.v文件中定义DUMP_FSDB这个宏。

我们现在所接触的仿真波形文件主要有

Ø Wlf文件: WLF波形日志文件,是modelsim的专用文件。这个wlf文件只能是由modelsim来生成,也只能通过modelsim来显示。在用modelsim做仿真时,仿真结束都会生成一个*.wlf的文件(默认是vsim.wlf)。下次就可以通过通过modelsim直接打开这个保存下来的波形。vsim -view vsim.wlf -do run.do其中run.do中的内容为要查看的波形信号。要强调的是不是一个通用的文件文件格式。

Ø VCD文件:VCD 是一个通用的格式。 VCD文件是IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。可以通过Verilog HDL的系统函数$dumpfile,$dumpvars等来生成。我们可以通过$dumpvars的参数来规定我们抽取仿真中某个特定模块和信号的 VCD数据。它主要包含了头信息,变量的预定义和变量值的变化信息。正是因为它包含了信号的变化信息,就相当于记录了整个仿真的信息。可以用这个文件来再现仿真,也就能够显示波形。另外我们还可以通过这个文件来估计设计的功耗。因为VCD是 Verilog HDL语言标准的一部分,因此所有的verilog的仿真器都要能实现这个功能。因此我们可以在verilog代码中通过系统函数来dump VCD文件。另外,我们可以通过modelsim 命令来dump VCD文件,这样可以扩展到VHDL中。具体的命令: vcd file myfile.vcd vcd add /test/dut/* 这个就生成一个含dut下所有信号的VCD数据信息。我们在使用来进行仿真 vsim -vcdstim myfile.com test;add wave /*;run -all;

Ø FSDB文件:fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就像对 VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置的系统函数来实现 的,fsdb是通过verilog的PLI接口来实现的。$fsdbDumpfile,$fsdbDumpvars等 另外,在VCS仿真器中还有一种VCD+的数据格式VPD,详细情况参照VCS的使用。 注意:WIF:波形中间格式;WLF:波形日志文件。由于在ModelSim下只能打开WLF文件 使用ModelSim行命令vcd2wlf 将VCD文件转化为WLF文件。

而在dump fsdb文件需要几个文件,Verdi.tab, pli.a 以及与仿真器相应版本的.so库文件(需要修改LD_LIBRARY_PATH变量)。而这些目录在以往的版本中是比较凌乱的。

在Verdi200907版本之后它的dumper就做了统一化的处理:

How to Link the New Unified Dumper?

Prerequisites:

Ø ${NOVAS_INST_DIR} :

Verdi/Siloti install directory.

Ø ${PLATFORM} :

LINUX: Linux OS (32-bit)

LINUX64: Linux OS (64-bit)

SOL2: SunOS 5.x (32-bit)

SOL7: SunOS 5.x (64-bit)

IBM5: IBM 5.1

Ø Tab file:

novas.tab

Ø LD_LIBRARY_PATH

${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM} needs to be added as one of the

LD_LIBRARY_PATH searching paths all the time.

Ø Novas banner:

*Novas*

Ø novas.vhd file:

For VHDL and mixed language users who transfer from the old FSDB dumper, the first time use of new unified FSDB dumper needs the “novas.vhd” to be re-compiled (or re-analyzed) if the FSDB dumping commands have been specified in the VHDL design.

The related unified dumper directories are:

  • ${NOVAS_INST_DIR}/share/PLI/VCS
  • ${NOVAS_INST_DIR}/share/PLI/MODELSIM
  • ${NOVAS_INST_DIR}/share/PLI/IUS
  • ${NOVAS_INST_DIR}/share/PLI/lib

在我设的vcs环境中(csh)中设计的脚本如下

#!/bin/tcsh

if(-esimv)then

\rm-rsimv

endif

if(-esimv.daidir)then

\rm-rfsimv.daidir

endif

if(-ecsrc*)then

\rm-rfcsrc

endif

vcs0809

#verdi env setting

setPLATFORM=LINUX

setNOVAS_INST_DIR=/opt/spring/verdi201004

setenvLD_LIBRARY_PATH${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM}:${LD_LIBRARY_PATH}

vcs -l vcs.log \

-notice \

-line -debug_all \

-P $NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/novas.tab \

$NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/pli.a \

-f vcs.args

。/simv

需要注意:

  • Csh中设置环境变量,需把环境变量用{}括起来,这一点我试了很多次,它确实不如bash的解析器更加智能
  • 在220的服务器上,vcs的版本是201006的,而Verdi的版本时间比较低,编译时会提示,相应的libsscore_vcs201006.so文件找不到。现在我用的Verdi的版本是201004,而vcs的版本是200809

其中的vcs.args的参考脚本如下(以intra mode decision为例)

+libext+.v

+v2k

+acc

+define+DUMP_FSDB

-y http://www.cnblogs.com/rtl

-work work

//

// Testbench files

//

+incdir+http://www.cnblogs.com/bench

http://www.cnblogs.com/bench/tb_ip_mode_decision.v

// RTL files

//

+incdir+http://www.cnblogs.com/rtl

http://www.cnblogs.com/rtl/ip_mode_decision.v

http://www.cnblogs.com/rtl/defines.v

http://www.cnblogs.com/rtl/timescale.v

在csh中运行

。/run_vcs

即可生成Verdi所需要的fsdb文件

之后运行以下命令启动Verdi

verdi -2001 -f vcs.args -ssf test.fsdb

Verdi调试

Verdi调试主要分为以下几步

Ø Load design and testbench into Debussy;

Ø 打开nWave,载入对应的FSDB;

Ø 在nTrace中将要观察的信号通过鼠标中键Drag&Drop拖放到nWave中;

Ø 通常都是在波形上发现问题,找到错误地方并双击鼠标,会自动跳到Real driver statement,也即会跳到源代码所在。

Ø nTrace中,Active Annotation(快捷键X)标出仿真结果在source code下;

Ø 在先前driver statement中找个driver来使用active trace来追踪有效驱动。

Verdi就是之前的Debussy,在调试时有着诸多的优点,现在我感觉最基础的几点就是它

Ø 只需执行一遍仿真就可以查看所有的波形,而在modelsim中则需要反复运行add wave命令,每一次都要重新仿真。

Ø 可以查看设计的原理图schematic,这非常方便查看每一个module和wire的所对应的硬件结构,modelsim现在还没有这个功能。

Ø 在仿真时可以很轻易地追踪每个信号所对应的源码。

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

    关注

    12

    文章

    8120

    浏览量

    82529
  • 波形
    +关注

    关注

    3

    文章

    344

    浏览量

    31246
  • VCS
    VCS
    +关注

    关注

    0

    文章

    78

    浏览量

    9497
收藏 人收藏

    评论

    相关推荐

    请教VCSverdi怎么联合使用

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

    怎样去使用Makefile+VCS+Verdi做个简单的Test Bench?

    怎样去使用Makefile+VCS+Verdi做个简单的Test Bench?有哪些操作步骤?
    发表于 06-18 06:28

    VCS+Verdi如何安装?怎么破解?

    VCS+Verdi如何安装?怎么破解?
    发表于 06-21 06:11

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

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

    请问如何更新bin/run.makefile以支持VCS+Verdi工具?

    如何更新bin/run.makefile以支持VCS+Verdi工具?
    发表于 08-11 10:08

    在Linux上用vcs+verdi对demo_nice进行仿真没有成功的原因?

    请教大神,我在Linux上用vcs+verdi对demo_nice进行仿真,但是没有成功 我是用hibrd.sdk把demo_nice编译成.verilog文件的,其内容如下 另外我还对tb
    发表于 08-12 08:07

    新思科技采用VCSVerdi 结合,推出与众不同的芯片设计

    Verdi 交互调试解决方案非常适合我们的大型设计,让我们的仿真团队能够缩短回归周转时间,从而大大提升我们验证工作的效率。”
    的头像 发表于 08-28 15:22 3241次阅读

    AImotive采用新思科技VCS®仿真Verdi®调试验证其下一代自动驾驶

    新思科技(Synopsys, Inc., 纳斯达克股票代码:SNPS)近日宣布,AImotive已采用新思科技VCS®仿真Verdi®调试(Verification Continuu
    的头像 发表于 01-13 15:57 1851次阅读

    利用vcs+verdi仿真工具蜂鸟E200系列处理器仿真分析

    开源RISC-V Hummingbird E203(蜂鸟E203)的仿真工具是开源的iverilog,这里利用vcs+verdi仿真工具进行仿真
    的头像 发表于 11-17 10:28 2121次阅读

    全网最实用的Verdi教程1

    Verdi是一个功能强大的debug工具,可以配合不同的仿真软件进行debug,很多企业常用VCS+Verdi或者Xcelium/xrun+Verdi的方式进行代码的
    的头像 发表于 05-05 14:49 1.4w次阅读
    全网最实用的<b class='flag-5'>Verdi</b>教程1

    全网最实用的Verdi教程2

    Verdi是一个功能强大的debug工具,可以配合不同的仿真软件进行debug,很多企业常用VCS+Verdi或者Xcelium/xrun+Verdi的方式进行代码的
    的头像 发表于 05-05 14:53 4955次阅读
    全网最实用的<b class='flag-5'>Verdi</b>教程2

    全网最实用的Verdi教程3

    Verdi是一个功能强大的debug工具,可以配合不同的仿真软件进行debug,很多企业常用VCS+Verdi或者Xcelium/xrun+Verdi的方式进行代码的
    的头像 发表于 05-05 14:53 3747次阅读
    全网最实用的<b class='flag-5'>Verdi</b>教程3

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

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

    如何用vcs+verdi仿真Verilog文件

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

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

    Verdi是一个功能强大的debug工具,可以配合不同的仿真软件进行debug,很多企业常用的就是VCS+Verdi或或者Xcelium(xrun)+Verdi的方式进行代码的
    的头像 发表于 05-29 09:48 2315次阅读
    <b class='flag-5'>Verdi</b>环境配置、生成波形的方法