好风凭借力,送我上青云。——《临江仙·柳絮》
Verilator是一款开源的支持Verilog和System Verilog仿真工具,它支持代码质量检查等功能,能够将给定的电路设计翻译成C++或者System C的库等中间文件,最后使用C/C++编写testbench,去调用前面生成的中间文件,由C编译器编译执行,来完成仿真。
在本文中,我们主要介绍Verilator作代码检查的配置方法,但Verilator本身还是目前最为主流的处理器设计验证工具,其功能远远超出了代码检查,我们将在后续硬件课程中为大家介绍。感兴趣的同学可以进入Verilator官网了解更多信息。
- 常规词法错误
- 中对型变量赋值
- 或条件不完备,推断出锁存器
- 阻塞与非阻塞赋值滥用
- 单文件内信号多驱动、组合逻辑环路
- 信号位宽不匹配
- 例化模块接口不一一对应
- ………… !!! bug "Verilator检查的“小毛病”" 若模块名与模块所在文件名不一致,Verilator会报错“找不到对应的模块”,这是Verilator的一个bug,可以通过修改模块名或者文件名解决。
Verilator是面向Linux平台开发的一款工具,截至目前,使用官网方法在Windows平台上编译的Verilator都无法配合VSCode完成代码检查,但VSCode为我们提供了一个选项,我们可以通过使用子系统WSL运行Verilator来完成高效代码检查。
大部分的Windows电脑都自带了WSL,如果自己的电脑并没有WSL的话,可以执行如下命令: 之后在Microsoft Store中选择一个稳定版的Ubuntu下载,再执行如下命令进行切换: 其中<Distrbution Name>为发行版名称。
在命令行中启动后,就可以看到一个命令行Ubuntu了
目前通过apt安装的Verilator版本较低,但也可以使用。如果不希望体验过于麻烦的安装,可以执行如下命令安装Verilator: 如果希望安装较高版本的Verilator,可以参考官网提供的安装指南,下面列出编译Verilator需安装的库: 若第三、四个库安装时报错,则可以直接忽视。 之后把仓库克隆到本地: 执行编译: 其中,nproc不要超过本机最大线程数。 安装完成后,使用wsl执行如下命令: 若输出了版本信息,则安装成功。
找到Verilog-HDL/SystemVerilog拓展,点击设置,选择扩展设置,在搜索框中输入Verilator,按照如下进行配置:
之后重启VSCode,就可以使用Verilator进行高效代码检查了。
TerosHDL是一款基于VSCode的Verilog-HDL/SystemVerilog语言插件,它可以帮助我们更好地对Verilog模块进行补充,在本节中我们将介绍TerosHDL的使用方法。
在VSCode的插件中,直接搜索Teroshdl,点击安装即可。
注意:TerosHDL在2024.9.22更新到v6.0.4,截止2024.9.28更新到v6.0.7。这些版本目前在window下不能正常使用示意图查看器(schematic viewer)和状态机查看器(state machine viewer)。
目前,你可以选择安装特定版本,再选择v5.0.12。
同时,如果你没有安装过对应的Python库,还需要使用如下命令来安装Python库支持:
在VSCode中,我们可以使用TerosHDL进行一键例化,这样可以大大提高我们的开发效率。首先我们需要打开一个Verilog文件:
注意观察右上角的图标:
点击Copy as instance,即可将例化模板复制到粘贴板里,再选择你需要例化的位置,粘贴即可:
Verilog_Testbench插件可用于自动生成testbench,我们再在自动生成的tb文件的基础上手动做需要的改动,可以提高仿真测试的效率。
在命令行中执行来安装依赖的python库chardet。
在VScode中安装Verilog_Testbench插件。
在.v/.sv文件中然后输入即可在终端中生成tb文件。