當(dāng)前位置 主頁(yè) > 技術(shù)大全 >
而在Linux操作系統(tǒng)中,Iverilog作為一款輕量級(jí)、高效的Verilog仿真工具,憑借其開(kāi)源和易于使用的特性,成為了許多硬件工程師和愛(ài)好者的首選
本文將詳細(xì)介紹如何在Linux環(huán)境下,利用Iverilog進(jìn)行Verilog代碼的仿真,并通過(guò)GTKwave波形查看器來(lái)可視化仿真結(jié)果
一、環(huán)境準(zhǔn)備 首先,我們需要在Linux系統(tǒng)上安裝Iverilog和GTKwave
以Ubuntu 22.04 LTS為例,可以通過(guò)以下命令進(jìn)行安裝: sudo apt install iverilog sudo apt install gtkwave 安裝完成后,我們可以通過(guò)以下命令來(lái)驗(yàn)證安裝是否成功: iverilog -V gtkwave -V 如果系統(tǒng)返回了相應(yīng)的版本信息,說(shuō)明安裝成功
二、Iverilog的使用 Iverilog是Icarus Verilog的簡(jiǎn)稱(chēng),它是一個(gè)以編譯器形式工作的Verilog仿真工具
它將Verilog源代碼編譯成一種中間格式(通常是.vvp文件),然后可以通過(guò)Iverilog附帶的vvp命令來(lái)執(zhí)行這個(gè)中間格式,生成仿真結(jié)果
1. 編寫(xiě)Verilog文件 在進(jìn)行仿真之前,我們需要編寫(xiě)Verilog源代碼文件
例如,我們可以編寫(xiě)一個(gè)簡(jiǎn)單的加法器模塊(add.v)和一個(gè)測(cè)試平臺(tái)(test_tb.v)來(lái)測(cè)試這個(gè)加法器
add.v: ilog module add( input sclk, inputrst_n, input【7:0】 data1_i, input【7:0】 data2_i, outputreg 【7:0】data_o ); always@(posedge sclk or negedgerst_n) begin if(~rst_n) data_o <= 8b0; elsedata_o <= data1_i + data2_i; end endmodule test_tb.v: ilog `timescale 1ns / 1ps module test(); reg clk; regrst_n; reg【7:0】 data1_i; reg【7:0】 data2_i; wire【7:0】 data_o; initial begin $dumpfile(test.vcd); $dumpvars(0, test); clk = 0; forever5 clk = ~clk; rst_n = 0; data1_i = 0; data2_i = 0; #100 rst_n = 1; repeat(2@(posedgeclk) begin data1_i <= data1_i + 8d1; data2_i <= data2_i + 8d2; end #500 $stop; end addu_add( .sclk(clk), .rst_n(rst_n), .data1_i(data1_i), .data2_i(data2_i), .data_o(data_o) ); endmodule 2. 編譯與仿真 編寫(xiě)完Verilog文件后,我們需要使用Iverilog進(jìn)行編譯
編譯命令如下: iverilogtest_tb.v add.v -o test.vvp 這條命令會(huì)將test_tb.v和add.v兩個(gè)文件編譯成一個(gè)名為test.vvp的中間文件
編譯完成后,我們可以使用vvp命令來(lái)運(yùn)行這個(gè)中間文件,并生成仿真結(jié)果(通常是.vcd文件): vvp -n test.vvp -lxt2 這條命令會(huì)運(yùn)行test.vvp文件,并在終端上顯示仿真時(shí)的文字信息
同時(shí),它會(huì)在當(dāng)前目錄下生成一個(gè)名為test.vcd的波形數(shù)據(jù)文件
三、使用GTKwave查看波形 GTKwave是一款免費(fèi)的波形查看器