Verilog是一种硬件描述语言(HDL),该语言在Windows上有集成开发环境可使用,如ModelSim,但ModelSim的编辑器不太好用所以笔者萌生了用Sublime Text3来编写Verilog的想法。下面咱们将围绕着Sublime Text3搭建起一个简易的IDE, 我将尽可能把步骤写的细致一点,这将会使整个过程看起来很繁琐,但这是值得的。前端
说明:Sublime Text是一款功能强大的编辑器,可扩展性很是强;而icarus-verilog是一款Verilog的编译器,在这里咱们使用的版本是iverilog-0.9.7_setup.exe (latest stable release),在Icarus Verilog这个网站上有关于该编译器和Verilog语言的更多信息 。 shell
这些步骤很是枯燥乏味。 windows
文件名:dff.v 后端
1 //dff modules represents a D type flip-flop 2 module dff(d,clk,q,qn); 3 input d,clk; 4 output q,qn; 5 reg q,qn; 6 //Initialize flip-flop outputs 7 initial begin q=0; qn=1; end 8 //Change output on positive clock edge 9 always @(posedge clk) 10 begin 11 q <= d; 12 qn <= !d; 13 end 14 endmodule
文件名:tester.v编辑器
1 module tester(q,qn,clk,d); 2 input q,qn; 3 output clk,d; 4 reg clk,d; 5 //Run the test once 6 initial 7 begin 8 clk=0; 9 //Dump results of the simulation to ff.cvd,important! 10 $dumpfile(“dff.vcd”); 11 $dumpvars; 12 //Generate input signal d 13 d=0; #9 d=1; #1 d=0; #1 d=1; #2 d=0; #1 d=1; #12 d=0; 14 #1 d=1; #2 d=0; #1 d=1; #1 d=0; #1 d=1; #1 d=0; # 7 d=1; 15 #8 $finish; 16 end 17 //Generate periodic clock signal 18 always 19 begin 20 #4 clk=!clk; 21 end 22 endmodule
文件名:testbench.v ide
1 `include "tester.v" 2 `include "dff.v" 3 //Test bench connects the flip-flop to the tester module 4 module testbench; 5 wire clk,d,q,qn; 6 dff ff1(d,clk,q,qn); 7 tester tst1(q,qn,clk,d); 8 9 endmodule
5. 将上述三个文件放在同一个文件夹下,打开控制台,进入该目录,输入iverilog testbench.v,此时应当没有任何输出,再次进入该文件夹,发现多出了一个名为a.out的文 件,这个文件就是咱们编译testbench.v获得的目标文件 网站
6. 在控制台输入vvp a.out,输出’VCD info: dumpfile dff.vcd opened for output.’字样,此命令是执行咱们刚刚编译生成的a.out再次进入该文件夹,发现多出来了一个名为 dff.vcd的文件,这个文件是咱们执行a.out后生成的波形文件ui
7. 在控制台输入gtkwave dff.vcd观察波形。若是发现没有波形,不要惊慌,在窗口右侧上选择某一个module,而后在右下选择某一个变量,再点击insert就能够看到输出的波 形了spa
到这里,咱们已经完成了这个简易的IDE的后端的操做 插件
前端的搭建彻底依靠Sublime Text 3丰富的插件。
个人大部分文章首发在知乎专栏:关于计算机的一些事,欢迎你们关注。