请教fsdb多种波形产生电路命令的问题

仿真是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 来生成波形,通过$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 -
add wave /*;run -
或在testbench中加入:
$dumpfile("*.vcd");
$dumpvars(0,**);
&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中加入:
&$fsdbDumpfile("*.fsdb");
&$fsdbDumpvars(0,**);
&其余波形文件就是各家不同的仿真或调试工具支持的文件类型,互不通用,但基本都可以由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
// 条件表达式2
( 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)
(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]
integer skip,
initial begin
if( $test$plusargs("dumpfsdb") ) begin
if( $value$plusargs("time=%d", skip) )
if( $value$plusargs ("casename=%s",casename) )
$fsdbAutoSwitchDumpfile(300, casename, 30);
$fsdbAutoSwitchDumpfile(300,"./test_top.fsdb",40);
$fsdbDumpvarsToFile("dump.list");
&跑仿真的时候,对应的如果要从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_
integer stop_
integer finish_
reg [8*30*-1 : 0] waveform_
initial begin:fsdb_dump
start_dump = 0;
finish_time&= 0;
waveform_name = "debussy.fsdb";
if ($test$plusargs("FSDB"))
&&&&&&if($test$plusargs("DUMP_FILE"))
&&&&&&&&&result&= $value$plusargs("DUMP_FILE=%s",waveform_name);
&&&&&&&&&$fsdbAutoSwitchDumpfile(150,waveform_name,100);
&&&&&&&&&$fsdbD
&&&&&&&&&#start_
//select dump signals
$fsdbDumpvars(0,xx_tb);
阅读(...) 评论()您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
使用debussy查看modelsim生成的波形文件以及简单仿真环境的建立.pdf11页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:120 &&
使用debussy查看modelsim生成的波形文件以及简单仿真环境的建立.pdf
你可能关注的文档:
··········
··········
oihjohogilhop
正在加载中,请稍后...请教fsdb波形产生命令的问题_百度知道自己搞定了,少加了access命令
[通过 QQ、MSN 分享给朋友]
欢迎访问 TI 热门产品应用指南2016第三届物联网大会
智能后视镜产品方案对接会
中国LED智能照明高峰论坛
第三届·无线通信技术研讨会
第二届·中国IoT大会
ETFo智能安防技术论坛
移入鼠标可放大二维码
新波形产生分析结果 - 功率分析与挑战:新超速功率估计方法
来源:电子发烧友网原创
作者:秩名日 18:04
[导读] 分析结果 准确性 新的波形产生结果,与传统仿真生成的门级波形进行比较。新流程产生的门级波形,与传统方法生成的波形,相同或者几乎相同。下面对
  分析结果
  准确性
  新的波形产生结果,与传统仿真生成的门级波形进行比较。新流程产生的门级波形,与传统方法生成的波形,相同或者几乎相同。下面对五个案例进行分析和比较,结果如下:
  1 在设计中从零时间开始,包括记忆体,使用新的流程设计,导致产生与传统零延迟门级流程完全相同的波形。
  2 重复之前的设计比较,包括记忆体部分,并取得相同的实验结果。
  3 在设计中使用新的流程,包括记忆体部分,在一个特定的时间点(非零点)产生波形,随着具体时间模拟倾斜波形,产生与门级仿真相同的波形。
  4 与记忆体部分,一起重复之前的设计比较,关于门级仿真新流程,几乎实现了数据100%的准确性。两者唯一的区别是,内存输出到第一个样本的路径不同。但这点小差异并没有影响功率分析结果。在添加硬件宏输出后,比如内存数据输出引脚,到相应的映射文件,这种方法也可以取得100%准确性。
  5 在设计中使用新的流程,驱动唯一必要的输入时钟,并测试模式引脚与特殊控制,对所有的&触发器-触发器&路径产生与门级模拟相同的波形。只有从输入到第一个样本之间的路径是不相关的。在一个大型设计中会包含许多这样的路径,路径的相关性可高达99%。这种情况是典型的,新一代功率估计选择方法,使用post-place和路由表生成最终波形。
  表现结果
  实例所产生的门级波形结果和功率性能估计包括:
  1 门级环境生成的波形块(预置端点和线路)约有1.4百万个位置点,1000个输入端口,100us(大概40K个周期)大约花费60分钟的时间。总功率估计时间为2个小时,包括加载数据库到PrimeTime PX,生成映射文件,运行工具,从门级波形产生SAIF文件,并使用PrimeTime计算功率消耗。
  2 一个时钟波形大约生成1.6百万个位置元素:400us(大概150K个周期)在90分钟内完成。整个功率估计流程大约执行2.5个小时。
  3 大约花一个小时,时钟波形产生约1.4百万个位置元素。利用 &点- 路径&网表和使用Specman存根代替若干CPU在RTL环境下执行生成的RTL FSDB库进行发送。在前一波形块中,&点 & 路径&网表的功率估计,在三个项目周期后被弃用。因为项目要求STUB接口和&点 & 路径&接口的匹配属于过渡阶段。
  更多的自动化
  设计团队可以进一步自动化和扩展新门级波形生成分析能力,通过使用思源的verdi3自动化调试系统进入流程,然后使用Verdi互操作性应用程序(VIA)平台。上述整个流程可以与Verdi的图形用户界面和数据库基础集成。以便于从下游功率估计工具包含结果。这使得设计团队把相关功率特性与具体的设计实例关联起来,从而大大地提高了可视化与精度的分析。
RTL相关文章
RTL相关下载
CSR相关文章
CSR相关下载
Springsoft相关文章
Springsoft相关下载
技术交流、积极发言! 发表评请遵守相关规定。
现在的中国厂商已经不仅仅满足于做白牌厂商,特别是在物联网、创客风潮来袭之时,都期望以之前积累的制造技术与经验抢占风口好位置,正纷纷建立起...
据悉,风力发电机根据运行特征和运行技术一般分为恒速风力发电机和变速风力发电机。恒速风力发电系统具有结构简单、成本低、过载能力强以及运行可...
创新实用技术专题
版权所有 & 深圳华强聚丰电子科技有限公司

我要回帖

更多关于 波形产生器作用 的文章

 

随机推荐