本学期开设了verilog课程,本想着随便写写代码糊弄一下考试,但是光写不进行实际操作也是空谈。于是去网上百度了模拟仿真软件——嘶!一个软件20G,你怎么不杀了我?于是我只好寻求比较轻量级的软件来解决本学期的课程。
经过筛选,最后我确定了 vsCode+Icarus Verilog+GTKwave的组合形式。

代码编写部分

使用vsCode来编写代码

01vscode下载

进入vsCode官网进行下载。

02安装verilog插件

vsCode本身是不支持verilog的,需要去下载插件来进行语法高亮的显示。

安装完成以后会有一些语法高亮

具体一些特性可以参考插件的描述或者点击这里查看该插件的特性。当然,如果想进行代码的自动规范化和自动生成测试代码也可以搜索相应的插件。当然效果的话…………当我没说。

自动生成测试代码(不推荐使用):链接

代码的编辑器已经搞好了,然后就是模拟仿真。

模拟仿真部分

Icarus Verilog和GTKwave用来进行模拟仿真

01软件下载

因为Icarus Verilog已经包含了GTKwave,所以只进行Icarus Verilog的下载就好。点击这里跳转到Icarus Verilog的下载页面即可。我下载的为iverilog-v11-20190809-x64_setup.exe [17.0MB].
推荐下载.exe结尾的,因为安装过程可以直接把环境变量配置好

02基本使用

为了便于演示,先贴上我上次作业代码

功能代码,文件名:counter.v

module counter(out, clk, enable,reset);
output[7:0]  out;
input clk, reset, enable;
reg[7:0] out;
always @ (posedge clk) beginif(reset) beginout <= 8'b0;end else if(enable) beginout <= out + 1;end
end
endmodule

测试代码,文件名:counter_tb.v

