VCS與Verdi聯(lián)仿,簡要工程模板,持續(xù)更新中…
一、背景
- 學(xué)習(xí)verilog,故用vcs來編譯verilog,用verdi來查看波形。
- 提供一套簡要verilog工程模板去執(zhí)行教程中代碼,并分析波形。
二、編寫工程模塊
- 建立工程在temp文件夾下新建文件夾/rtl、/sim、/tb,如下:
? CSDN cd temp
? temp ls
rtl sim tb
- 在/rtl文件夾下新建兩個.v文件: template.v和timescale.v ,為模板rtl代碼。
? rtl ls
template.v timescale.v
- 在/tb文件夾下新建.sv文件:tb_template.sv,為test bench文件。
? tb ls
tb_template.sv
- 在/sim文件夾下新建Makefile、runtemp和file.f文件,來進(jìn)行vcs編譯以及verdi看波形。
? sim ls
Makefile file.f runtemp
其中Makefile中的腳本為:
all:com verdi
com:
vcs -R -full64 +v2k -fsdb +define+FSDB -sverilog -f file.f -l run.log -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed
sim:
./simv -l sim.log
run_dve:
dve -vpd vcdplus.vpd &
clean:
rm -rf *.vpd csrc *.log *.key *.vdb sim* DVEfiles *.conf *.rc verdilog verdiLog
verdi:
verdi
其中Makefile為makefile腳本寫的自動編譯工具。runtemp為寫的簡易自動編譯工具,主要給沒有安裝makefile或者gcc-4.8的環(huán)境,runtemp的內(nèi)容是:
vcs -R -full64 +v2k -fsdb +define+FSDB -sverilog -f file.f -l run.log
#verdi
4.1 使用Makefile腳本來進(jìn)行自動編譯。
方法:在文件夾/sim下運(yùn)行命令 make
就會編譯完成,并且生成波形文件,再用verdi查看即可。由vcs編譯和verdi打開產(chǎn)生的文件可以用 make clean
清除掉。
4.2 使用簡易編譯工具runtemp進(jìn)行編譯的命令為:source runtemp
至此,簡要工程模板配置完成。
三、使用工程模板
模板使用方法簡要框圖:
設(shè)計(jì)一個如下圖的四選一選擇器,用模板去編譯和仿真看波形來驗(yàn)證模板是否正確。
- 選擇器的rtl代碼,把
mux4to1
選擇器的代碼復(fù)制到模板的/rtl/template.v文件中:
module mux4to1(
input [1:0] sel ,
input [1:0] p0 ,
input [1:0] p1 ,
input [1:0] p2 ,
input [1:0] p3 ,
output [1:0] sout);
reg [1:0] sout_t ;
always @(*) begin
if (sel == 2'b00)
sout_t = p0 ;
else if (sel == 2'b01)
sout_t = p1 ;
else if (sel == 2'b10)
sout_t = p2 ;
else
sout_t = p3 ;
end
assign sout = sout_t ;
endmodule
- 四選一選擇器的testbench代碼,把其復(fù)制到模板的/tb/tb_template.sv文件中:
`timescale 1ns/1ps
module test ;
reg [1:0] sel ;
wire [1:0] sout ;
initial begin
sel = 0 ;
#20 sel = 3 ;
#20 sel = 1 ;
#20 sel = 0 ;
#20 sel = 2 ;
end
mux4to1 u_mux4to1 (
.sel (sel),
.p0 (2'b00), //path0 are assigned to 0
.p1 (2'b01), //path1 are assigned to 1
.p2 (2'b10), //path2 are assigned to 2
.p3 (2'b11), //path3 are assigned to 3
.sout (sout));
//finish the simulation
always begin
#100;
if ($time >= 1000) $finish ;
end
`ifdef FSDB
initial begin
$fsdbDumpfile("tb_template.fsdb");
$fsdbDumpvars;
end
`endif
endmodule
其中,每個自己的tb一定要保留如下片段,來保存仿真產(chǎn)生的信號波形,然后才能用verdi打開。
`ifdef FSDB
initial begin
$fsdbDumpfile("tb_template.fsdb");
$fsdbDumpvars;
end
`endif
接下來編譯修改后的模板工程,打開文件夾/sim
,在sim文件夾下輸入make
,在sim文件下產(chǎn)生這些文件:
其中,tb_template.fsdb文件就是verdi能打開的波形文件了。
然后通過下圖中的步驟用verdi打開代碼文件。
再按照如下步驟打開波形文件:
最后按如下步驟查看波形:
四、仿真結(jié)果
如下結(jié)果顯示四選一選擇器正確,故也得出模板工程正確。文章來源:http://www.zghlxwxcb.cn/news/detail-662041.html
五、工程下載地址
模板工程下載地址文章來源地址http://www.zghlxwxcb.cn/news/detail-662041.html
到了這里,關(guān)于VCS與Verdi聯(lián)仿,簡要萬能工程模板,持續(xù)更新中...的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!