在 VSCode 中编写 Verilog、ModelSim 中编译仿真

滑稽mc的头像 发布于 1 天前 1213 字 139 次阅读


数电课程需要学习神秘的 Verilog,于是我安装了教材上使用的 ModelSim 仿真软件,然而这些专业软件自带的编辑器都不好用,而在万能的 VSCode 上通过插件可以实现语法高亮、自动补全、代码检查、格式化等等功能,提高效率。专业的工具干专业的事,我们将使用 VSCode 进行代码编辑,ModelSim 用来编译和仿真。(折腾了一个中午配置环境 custom_smilies custom_smilies custom_smilies)

一、 ModelSim 安装

直接在官网下载 官方下载页面。

然后 ModelSim 提供了免费版本(Starter Edition),适合初学者,功能有限,但足以满足基本的学习和小型项目需求,适合学生使用。安装的时候会有个页面让你选择安装哪个版本,选 Starter Edition 就行了。

安装后将 ModelSim 的 bin 目录添加到环境变量,大概长这样 D:\intelFPGA\20.1\modelsim_ase\win32aloem,也有的是一个 win64 目录,大概安装的版本不一样,反正把它添加到环境变量,后面配置 Lint 和使用 ModelSim 的 CLI 需要。

然后这些神秘专业软件的远古 UI 库在现代的高 DPI 屏幕上显示得会比较糊,可以这样变清晰:找到 modelsim.exe(或者快捷方式) 与 vish.exe(这个是后面 CLI 唤起的仿真是这个程序),右键选择 属性,切换到 兼容性 选项卡,点击下面的 更改高 DPI 设置,把 替代高 DPI 缩放行为 勾选上,下面菜单选择 系统(增强) 或 应用程序,然后重新打开软件就好了。

高DPI设置

二、 安装 VSCode 插件

安装这个 Verilog-HDL/SystemVerilog 插件。

Verilog-HDL/SystemVerilog 插件

安装完后应该就能看到代码能高亮了,因为插件自带了高亮功能。

代码高亮

三、 配置插件

打开 Verilog-HDL/SystemVerilog 插件的配置面板。

1. Lint (代码检查)

我们将 Linter 设置为 ModelSim,直接调用 ModelSim 进行语法检查。

然后下面的工作库填 work,这是 ModelSim 的默认工作库名。(然后每次开一个新的目录/项目的时候先执行 vlib work 初始化一个 work 库)

Lint

然后就能检查出我们代码的错误了,比如我们少打一个分号:

示例代码检查

2. Formatter (格式化)

格式化代码在 Formatting 分区下面配置,推荐使用verible-verilog-formatter(其实还不如我人工排版)。

先在 Github Releases 下载二进制文件,解压,然后添加到环境变量。

然后把配置里面的 Formatter 选到 verible-verilog-formatter 就行了,配置了环境变量的话那个 Path 应该不需要改。

格式化

3. 定义跳转

然后还有个定义跳转,就是 Go to Definition,Ctrl + 左键 可以快速跳转到变量或者模块等被定义的地方。有趣的是,前面我们安装的 verible-verilog-formatter 中自带的 verible-verilog-ls 刚好能实现定义跳转功能(我看其他教程里都是用 ctags,我们就不搞那么麻烦了)。

把 Language Servers -> Verible Verilog Ls: Enabled 勾选上即可启用 Verible 的语言服务器功能。

定义跳转

嗯...然后配置到这里应该就差不多了,接下来就是编译和仿真了。

四、ModelSim 编译、仿真

我们直接在命令行编译和启动仿真,主要的命令就这三条:

# 建库,“work”是库名,也是默认的库名,和我们前面 Lint 配置的库名一致
vlib work

# 编译,可以指定需要编译的文件,也可以直接用通配符 * 编译当前目录下全部 .v 文件
vlog FileName1.v FileName2.v
vlog *.v

# 启动仿真,work 是库名,由于是默认库名,可以省略,ModuleName 是仿真模块名称
# 启动后会拉起 ModelSim 图形窗口
vsim work.ModuleName

我已经 vlib 过了,就直接 vlog 编译,Errors: 0, Warnings: 0,然后 vsim 启动仿真,会拉起 ModelSim 的图形窗口。(嫌敲命令麻烦可以配置一个 VSCode Tasks)

编译仿真

仿真窗口

可以看到现在界面是空的,也没有波形出来。因为我们需要先添加需要的波形,然后手动点击运行。

如图所示添加需要的波形。

添加波形

然后波形列表就成功添加了我们需要的波形了。

波形出来了

接着通过图形菜单按钮或者控制台命令 run -all 运行仿真。

Run

然后波形就出来了,输出也能在控制台看到。

仿真结果

然后关于这个 UI、显示方面的调整可以参见这篇文章后半部分 如何在VSCode中优雅地书写Verilog - CSDN,可以调整到一个好看一点的显示方式。


Then, that's all. custom_smilies custom_smilies custom_smilies