使用VS Code进行Verilog HDL的编译和仿真

Icarus Verilog与GTKWave编译与仿真

Verilog的纠错和编译

首先在Icarus Verilog的官网下载对应版本。
https://bleyer.org/icarus/
这个软件提供了查错和仿真的功能。

这里提供Windows的教学。
安装很简单,记住选择Full installation并且添加路径到PATH变量里。

在VS code里安装这三个插件。
第一个是为了编译和快速仿真。
第二个是自动补全。
第三个是查错。
在这里插入图片描述

完成后进行配置。

左下角点击齿轮图标-Settings,在搜索框里输入Verilog Linter,找到下面选项更改为iverilog,此时.v文件就能实现补全和查错了。此时右上角的绿色图标就已经可以进行编译了。如果顺利编译,就会在目录中生成一个*.v.out文件。

可选配置:

运行PowerShell管理员,使用指令winget install 'Universal Ctags'安装ctags。成功后重启PowerShell窗口,输入ctags -v测试,查询到版本即证明安装成功。

安装好后,使用第三个插件即可按住ctrl点选变量后跳转到定义,但是对于module不能跨文件跳转。
如果需要跨文件跳转,继续安装vs code扩展,Ctags Companion。(未测试)

安装好后将如下命令添加到.vscode/settings.json里:

"ctags-companion.command": "ctags -R --fields=+nKz -f .vscode/.tags --langmap=SystemVerilog:+.v -R rtl /opt/uvm-1.2/src",
"ctags-companion.readtagsEnabled": true,

其中/opt/uvm-1.2/src为指定的source源码目录。
至此按照第三个插件的文档说明来看,应该可以实现跨文件跳转的功能。

2024.06.16更新:

当然上面的方法有点复杂。
推荐一个国人大佬写的插件:

在这里插入图片描述
https://1391074994.github.io/Verilog-Hdl-Format/#/

这个插件解决了上面第三个插件ctags功能无法跨文件跳转的问题。推荐使用此插件替换上面第二和第三个插件。

安装好后,配置查错软件:

在这里插入图片描述
修改这个选项,如果你已经安装了Icarus Verilog,这里就选iVerilog。我这里因为已经配置了下面介绍的TerosHDL的查错,这里就没有开启。

仿真

仿真的前提就是写好Testbench文件。这里假定tb文件测试内容已经写好,在此前提下,在initial语句块中插入:

    $dumpfile("*.vcd");
    $dumpvars;

这里的$dumpfile的参数就是生成的波形文件。

当然我们可以添加一个Snippet来便于我们后续的自动添加。
左下角设置-User Snippets,输入Verilog创建一个,将下面内容粘贴到大括号里。这样我们在下次编写tb时直接打出dum即可自动添加此段。

"Generate .vhd for GTKWave": {
		"prefix": ["$dum","dum"],
		"body": [
			"$$dumpfile(\"$TM_FILENAME_BASE.vcd\");",
			"$$dumpvars;"
		],
		"description": "Add this block to generate .vhd for GTKWave. Remember to put this in initial block."
	}

添加后,再次运行编译,即可得到.vcd波形文件。在对应.vcd文件右键即可选择打开波形查看器即可查看。
在这里插入图片描述
在这里插入图片描述GTKWave查看器窗口中点击tb后,选择需要查看的信号,点击Append添加到右边窗口,或者直接ctrl+a全选添加。

这个方法好处就是很快,但是iVerilog的仿真生成速度比Modelsim快不少,不知道对精度有没有影响。

使用TerosHDL插件调用第三方工具(Modelsim)仿真

这里非常推荐使用TerosHDL插件。这个插件功能很多,简单介绍一下。
基础的比如联想和纠错,进阶的自动规范格式、tb模板、生成说明文档、自动绘制原理图和状态机图以及调用第三方工具仿真。

官方说明文档:
https://terostechnology.github.io/terosHDLdoc/docs/intro

对于不想看官方文档的,可以看看我的简化版安装流程。

环境安装

首先安装Python 3,这个我就不赘述了,没安装的可以网上搜搜,现在官网好像也有一键安装的版本了。

