|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
VCD,FSDB,WLF波形文件简介 ! `: w( h6 G' \7 H1 K
2 W8 m8 H- _" l, U% }wlf(wave log file)文件
% p$ s6 h" o* M: F% e; C4 Dvsim -view vsim.wlf -do run.do在modelsim中使用命令行打开wlf波形文件,run.do为要查看的波形信号6 |# e& }9 ?3 u# w; M: ~
wlf只能通过modelsim生成以及显示,不是通用的波形文件格式
! M& v1 Z4 h* M' V. \) ^5 H9 B$ c, C9 p* u5 I3 p1 x
VCD(value change dump)文件
8 U9 a \: u6 AVCD是一个通用的波形文件格式,是IEEE1364标准(Verilog HDL语言标准,p325)中定义的一种ASCII文件.
& \' z3 j, _8 K可以通过Verilog HDL的系统函数$dumpfile,$dumpvars等来生成。通过$dumpvars的参数来规定抽取仿真中某个特定模块和信号的VCD数据。3 l4 P/ i( e6 [. N1 `; ?7 A! }
文件主要包含了头信息,变量的预定义和变量值的变化信息。它包含了信号的变化信息,相当于记录了整个仿真的信息。可以这个文件来再现仿真以及显示波形。另外我们还可以通过这个文件来估计设计的功耗。可以在verilog代码中通过系统函数来dump VCD文件。另外,我们也可以通过modelsim 命令来生成VCD文件。具体的命令:
, R, U+ P, \' q- N4 x7 H% jvcd file myfile.vcd //准备在modelsim中生成myfile.vcd文件
6 Q6 D- O! b2 Svcd add /test/dut/* //添加信号
$ Q7 r8 P8 W1 N% |/ ?( D) i' c这个就生成一个含dut下所有信号的VCD数据信息。我们在使用来进行仿真4 K0 l' g& K- ~1 J
9 v4 r7 q- V; i8 q* Kvsim -vcdstim myfile.com test;
) M; J3 M, I- z( madd wave /*;" b6 i+ W9 v, v u
run -all;
' V2 |7 F8 ~9 A% A( ?0 b用法举例(通过仿真器生成):
2 {' |7 {' r0 ]: J: kinitial begin% b; Y$ u. m9 Q5 o" c
$dumpfile("result.dump"); //生成对应的文件: ]+ x2 p! W) O3 K, t, N
$dumpvars[(<levels>), *]; //如何规定单一关注的信号
# V0 D. G$ c; [! ]$ _$dumpvars; //dump所有层次的信号- X- K/ P: ~+ b9 y+ ?6 P a) ^" x
$dumpvars(1, top); //top模块中的所有信号+ I7 N! b: ?- O( X
$dumpvars(0, top); //top模块及其模块中的所有信号/ @7 r/ e2 Y w2 L6 V% Z) _
end4 F7 K- U( ~$ I, w7 k
3 c& n! J; h0 g" z- x. N0 g
Encounter 和 PrimeTime PX (Prime Power)都可以通过输入网表文件,带功耗信息的库文件以及仿真后产生的VCD文件来实现功耗分析。
. [% u0 m* q9 F: F; o$dumpfile("mmu_test_dump.txt");
2 t: M! Z) O, U2 q$dumpvars(1,mmu_test.ret_out); //mmu_test模块下的ret_out信号* {7 W# W; `* B4 `2 n- D, l
$ A: m" f/ y2 L7 j! \) P0 p/ A" R% }' W; R- b! _ w
fsdb(fast signal database)文件
0 }- R) a9 C" i5 rfsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就像对VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。VCD文件使用verilog内置的系统函数来实现的,fsdb是通过verilog的PLI接口来实现的。$fsdbDumpfile,$fsdbDumpvars等
. G3 N* m0 v3 q9 o! h9 STestbench中加入:
% a; ~6 ~8 w1 O" e+ X! w8 _8 _; Ainitial+ g3 a- z3 M" {5 G
begin
- P0 n& u( {6 Q* O5 s9 I$fsdbDumpfile("*.fsdb");
: X" D- P2 L0 z' v Y$fsdbDumpvars(0,**);( J% Q, h1 i& e
end |
|