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

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

最后修改: 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并不保证此解决方案能够达到客户的预期目的,并不承担所有的解决方案的使用和信赖的责任。

波形文件和仿真结果波形文件的差别有以下几点,具体如下:

1.打开命令不同

波形文件观察波形时,结束时都会生成一个*.wlf的文件(默认是vsim.wlf),可以用modelsim直接打开vsim -view vsim.wlf -do run.do。

仿真结果波形文件包含了信号的变化信息,就相当于记录了整个仿真的信息,我们可以用这个文件来再现仿真,也就能够显示波形,但是波形文件会很大,使用VCD打开。

2.功耗不同

波形文件通过Encounter 和 PrimeTime PX (Prime Power)都可以通过输入网表文件,带功耗信息的库橘迅文件以及仿真后产生的波形文件来实现功耗分析。

仿真结果波形文件记录了信号的完整变化信息,我们还可以通过VCD文件来估计设计的功耗,而这一点也是其他波形文件所不具备的。

3.数据量不同

波形文件数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置埋伍帆的系统函数来实现 的,fsdb是通过verilog的PLI接口来实现的。

仿真结果波形文件产生shm文件的时间最短(废话,本来就是一个公司的),产生vcd文件的时间数倍于产生shm和 fsdb的弯雹时间。在笔者测试的例子中,产生的fsdb文件为十几MB,shm文件为几十MB,而仿真结果波形文件则要几个GB的大小。

常用的波形文件有如下三种,

1、trn文件,Cadence simvision支持,通过巧芦如下方式产生

$shm_open(“./wave”)

//产生你所需要dump

波形的文件夹

$shm_probe(bench_top,”AS”)

//bench_top为举例,即你所需要dump的层

$shm_close

2、fsdb文件余知,debussy/verdi支持,通过如下方式产生

$fsdbDumpfile(“./wave/top.fsdb”)

$fsdbDumpvars(5,bench_top)

//从bench_top开始,dump 5层;

$fsdbDumpoff

3、vcd文件,该文件通用性更广,可以转换为任意格式,可惜文件太大,产生方式如下,

$dumpfile(“./wave/top.vcd”)

$dumpvars(5,bench_top)

$dumpoff

当然也可以同时产生,或者通过nc

option指定,

譬如在option中增加+TRN_DUMP/+VCD_DUMP/+FSDB_DUMP等

在.v文件中去解析这样的strings

initial begin

start_dump =10

stop_dump =3000000

finish_time=3000100

#0

begin

if($test$plusargs(“VCD_DUMP”))

$dumpfile(“./wave/top.vcd”)

if($test$plusargs(“TRN_DUMP”))

$shm_open(“./wave”)

if($test$plusargs(“FSDB_DUMP”))

$fsdbDumpfile(“./wave/top.fsdb”)

end

#(start_dump)

begin

if($test$plusargs(“竖宽消VCD_DUMP”))

$dumpvars(5,bench_top)

if($test$plusargs(“TRN_DUMP”))

$shm_probe(bench_top,”AS”)

if($test$plusargs(“FSDB_DUMP”))

$fsdbDumpvars(5,bench_top)

end

#(stop_dump-start_dump)

begin

if($test$plusargs(“VCD_DUMP”))

$dumpoff

if($test$plusargs(“TRN_DUMP”))

$shm_close

if($test$plusargs(“FSDB_DUMP”))

$fsdbDumpoff

end

#(finish_time-stop_dump)

$stop

$finish

end

各种波形文件的打开方式

TRN

simvision ./wave/wave.trn

-input

../../signal_list/simvision.svcf

FSDB

debussy -f $FileList.f

-autoalias -ssf ./wave/top.fsdb -top

bench_top

-sswr

../../signal_list/top.rc

VCD

该文件需要被转换为trn或fsdb文件,然后打开;

转fsdb文件:

vfast ./wave/top.vcd -o ./wave/top.fsdb

&&

debussy -f $FileList.f

-autoalias -ssf ./wave/top.fsdb -top

bench_top

-sswr

../../signal_list/top.rc

转trn文件:

simvisdbutil -CVTMVL9 -OVERWRITE

-LOGFILE wolf.log -OUTPUT wave.trn top.vcd

&&

simvision ./wave/wave.trn

-input

../../signal_list/simvision.svcf


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12139217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存