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

对于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来显示。不是一个通用的文件文件格式。

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

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,fsdbDumpfile,fsdbDumpvars等

Testbench中加入:

initial

begin

$fsdbDumpfile("*.fsdb");

$fsdbDumpvars(0,**);

end

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

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

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 )、我们比较常用的一般还有valuevalueplusargs 这个task,在test_top 中:

valuevalueplusargs("casename=%s",casename)

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

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

dump(SIM_ARG: +time=$start_time)

valuevalueplusargs("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( testtestplusargs("dumpfsdb") ) begin

if( valuevalueplusargs("time=%d", skip) )

#skip;

if( valuevalueplusargs ("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 (testtestplusargs("FSDB"))

begin

if(testtestplusargs("DUMP_FILE"))

result = valuevalueplusargs("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生成的方法相关推荐

  1. 各种波形文件vcd,vpd,shm,fsdb仿真工具中所需要的

    文章目录 前言 一.Modelsim -WLF (Wave Log File) VCD(Value Change Dump) 二.VCS -vpd(Value Change Dump) 三.Debus ...

  2. fsdb和vpd格式波形生成并查看

    fsdb和vpd格式波形生成并查看 1.fsdb格式 (irun + verdi) 2.vpd格式 (vcs+dve) 3.参考 1.fsdb格式 (irun + verdi) 首先,tb文件里添加 ...

  3. 在Eclipse中生成API方法

    在Eclipse中生成API方法 百度文库 http://wenku.baidu.com/view/bef8e60c79563c1ec5da714c.html (1)在代码里用javadoc注释 pa ...

  4. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略

    Python语言学习:利用Python随机生成那些事之随机生成使用方法.案例应用之详细攻略 目录 案例应用 1.随机生成指定区间内的某一值 案例应用 1.随机生成指定区间内的某一值 使用说明:给定区域 ...

  5. 直播 | 清华大学关健:利用自监督学习的开放端故事生成评价方法

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  6. 【ArcGIS风暴】ArcGIS+CASS点云(.las)数据生成等高线方法案例精解

    本文讲解基于点云LAS数据,在ArcGIS+CASS平台上生成等高线的方法. 扩展阅读: 什么是点云?什么是Las数据集?一篇文章告诉你点云数据的奥秘 ArcGIS+CASS点云(.las)数据生成等 ...

  7. 【ArcGIS风暴】ArcGIS平台上点云(.las)数据生成等高线方法案例精解

    las是点云数据常见的存储格式,摄影测量和激光雷达数据均采用此格式,点云数据常用来生成等高线,地籍测量,土方量计算等.本文讲解在ArcGIS平台上生成等高线并转换为dwg格式供CASS使用. 扩展阅读 ...

  8. Mybatis生成器插件扩展,生成findInSet方法

    Mybatis生成器插件扩展,生成findInSet方法 public Criteria andNameFindInSet(String value) {addCriterionPattern(&qu ...

  9. php yii把pdf转成图片,yii实现图片上传及缩略图生成的方法

    这篇文章主要介绍了yii实现图片上传及缩略图生成的方法,详细分析了图片的上传及缩略图的生成原理与实现方法,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了利用yii框架来实现图片上传功能并在上传 ...

最新文章

  1. 一个简单的程序来使用WiredTiger 存储引擎
  2. BigDecimal 使用详解
  3. 网络推广策略带你了解网站地图Sitemap的作用是什么?
  4. sql 不等于空_SQL的简单查询
  5. 使用script命令自动录屏用户操作
  6. arp攻击源代码(收集)
  7. 【数据结构与算法】【算法思想】动态规划
  8. Struts2之初识篇(一)——与struts的区别和基本配置
  9. druid mysql 乱码_2017.02.21   Mysql 字符集 乱码 排错过程
  10. HMI 排行中有哪些触摸屏品牌
  11. 怎么完全卸载赛门铁克_symantec卸载方法
  12. 济南市全国计算机二级,济南市2019上半年计算机二级考试报名时间|网上报名入口【12月19日9:00开通】...
  13. 未来战警 中的计算机词汇,计算机常用单词词汇
  14. splunk篇5-导出csv文件中文乱码
  15. 唐朝诡事录之西行官宣
  16. 北大2021年计算机分数分数线,北京大学2021年考研复试基本分数线已发布
  17. mount时发生错误:wrong fs type, bad option, bad superblock on
  18. MySQL 数据库连接
  19. Docker 磁盘空间使用分析与清理 解决磁盘空间不足
  20. 几款浏览器兼容性测试工具

热门文章

  1. 核磁共振测试谱图解析(一)
  2. MBA-day3逻辑学-假言推理
  3. java开发10k到12k面试问题整理
  4. 总会用到的系列6:关于持续学习的一些思考
  5. servlet了解掌握
  6. C++学习——共勉(一)
  7. JavaWeb电商 秒杀业务分析
  8. 三七花和三七粉的区别到底在哪里?
  9. 社区发现算法SCAN(python实现)
  10. 刘迎春:出走到回归,丈量人生的高度与深度