问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样在Modelsim软件中产生一个.vcd文件并且显示波形?

发布网友 发布时间:2022-04-09 15:24

我来回答

2个回答

懂视网 时间:2022-04-09 19:45

  仿真是IC设计不可或缺的重要步骤,仿真后一般需要记录下波形文件,用于做详细分析和研究。说一下几种波形文件WLF(Wave Log File)、VCD(Value Change Dump)文件,fsdb(Fast Signal DataBase)文件、shm、vpd:

  1、对于WLF波形日志文件,只要我们使用过modelsim,应该都很熟。WLF(Wave Log File) 是Mentor Graphics 公司Modelsim支持的波形文件。但我们在波形窗口观察波形时,仿真结束时都会生成一个*.wlf的文件(默认是vsim.wlf)。我们下次就可以通过通过modelsim直接打开这个保存下来的波形。vsim -view vsim.wlf -do run.do 其中run.do中的内容为要查看的波形信号。要强调的是这个wlf文件只能是由modelsim来生成,也只能通过modelsim来显示。不是一个通用的文件文件格式。

  2、VCD (Value Change Dump)是一个通用的格式。 VCD文件是IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。它主要包含了头信息,变量的预定义和变量值的变化信息。正是因为它包含了信号的变化信息,就相当于记录了整个仿真的信息,我们可以用这个文件来再现仿真,也就能够显示波形。因为VCD是 Verilog HDL语言标准的一部分,因此所有的verilog的仿真器都要能够实现这个功能,也要允许用户在verilog代码中通过系统函数来dump VCD文件。我们可以通过Verilog HDL的系统函数$dumpfile 来生成波形,通过$dumpvars的参数来规定我们抽取仿真中某些特定模块和信号的数据。

  特别说明的一点是,正是因为VCD记录了信号的完整变化信息,我们还可以通过VCD文件来估计设计的功耗,而这一点也是其他波形文件所不具备的。Encounter 和 PrimeTime PX (Prime Power)都可以通过输入网表文件,带功耗信息的库文件以及仿真后产生的VCD文件来实现功耗分析。

  因为VCD是Verilog HDL语言标准的一部分,因此所有的verilog的仿真器都要能实现这个功能。因此我们可以在verilog代码中通过系统函数来dumpVCD文件。另外,我们可以通过modelsim 命令来dump VCD文件,这样可以扩展到VHDL中。具体的命令: vcd file myfile.vcd

  vcd add /test/dut/* 这个就生成一个含dut下所有信号的VCD数据信息。

  我们在使用来进行仿真 vsim -vcdstim myfile.com

  test;add wave /*;run -all;

  或在testbench中加入:

  initial

  begin

  $dumpfile("*.vcd");

  $dumpvars(0,**);

  end

  3、fsdb(Fast Signal DataBase) 是Spring Soft (Novas)公司 Debussy / Verdi 支持的波形文件,一般较小,使用较为广泛,其余仿真工具如ncsim,modlesim等等可以通过加载Verdi 的PLI (一般位于安装目录下的share/pli 目录下) 而直接dump fsdb文件。fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就 像对VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置的系统函数来实现 的,fsdb是通过verilog的PLI接口来实现的。$fsdbDumpfile,$fsdbDumpvars等

  Testbench中加入:

  initial

   begin

     $fsdbDumpfile("*.fsdb");

     $fsdbDumpvars(0,**);

   end

  其余波形文件就是各家不同的仿真或调试工具支持的文件类型,互不通用,但基本都可以由VCD文件转换而来(其实就是VCD文件的压缩版,因为只取仿真调试需要的数据,所以文件大小要远小于原始VCD文件),有的还提供与VCD文件的互转换功能。

  4、shm 是Cadence公司 NC verilog 和Simvision支持的波形文件,实际上 .shm是一个目录,其中包含了.dsn和.trn两个文件。

  5、vpd 是Synopsys公司 VCS DVE支持的波形文件,可以用$vcdpluson产生。

 通过使用Cadence NC Verilog 对同一testcase和相同dump波形条件的比较,产生shm文件的时间最短(废话,本来就是一个公司的),产生vcd文件的时间数倍于产生shm和 fsdb的时间。在笔者测试的例子中,产生的fsdb文件为十几MB,shm文件为几十MB,而vcd文件则要几个GB的大小。

  ********************************************************************************

 fsdb的一些用法:

 (1)下面是一个列表,提示了fsdb 的各种可能用法,具体的内容大家可以Google 一把,就都出来了。

fsdbDumplimit - 限制FSDB 文件size 如何使用?

$fsdbDumpvars([<level>], <scope | signal>*)

fsdbDumpfile - 指定FSDB 文件名

$fsdbDumpfile(“<FSDB name>”)

fsdbDumpvars - Dump 指定的变量

fsdbDumpSingle - Dump 指定的信号

fsdbDumpvariable - Dump 指定的VHDL 变量

fsdbSwitchDumpFile - 将dumping 切换到另一个FSDB 文件

$fsdbSwitchDumpFile(“<new FSDB name>”)

fsdbAutoSwitchDumpfile - 限制文件大小并在数据量过大时自动创建新的FSDB 文件

$fsdbAutoSwitchDumpfile(<file size>, “<FSDB name>”,< number of file>)

fsdbDumpflush - Force to Dump Result to FSDB file

fsdbDumpMem - Dump 指定的memory 的内容

$fsdbDumpMem(<reg name>, [<start addr>, [<size>]])

$fsdbDumpon - 打开 FSDB dumping

$fsdbDumpoff - 关闭 FSDB dumping

(1)一个自由开关FSDB 的方法

有时候要运行很长时间的仿真,但是关心的波形却只是其中一小段。这个时候怎么来开关波形,使文件不至于太过庞大呢?这里介绍一个方法。示例仅供参考,大家可以结合实际应用创造出更加多样的变化来。

 initial begin

$timeformat(...);

$fsdbAutoSwitchDumpfile(...);

$fsdbDumpvars(...);

// 条件表达式1

$fsdbDumpoff;

// 条件表达式2

$fsdbDumpon;

End

( 2 )、我们比较常用的一般还有$value$plusargs 这个task,在test_top 中:

$value$plusargs("casename=%s",casename)

通过脚本在run 的时候把casename 传递进去(给vcs/nc SIM_ARG: +casename=$Testcase_name.fsdb)

便于如果同时跑多个testcase 的时候可以同时dumpfsdb,另外就是跳过一些时间开始

dump(SIM_ARG: +time=$start_time)

$value$plusargs("time=%d",skip)

#skip

(3)、project 中每个人关注的module 不同,为了频繁去修改test_top 的dump,一般也会把需要dump 的内容用dumplist

的file 来实现

$fsdbDumpvarsToFile("dump.list");

比如dump.list 内容 #用于注释)

0 test_top

#1 test_top

#0 test_top.dut

#0 test_top.dut.m1

#0 test_top.dut.m2

用的时候一般是在test_top.v 添加相关的语句:

reg [100:0] casename;

integer skip, i;

initial begin

if( $test$plusargs("dumpfsdb") ) begin

if( $value$plusargs("time=%d", skip) )

#skip;

if( $value$plusargs ("casename=%s",casename) )

$fsdbAutoSwitchDumpfile(300, casename, 30);

else

$fsdbAutoSwitchDumpfile(300,"./test_top.fsdb",40);

$fsdbDumpvarsToFile("dump.list");

end

end

 跑仿真的时候,对应的如果要从5000ns(时间单位根timescale 有关)处开始dump 波形,给vcs/nc 的参数

+dumpfsdb +time= 5000 +casename= testcase1.fsdb

其中的testcase1 一般我们都会在脚本处理后跟case 名字关联起来,这样子跑完之后就会从5000 开始dump

testcase1_000.fsdb, testcase1_001.fsdb 这样子,

2. 另外那个dump.list(名字可以随便取)里面的设定就跟平常的设定dump 的层次设置一样了

层次 路径名

0 test_top.dut.m1

例子:

//=================

// dump FSDB wave

interger start_dump;

integer stop_dump;

integer finish_time;

integer result;

reg [8*30*-1 : 0] waveform_name;

initial begin:fsdb_dump

start_dump = 0;

finish_time = 0;

waveform_name = "debussy.fsdb";

if ($test$plusargs("FSDB"))

    begin

      if($test$plusargs("DUMP_FILE"))

         result = $value$plusargs("DUMP_FILE=%s",waveform_name);

         $fsdbAutoSwitchDumpfile(150,waveform_name,100);

         $fsdbDumpflush;

         #start_dump;

//select dump signals

$fsdbDumpvars(0,xx_tb);

    end

end

各种波形文件VCD,VPD,SHM,FSDB生成的方法

标签:body   另一个   vpd   database   创建   详细分析   tab   研究   mat   

热心网友 时间:2022-04-09 16:53

最后修改: 2012 年9 月11 日产品类别: 设计软件产品领域: 仿真/一致性验证产品子领域: ModelSim-Altera(仿真/一致性验证)标题说明VCD文件是一个IEEE 1364-1995标准文件,包含所有调试仿真结果所需要的仿真波形信息。它包含设计中的所有信号,当需要在波形窗口中加入信号时,你不需要重新运行仿真。为了生成一个.vcd文件:1) 在transcript窗口中成功编译和加载设计2) 指定VCD文件名称 - 语法: vcd file <file_name>.vcd3) 使能VCD文件存储需要的节点信号- 语法: vcd add <path_to_instance>/*注意: 这个命令不会存储子节点信号 使能加密节点的VCD会产生告警4) 运行仿真,产生VCD数据库5) 退出仿真- 语法: quit –sim 为了在Modelsim软件的波形窗口中显示.vcd文件中的信号: 1) 在Modelsim中将VCD格式转换为WLF格式- 语法: vcd2wlf <file1.vcd> <file2.wlf>注意: 如果转换失败,很可能是由于不存在的节点路径导致的。请确认在前面第3步中指定的所需节点路径是正确的。 2) 退出当前的Modelsim环境 (Modelsim生成正确VCD文件的要求)3) 打开第1步生成的WLF文件- File菜单 -> Open -> file2.wlf4) 在Object窗口中选择调试所需信号,并把它们添加到波形窗口中去 反馈 此页内容满足用户需要:完全不同意 完全同意 12345 此页很容易被找到: 完全不同意 完全同意 12345 如您有对改善支持解决方案的其他建议,请填于下: Altera并不保证此解决方案能够达到客户的预期目的,并不承担所有的解决方案的使用和信赖的责任。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的家用电器有哪些 美的系列品牌有哪些 现在微波炉哪个好用 美的微波炉系列有哪些 使命召唤4 用狙击枪的那关 使命召唤4撤离辐射区路怎么走 如何保护听力?你有了解过吗? 汇编语言编程有哪些特点呢? 少年的你经典语录带图片 少年的你易烊千玺台词精选 关于中秋节的日记怎么写 炖驴肉的做法大全炖 红洒烩驴肉怎么做? 有折叠帐篷吗 靖远东湾会驴肉的做法 折叠帐篷怎么样,折叠帐篷好吗? dnf奶爸带什么魔法石 淘宝网上有没有户外折叠式双人的帐篷不是儿童,价钱在100以内,把网址发过来。 老夫子是什么意思 户外帐篷哪个品牌好 折叠帐篷多少钱一个 dnf100级奶妈带黑魔法探求者好还是呐喊好 编一个兄弟的故事 折叠帐篷价格是多少? 逆战奶妈怎么搭配装备加成最高 户外折叠帐篷4.5米长的多少钱 DNF芙蕾雅带什么魔法石好 DNF中什么魔法石最好?? 折叠帐篷实体店一般哪里有卖 红眼带什么魔法石好? DNF辅助装备和魔法石带什么好?属性? 有没有dnf奶妈装备的详细搭配分享? 驴肉该怎么烧好吃又滋补 电脑每天关机对电脑好吗? 电脑是每天都关好,还是一直开着 小蜘蛛吃饱后会对老吴说些什么? 电脑是否需要每天关机? 这一段话写了秋天什么的景象,通过这一景象赞美了秋天的雨给人们带来了什么,同? 电脑经常关机好?还是不经常关机更好呢? 电脑经常关好吗? 爱作业大桥外语怎么下载 笔记本电脑每天关机对电脑好吗? 什么APP可以把试卷上的英文去掉 电脑每天关机好还是24小时不关机好 经常开机关机对电脑好吗? 苹果5能下载爱作业吗 我的电脑每天都关机好不好 请问怎么下载那好吧 怎麼下载“那好吧”软件 步步高学习机上怎样下载爱作业 那好吧怎么下载??? 在哪里下载那好吧