1. 程式人生 > >VCS+Verdi 聯合模擬-----FPGA開發

VCS+Verdi 聯合模擬-----FPGA開發

VCS+Verdi 聯合模擬-----FPGA開發

簡述

上篇文章記了VCS和Verdi的安裝和破解,這篇文章
主要記的是VCS和Verdi的聯合模擬。重點當然是配置vcs和verdi 的一大堆引數。因為我也是初學者,所以用的到引數並不多,之後可能回遇到更高深的用法,到時候再補充。這裡主要是完成一個38譯碼器的模擬。
注:上篇筆記中的lmg_vcs每次關機重啟都會失效,需要重新lmg_vcs啟用,也可以加到啟動項中。啟用之後,斷網執行模擬會更加流暢。

模擬步驟

1. 開發資料夾結構

#模擬檔案
–decoder38_tb.v
#RTL級或行為級程式碼
–decoder38.v
#支援vcs或verdi -f引數,寫著.v檔案的路徑
–filelist.f
#Makefile 檔案用於編寫vcs、verdi、clean等命令
–Makefile

2. 檔案內容

下面內容僅供測試。
我的Makefile內容,可根據需要自由更改。

vcs:
	vcs \
	-full64 \ #vcs以64位執行
	-f filelist.f \	#如不使用-f引數,可以替換成每個檔案的路徑。filelist.f也就是將所有的需要模擬檔案集合。但模擬檔案一定要放在第一個位置
	-debug_all \	#不加此引數, 在生成fsdb波形檔案時可能會出錯。
	+define+DUMP_FSDB \	#定義巨集,也可在模擬檔案中新增,用於生成fsdb波形檔案
	-P /home/chenqw/synopsys/verdi_2016.06-1/share/PLI
/VCS/LINUXAMD64/novas.tab \ #用於生成fsdb波形檔案,修改成自己的路徑 /home/chenqw/synopsys/verdi_2016.06-1/share/PLI/VCS/LINUXAMD64/pli.a \ #用於生成fsdb波形檔案,修改成自己的路徑 | tee vcs.log #輸出模擬資訊,並儲存到vcs.log檔案 ./simv #最終生成fsdb 檔案。 verdi: verdi \ +v2k \ -sverilog \ -f filist.f \ -ssf test.fsdb & #模擬檔案產生的波形檔案 clean: rm -rf `ls | grep -v "Makefile"|grep -v "filelist.f" | grep -v "\.v"`
#清除模擬過程檔案 clean_all: rm -rf `ls | grep -v "Makefile"|grep -v "filelist.f"` #清除模擬過程檔案和設計檔案.v

decoder38_tb.v

`timescale 1ns/1ns

module decoder38_tb();

reg[2:0] indata;
wire[7:0] out_data;

code code_1(.in(indata),.led(out_data));

initial 
begin
	
	indata = 3'b000;
	#10;
        indata = 3'b001;
        #10;
        indata = 3'b010;
        #10;
        indata = 3'b011;
        #10;
        indata = 3'b100;
        #10;
        indata = 3'b101;
        #10;
        indata = 3'b110;
        #10;
        indata = 3'b111;
        #10;
        indata = 3'b000;
        #10;
end

`ifdef DUMP_FSDB
initial
begin
	$fsdbDumpfile("test.fsdb");	#產生波形檔案
	$fsdbDumpvars(0,decoder38_tb);
	$fsdbDumpon;
	

end
`endif


endmodule

decoder38.v

`timescale 1ns/1ns

module code(
in,
led);
input in;
output led;
wire[2:0] in;
reg[7:0] led;

[email protected](*) 
	case(in) 
		3'b000: led = 8'b00000001; 
		3'b001: led = 8'b00000010; 
		3'b010: led = 8'b00000100; 
		3'b011: led = 8'b00001000; 
		3'b100: led = 8'b00010000; 
		3'b101: led = 8'b00100000; 
		3'b110: led = 8'b01000000; 
		3'b111: led = 8'b10000000; 
		default: led = 8'b00000000;
	endcase 
endmodule

filelist.f

/home/chenqw/HDK/design/decoder38_tb.v	#模擬檔案在第一位
/home/chenqw/HDK/design/decoder38.v

3. 模擬方式

  1. vcs+dve
    在執行make vcs命令後,同文件夾下會產生過程檔案,其中.vpd檔案適用於輸入到dve中,實現波形顯示。但由於這種vpd檔案較大,導致模擬速度慢。推薦下面一種模擬方法。
    command:
    ./simv -gui
    在這裡插入圖片描述
    在這裡插入圖片描述

  2. vcs+verdi
    這時候,前面千辛萬苦得來的fsdb檔案就派上用場的。使用make vcs命令後,同文件夾下也會生成fsdb檔案。由於fsdb檔案精簡,模擬速度較快。
    使用make verdi命令,可以觀察輸出波形。
    在這裡插入圖片描述
    在這裡插入圖片描述

結語

祝諸君成功。下篇筆記預定綜合工具安裝。