然后安装Python3的支持包。

Ctrl + R运行cmd,输入pip install teroshdlpip install cocotb

接着安装make。

windows标志上右键,运行Windows PowerShell管理员模式,在窗口输入:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

安装好Chocolatey后,继续输入:

choco install make

完成后使用make --version可以测试是否安装成功。

基础环境安装好后,在VS code的扩展中搜索TerosHDL并安装。
在这里插入图片描述

在这里插入图片描述
安装完成后侧边栏就会出现Teros的图标,点击后拉到最下面,点击Check dependencies即可测试功能是否能够正常使用。如果没有报错,那么上面除了仿真以外的功能就可以使用了。

配置

使用查错仍然是调用第三方工具,需要提前安装好。
简单点可以使用上面提到的Icarus Verilog。然后在设置里Linter settings - General - Verilog/SV linter处修改为对应的软件。
当然如果你使用了前面已经介绍过的其他插件,也可以不用配置查错。

调用第三方工具仿真

这个插件可以调用很多软件进行仿真,基本主流软件都有。

这里简单讲讲Modelsim的配置,其他软件也应该大同小异。
使用此插件的好处就是可以减少操作界面卡顿的Modelsim的UI哈哈。

Modelsim的安装,我提供一个版本。理论上任何版本都可。

链接:https://pan.baidu.com/s/18qhnIzfXLNVq0iqZF0TpHw?pwd=e722
提取码:e722

对于插件设置,点击ACTIONS里的Open Configuration Menu - Tools - General,第一个选项选择你需要的第三方软件,这里是Modelsim。
下面的执行模式,因为没有其他查看器,这里仍然使用原本的GUI。

Tools选项里的Modelsim设置,第一个就是安装目录,注意选择安装的主目录而不是下面那个win64的文件夹。
最下面的Additional run options for vsim选项,给vsim仿真命令加入-vopt -voptargs=+acc的选项,否则可能出现仿真Objects里面没有端口的问题。也可以在这里的选项添加其他命令来实现更多的限定和功能,比方说脚本自动化。具体命令选项可以查看Modelsim安装目录下面的说明文档。

所有设置完成后,即可使用此插件调用Modelsim进行仿真。

使用此插件仿真首先得创建一个工程,然后将所需代码添加到SOURCES里,将仿真的testbench设置为toplevel,即可在下方的RUNS里看到tb,点击Run就会调用Modelsim仿真。

在这里插入图片描述

### 如何配置 VSCode 以运行 Verilog 代码 为了使 VSCode 支持 Verilog 的开发环境,包括代码补全、报错提示以及波形仿真等功能,安装特定的插件是必要的措施之一[^1]。 #### 安装必备工具与扩展 确保计算机已安装 `iverilog` `gtkwave` 工具。这可以通过在命令行界面中的运行框输入如下指令来验证其是否存在并能正常使用: ```bash iverilog -v gtkwave -v ``` 如果上述两个命令均返回版本信息,则表明这些工具已经正确安装并且可以被调用。 对于 VSCode 来说,还需要安装专门针对 Verilog 设计的语言支持插件。这类插件能够提供语法高亮显示、自动完成建议等特性,从而提高编写效率准确性[^3]。 #### 编写与调试 Verilog 文件 当一切准备就绪后,在编辑器内打开 `.v` 或其他形式的 Verilog 源文件时就能享受到增强的功能了。值得注意的是,虽然某些情况下仅靠单一插件可能无法完全满足需求——比如定义跳转功能未能按预期工作——这时就需要考虑引入辅助性的组件来弥补不足之处。 至于具体的编译流程,通常是在终端里执行相应的构建脚本或是手动指定参数给 `iverilog` 去处理目标源码;而对于图形化的信号观察则依赖于 `gtkwave` 对 VCD (Value Change Dump) 文件的支持来进行可视化展示[^2]。 通过以上步骤可以在 VSCode 中顺利地开展基于 Verilog 的项目开发活动,并利用丰富的周边资源提升工作效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值