linux下的EDA——VCS使用


所用Linux系統為openSUSE64位,軟件為VCS2012

在Linux下對verilogHDL進行功能仿真時非常必要的,下面提供兩種常見方式。

1.腳本方式

1)建立工作文件夾pre_sim,並將tb文件和所有.v文件復制進入此文件夾

mkdir pre_sim


2)修改testbench文件

為輸出波形文件,在testbench文件中加入如下語句

initial begin
    $dumpfile("counter.vcd");  //待輸出的波形文件名,可更改
    $dumpvars(0,u0);	//u0為testbench中實例化的頂層文件名稱,注意根據實際情況修改該名字
end

initial #1000 $finish;  //仿真電路的時間

保存文件

本次所用文件如下

testbench.v(實際文件名為tb_gao.v)

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 #1000 $finish;
endmodule

counter.v

module counter ( out, clk, reset ) ; 
input clk, reset; 
output [3:0] out; 
reg [3:0] out; 

always @(posedge clk or posedge reset) begin
    if (reset) begin
        // reset
        out <= 4'b0;
    end
    else begin
        out <= out + 1'b1;
    end
end

wire clk_out;
clk_half u0(
    .clk_in(clk)
    ,.rst(reset)
    ,.clk_out(clk_out)
    );

endmodule

clk_half.v

module clk_half(
    clk_in
    ,rst
    ,clk_out
    );
input clk_in;
input rst;
output reg clk_out;

always @(posedge clk_in or posedge rst) begin
    if (rst) begin
        // reset
        clk_out <= 0;
    end
    else begin
        clk_out <= !clk_out;
    end
end
endmodule

3)在vcs.scr文件中寫入如下內容

vcs -R tb_gao.v counter.v clk_half.v +v2k +define+RTL_SAIF
其中tb_gao.v為testbench文件,counter.v、clk_half.v為工程文件,注意要把所有的工程.v文件都添加進去

保存文件

4)在終端運行vcs.scr腳本文件

在終端中輸入

source vcs.scr
等待程序編譯,如有報錯則按照位置修改錯誤,直至仿真完成


5)查看波形

在終端中輸入

dve
打開波形文件,File->open database,打開.vcd文件


在Hierarchy界面中選擇要查看的信號,右鍵New Wave View即可




2.命令行方式

1)新建工作文件夾vcs_test,將所有的工程文件與tb文件復制入

testbench中可以沒有在腳本文件中添加的函數,一般的tb文件就可以

2)運行vcs

在終端中輸入

vcs -V -R tb_gao.v counter.v clk_half.v -o simv -gui -debug_pp
-V:Verbose模式,打印vcs在運行的過程中執行的C Compiler匯編器和鏈接器的指令
-R:這個指令是告訴VCS在編譯完成以后直接運行可執行文件,如果你在編譯的時候沒有帶上這個選項,編譯完成以后VCS就退出了,但是你會發現在相應的目錄下產生了以各可執行文件,默認叫simv-o:
-o:給后面的simv文件改名字,如改成counter.simv
-gui:調用VCS的圖形化界面
-debug_pp:看波形必須要在debug模式下
其他一些指令
-q:退出模式;抑制了例如VCS使用的C編譯器/VCS分析源文件、top層、制定的timescale的信息。
-notice:使能更詳細的診斷信息。
-pvalue+parameter_hierarchical_name=value:這個選項是用來改變源文件中parameter參數值的命令。 例如:-pvalue+udut.uchip.ucore. IDLE =0 
-full64:這個選項是為64位的操作系統准備的
-l filename:制定一個VCS產生的log文件名,如果你鍵入了-R選項,那么在編譯和仿真的時候都會將log內容打印到log文件中

3)觀察波形

圖形界面此時應該已經打開,按照如下操作






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM