问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/EinsamMark/article/details/139106301

使用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 teroshdl

pip 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仿真。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号