linux下的EDA——VCS与Verdi仿真

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/moon9999/article/details/76615869

保证VCS与Verdi已经正确安装之后开始仿真,使用代码与之前一致。


对testbench进行增改,在其中加入如下语句:

initial begin
    $fsdbDumpfile("counter.fsdb");
    $fsdbDumpvars(0,u0);
end
含义为产生Verdi所需的fsdb文件,对tb中的所有层的信号均抓取。保存testbench。


右键打开终端,输入以下指令

vcs -V -R tb_gao.v counter.v clk_half.v -o simv -P /home/tshell/programs/synopsys/verdi_2011/share/PLI/vcs/LINUX/novas.tab /home/tshell/programs/synopsys/verdi_2011/share/PLI/vcs/LINUX/pli.a -debug_all

其中前段指令与之前一致。

-P 指定使用的PLI,这里指定verdi下的PLI,因为verdi是需要fsdb文件来显示波形的,而fsdb文件的生成,需要系统函数(如$fsdbDumpfile$fsdbDumpvars等等),而这些系统函数,vcs中是没有的,但是在verdiPLI中有,所以这里需要指定一下。(转)


执行之后会发现已经生成了.fsdb文件和.vcd文件,这两种波形文件都可以被Verdi使用。

在中终端中输入

verdi tb_gao.v counter.v clk_half.v -ssf counter.fsdb
打开Verdi并读入文件,打开图像界面


之后看到如下视图,点开波形界面(事实上如果在上句输入verdi才需要这样操作,如果已读入文件则直接出现波形界面)。



点击get signal...选择要观察的波形即可。



Verdi也可导入vcd波形文件。点击file - open,在filter处键入 *.* ,并点击下拉处,就可以在选择框中看到vcd文件,选择即可。


附1:使用文件

testbench

module counter_testbench () ; 
wire [3:0] out; 
reg clk; 
reg reset; 

counter u0 (
    .out (out[3:0]), 
    .reset (reset), 
    .clk (clk)
    );

initial begin 
    clk = 1'b0;
    forever #10 clk = ~clk;
    end

initial begin 
    reset = 1'b0; 
    #4 reset = 1'b1;
    #4 reset = 1'b0;
end

initial begin
    $dumpfile("counter.vcd");
    $dumpvars(0,u0);
end

initial begin
    $fsdbDumpfile("counter.fsdb");
    $fsdbDumpvars(0,u0);
end

initial #1000 $finish;
endmodule
其他见

http://blog.csdn.net/moon9999/article/details/75283926

附2:波形文件类别(转)

几种波形文件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的参数来规定我们抽取仿真中某些特定模块和信号的数据。


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等。


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


shm 是Cadence公司 NC verilog 和Simvision支持的波形文件,实际上 .shm是一个目录,其中包含了.dsn和.trn两个文件。
 
vpd 是Synopsys公司 VCS DVE支持的波形文件,可以用$vcdpluson产生。

猜你喜欢

转载自blog.csdn.net/moon9999/article/details/76615869
今日推荐