前言
Verilog是一種硬件描述語言(HDL),該語言在Windows上有集成開發(fā)環(huán)境可以使用,如ModelSim,但ModelSim的編輯器不太好用因此筆者萌生了用Sublime Text3來編寫Verilog的想法。下面我們將圍繞著Sublime Text3搭建起一個簡易的IDE, 我將盡量把步驟寫的細(xì)致一點,這將會使整個過程看起來很繁瑣,但這是值得的。
原材料
Sublime Text 3(訪問密碼:a7c6)
icarus-verilog-on-windows(訪問密碼:7528)
說明:Sublime Text是一款功能強大的編輯器,可擴展性非常強;而icarus-verilog是一款Verilog的編譯器,在這里我們使用的版本是iverilog-0.9.7_setup.exe (latest stable release),在Icarus Verilog這個網(wǎng)站上有關(guān)于該編譯器和Verilog語言的更多信息 。
開始搭建
后端
這些步驟非常枯燥乏味。
1. 安裝icarus-verilog-on-windows。請記下安裝目錄,例如我的安裝目錄為F:\iverilog\,(下 ? ? 面我也將以此目錄為例)。注意安裝過程中會有可選擇的項,請勾選上所有項,尤其是 ? ? ? ? ? ? ? ??和?gtkwave相關(guān)的項
2. 打開控制臺,輸入命令iverilog,若顯示’iverilog: no source files.’字樣則執(zhí)行第4步;否則執(zhí) ? ? ?行第3步
3. 配置系統(tǒng)變量。將F:\iverilog\bin\這一路徑加到系統(tǒng)的Path變量中,執(zhí)行第二步,觀察輸出是否 ? ? 為’iverilog: no source files.’
4. 當(dāng)iverilog命令輸出正常后,我們就可以用它來編譯運行verilog源文件了,編寫如下三個文件
文件名:dff.v
//dff modules represents a D type flip-flop
module dff(d,clk,q,qn);
input d,clk;
output q,qn;
reg q,qn;
//Initialize flip-flop outputs
initial begin q=0; qn=1; end
//Change output on positive clock edge
always @(posedge clk)
begin
q <= d;
qn <= !d;
end
endmodule
dff.v
文件名:tester.v
module tester(q,qn,clk,d);
input q,qn;
output clk,d;
reg clk,d;
//Run the test once
initial
begin
clk=0;
//Dump results of the simulation to ff.cvd,important!
$dumpfile(“dff.vcd”);
$dumpvars;
//Generate input signal d
d=0; #9 d=1; #1 d=0; #1 d=1; #2 d=0; #1 d=1; #12 d=0;
#1 d=1; #2 d=0; #1 d=1; #1 d=0; #1 d=1; #1 d=0; # 7 d=1;
#8 $finish;
end
//Generate periodic clock signal
always
begin
#4 clk=!clk;
end
endmodule
tester.v
文件名:testbench.v
`include "tester.v"
`include "dff.v"
//Test bench connects the flip-flop to the tester module
module testbench;
wire clk,d,q,qn;
dff ff1(d,clk,q,qn);
tester tst1(q,qn,clk,d);
endmodule
5. 將上述三個文件放在同一個文件夾下,打開控制臺,進入該目錄,輸入iverilog testbench.v, ? ? 此時應(yīng)當(dāng)沒有任何輸出,再次進入該文件夾,發(fā)現(xiàn)多出了一個名為a.out的文 件,這個文件就是 ? ? 我們編譯testbench.v得到的目標(biāo)文件
6. 在控制臺輸入vvp a.out,輸出’VCD info: dumpfile dff.vcd opened for output.’字樣,此命令 ? ? 是執(zhí)行我們剛剛編譯生成的a.out再次進入該文件夾,發(fā)現(xiàn)多出來了一個名為dff.vcd的文 ? ? ? ? ? ? ? 件,這個文件是我們執(zhí)行a.out后生成的波形文件
7. 在控制臺輸入gtkwave dff.vcd觀察波形。如果發(fā)現(xiàn)沒有波形,不要驚慌,在窗口右側(cè)上選擇某 ? ? 一個module,然后在右下選擇某一個變量,再點擊insert就可以看到輸出的波 形了
到這里,我們已經(jīng)完成了這個簡易的IDE的后端的操作
前端
前端的搭建完全依靠Sublime Text 3豐富的插件。
1. 安裝Sublime Text 3。后面我將其簡稱為ST,就像安裝QQ一樣,一路點next就好了
2. 安裝關(guān)鍵詞高亮插件。用ST打開一個verilog文件(后綴名為.v)中,發(fā)現(xiàn)是沒有高亮顯示的, ? ? ? 按ctrl+shift+p,調(diào)出ST的包管理窗口,輸入install package,再輸入verilog后找到對應(yīng)的 ? ? ? ? 項,回車,等待安裝完成,重啟ST,再次打開一個verilog文件,發(fā)現(xiàn)已經(jīng)可以高亮顯示了
3. 綁定快捷鍵編譯。打開ST,Preference—>Browse Packages—>找到User文件夾,將這個文 ? ? ? 件( 訪問密碼 7f77)放到該文件夾下
4. 再次重啟ST,隨便打開一個verilog文件,按ctrl+b,就可以編譯該文件了,編譯正確輸出ST會 ? 有”[Finished in 0.6s]”類似的輸出,如果出現(xiàn)其他情況,作如下設(shè)置Tools—>Build System- ? ? ? ?>Verilog,其效果和在控制臺輸入iverilog xxx.v是一樣的,都會在文件目錄下生成編譯后的 ? ? ? ?a.out文件
5. 其實,到這一步就可以了,我們可以在ST中編寫編譯好verilog文件后,再打開控制臺運行、查 ? ? 看波形,但是這樣仍然不夠方便,那么可不可以直接在ST中運行、查看波形呢?其實,我們只 ? ? ? 需要在ST中可以運行控制臺命令就可以了,幸運的是,ST為我們提供了這樣的插件。
6. 安裝SublimeREPL插件。同安裝關(guān)鍵詞高亮插件一樣,按ctrl+shift+p,調(diào)出ST的包管理窗 ? ? ? ? 口,輸入install package,再輸入SublimeREPL后找到對應(yīng)的項,回車,等待安裝完成,重啟 ? ? ? ST,然后ctrl+shift+p,輸入sublimeREPLshell(sublimeREPLPowerShell也可以),在新打開 ? ? ? 的ST標(biāo)簽頁中就可以運行cmd命令了(把這個標(biāo)簽頁放在下面是個不錯的選擇,可以參考一下 ? ? ? 下面的圖片)。
至此,所有步驟已經(jīng)結(jié)束。下面是我的簡易IDE截圖
結(jié)語
在簡書的第一篇文章,從自己博客園轉(zhuǎn)過來的。今天放假了,好開心。