`timescale 1ns/1ns
module counter_tb;
reg clk, enable, reset;
wire [7:0] out;
counter c1(.out(out), .clk(clk), .enable(enable), .reset(reset));initial beginenable = 1;endinitial beginclk             = 0;forever #10 clk = ~clk;endinitial beginreset = 1;#15 reset = 0;#1000 $finish;endinitialbegin            $dumpfile("counter_tb.vcd");        //生成的vcd文件名称$dumpvars(0, counter_tb);    //tb模块名称end
endmodule

测试代码里下面这部分是我模拟仿真时加上去的

    begin            $dumpfile("counter_tb.vcd");        //指定VCD文件的名字为counter_tb.vcd,仿真信息将记录到此文件$dumpvars(0, counter_tb);    //指定层次数为0,则counter_tb模块及其下面各层次的所有信号将被记录end

如果用Icarus Verilog+GTKwave进行仿真的话,这两行代码时必须的。

1.iverilog的使用。

01)在代码存储路径打开cmd

在绿框中键入cmd可快速进入当前目录的命令行界面。

2)在命令行中输入

iverilog -o "counter_tb.vvp" counter_tb.v counter.v
  • -o 指定输出文件名,这里为counter_tb.vvp
    以上命令会编译成一个vvp文件

3)然后再次在命令行输入

vvp counter_tb.vvp

vvp开始仿真,会生成一个在测试文件中通过$dumpfile("counter_tb.vcd")指定的文件(counter_tb.vcd)。
注意:如果上面的测试文件你没有加入我后加入的那几行代码,则不会出现vcd文件。

2.GTKwave使用

在命令行中输入

gtkwave counter_tb.vcd

将会打开GTKwave软件


按照以上顺序选择你所需要显示的信号。


3.编写脚本*

每次都在命令行输入会很麻烦,你可以把以上命令封装到一个批处理文件中

  1. 新建批处理文件(windows可以先新建text文件再把后缀改成bat)
  2. 在里面输入以下内容
set source_module=counter
set testbentch_module=counter_tbiverilog -o "%testbentch_module%.vvp" %testbentch_module%.v %source_module%.v
vvp -n "%testbentch_module%.vvp"
gtkwave "%testbentch_module%.vcd"
  • source_module为功能模块文件名称
  • testbentch_module为测试模块文件名称
  • 下次要对新的文件进行仿真时,只需要打开该文件,讲上面两个文件名设置为你新文件的文件名即可。
  • 要确保你测试文件中$dumpfile(filename)填写的filename为测试文件同名的.vcp文件名。
  1. 然后双击这个文件就可以直接进行模拟仿真

如何使用vsCode+Icarus verilog+GTKwave编写并仿真verilog相关推荐

  1. (88)FPGA面试题-使用Verilog HDL编写二进制转格雷码

    1.1 FPGA面试题-使用Verilog HDL编写二进制转格雷码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog HDL编写二进制 ...

  2. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码

    1.1 FPGA面试题-使用Verilog语言编写异步复位同步释放代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog语言编写异步复位 ...

  3. (11)verilog语言编写8路分配器

    2.10 verilog语言编写8路分配器 2.10.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写8路分配器: 5)本节结束. 2.10.2 ...

  4. (12)verilog语言编写8路选择器

    2.10 verilog语言编写8路选择器 2.10.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写8路选择器: 5)本节结束. 2.10.2 ...

  5. (11)verilog语言编写加减乘除

    2.10 verilog语言编写加减乘除 2.10.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写加减乘除: 5)本节结束. 2.10.2 FP ...

  6. (10)verilog语言编写SPI发送

    2.10 verilog语言编写SPI发送 2.10.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写SPI发送: 5)本节结束. 2.10.2 ...

  7. (9)verilog语言编写SPI接收

    2.9 verilog语言编写SPI接收 2.9.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写SPI接收: 5)本节结束. 2.9.2 FPG ...

  8. (8)verilog语言编写UART发送

    2.8 verilog语言编写UART发送 2.8.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写UART发送: 5)本节结束. 2.8.2 F ...

  9. (7)verilog语言编写UART接收

    2.7 verilog语言编写UART接收 2.7.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写UART接收: 5)本节结束. 2.7.2 F ...

  10. (6)verilog语言编写售货机

    2.6 verilog语言编写售货机 2.6.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写售货机: 5)本节结束. 2.6.2 FPGA简介 ...

最新文章

  1. Archlinux里面安装VMware Tools
  2. LEMP构建高性能WEB服务器(第三版)
  3. Go 语言实现 23 种设计模式(修饰器)
  4. dhcp服务器设置无线,无线网dhcp服务器设置
  5. python爬虫从入门到放弃-python 爬虫《从入门到放弃》
  6. 【VB6 Gdi+进阶】序章
  7. NX_UG1872安装
  8. syntaxhighlighter高亮动态代码
  9. 360网站查杀php专版,360网站木马查杀插件上线:可检测Struts2漏洞
  10. WORD中图片叠加背景融合的方法
  11. 手机游戏创业者的苦涩:成功率被指0.1%
  12. python简史_Python简史
  13. 回顾 Firefox 历史
  14. 区块链相关安全名词及常见攻击手法
  15. 数字IC设计学习笔记_静态时序分析STA_ PrimeTime 基本概述
  16. C语言PAT刷题 - 1027 打印沙漏
  17. 利用ffmepg下载在线视频文件
  18. revit服务器系统,revit云协同设置服务器
  19. Gem5模拟器,详解官网教程Event-driven programming(五)
  20. Linaro Ubuntu for Arndale Octa Broad Exynos 5420开发板,启动系统sd卡的制作。

热门文章

  1. [经验教程]2022微信怎么给微信好友批量群发消息?
  2. python掷骰子实验_Python基础(十二) 模拟掷骰子demo
  3. v-text 丶v-html丶v-bind
  4. ESP32产品系列之智能插座(二),ESP32代码部分
  5. 第4关:挑选以元音字母开头的单词
  6. 变频器调速工作原理实训装置QY-SP12
  7. 高校医科能转专业去计算机工科,转专业详细(2017最新版)想
  8. eclipse 背景绿豆沙颜色
  9. 【Computer Organization笔记08】指令系统概述,指令格式,寻址方式
  10. 力扣刷题 DAY_87 贪心