跳转至

使用Verilator和TerosHDL作高效代码开发

好风凭借力,送我上青云。——《临江仙·柳絮》

还不知道如何优雅地开发Verilog?

本文内容为Verilog代码编写的进阶内容,请确保前往普通班主页了解如何优雅的进行开发后再阅读本文。

Verilator是一款开源的支持Verilog和System Verilog仿真工具,它支持代码质量检查等功能,能够将给定的电路设计翻译成C++或者System C的库等中间文件,最后使用C/C++编写testbench,去调用前面生成的中间文件,由C编译器编译执行,来完成仿真。

在本文中,我们主要介绍Verilator作代码检查的配置方法,但Verilator本身还是目前最为主流的处理器设计验证工具,其功能远远超出了代码检查,我们将在后续硬件课程中为大家介绍。感兴趣的同学可以进入Verilator官网了解更多信息。

Verilator可以检查出哪些错误

  • 常规词法错误
  • always中对wire型变量赋值
  • caseif-else条件不完备,推断出锁存器
  • 阻塞与非阻塞赋值滥用
  • 单文件内信号多驱动、组合逻辑环路
  • 信号位宽不匹配
  • 例化模块接口不一一对应
  • ………… !!! bug "Verilator检查的“小毛病”" 若模块名与模块所在文件名不一致,Verilator会报错“找不到对应的模块”,这是Verilator的一个bug,可以通过修改模块名或者文件名解决。

Verilator到底有多强大?

作为一款占据处理器调试领域主流的工具,Verilator的功能和性能都是非常强大的。其仿真速度几乎是Vivado仿真的十倍以上,且通过对工程源代码严格的检查,能够发现大量的设计错误,大大提高了设计的可靠性。在Windows平台下,Vivado、iverilog、ModelSim等仿真工具都无法找出“case和if-else条件不完备”、“单文件内组合逻辑环路”等严重设计问题,而Verilator可以轻松发现这些问题。在大规模的设计工程下,Verilator的优势更加明显,这也使其成为NSCSCC全国大赛的主流仿真工具。

Verilator的运行环境

Verilator是面向Linux平台开发的一款工具,截至目前,使用官网方法在Windows平台上编译的Verilator都无法配合VSCode完成代码检查,但VSCode为我们提供了一个选项,我们可以通过使用子系统WSL运行Verilator来完成高效代码检查。

在WSL中安装Verilator并运行

安装WSL

大部分的Windows电脑都自带了WSL,如果自己的电脑并没有WSL的话,可以执行如下命令:

wsl --install
之后在Microsoft Store中选择一个稳定版的Ubuntu下载,再执行如下命令进行切换:
wsl --install -d <Distrbution Name>
其中<Distrbution Name>为发行版名称。

在命令行中启动后,就可以看到一个命令行Ubuntu了

image-20230806164349374

安装Verilator

目前通过apt安装的Verilator版本较低,但也可以使用。如果不希望体验过于麻烦的安装,可以执行如下命令安装Verilator:

sudo apt install verilator
如果希望安装较高版本的Verilator,可以参考官网提供的安装指南,下面列出编译Verilator需安装的库:
sudo apt-get install git perl python3 make autoconf g++ flex bison ccache
sudo apt-get install libgoogle-perftools-dev numactl perl-doc help2man
sudo apt-get install libfl2
sudo apt-get install libfl-dev
sudo apt-get install zlibc zlib1g zlib1g-dev
若第三、四个库安装时报错,则可以直接忽视。 之后把仓库克隆到本地:
git clone https://github.com/verilator/verilator
执行编译:
autoconf
./configure
make -j 'nproc'
sudo make install
其中,nproc不要超过本机最大线程数。 安装完成后,使用wsl执行如下命令:
verilator --version
若输出了版本信息,则安装成功。

在VSCode中使用Verilator检查

找到Verilog-HDL/SystemVerilog拓展,点击设置,选择扩展设置,在搜索框中输入Verilator,按照如下进行配置:

image-20230806170637759

之后重启VSCode,就可以使用Verilator进行高效代码检查了。

TerosHDL插件补充

TerosHDL是一款基于VSCode的Verilog-HDL/SystemVerilog语言插件,它可以帮助我们更好地对Verilog模块进行补充,在本节中我们将介绍TerosHDL的使用方法。

安装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

360截图20240928200813446

同时,如果你没有安装过对应的Python库,还需要使用如下命令来安装Python库支持:

pip install teroshdl

使用TerosHDL进行一键例化

在VSCode中,我们可以使用TerosHDL进行一键例化,这样可以大大提高我们的开发效率。首先我们需要打开一个Verilog文件:

image-20231025205410543

注意观察右上角的图标:

image-20231025205612627

点击这里左数第五个图标:即可出现如下弹框: image-20231025205703537

点击Copy as instance,即可将例化模板复制到粘贴板里,再选择你需要例化的位置,粘贴即可:

image-20231025205830971

Verilog_Testbench插件

Verilog_Testbench插件可用于自动生成testbench,我们再在自动生成的tb文件的基础上手动做需要的改动,可以提高仿真测试的效率。

在命令行中执行pip install chardet来安装依赖的python库chardet。

在VScode中安装Verilog_Testbench插件。

20240928214836720

在.v/.sv文件中ctrl+shift+p然后输入testbench即可在终端中生成tb文件。

20240928214929668

在.v/.sv文件中ctrl+shift+p然后输入instance可以在终端中生成例化代码。