Macbook M1使用vscode+iverilog+gtkwave实现Verilog代码的编译与运行


前言

最近在研究FPGA的开发,于是需要用到Verilog。但是手头上只有一台M1芯片的Macbook air,Vivado和Quatus在MacOS上似乎不太方便使用,险些陷入无尽的对于购买macbook的后悔中…

随后我在网上查找了大量的关于MacOS平台如何实现verilog的开发与编写的相关博客,都提到了使用vscode+iverilog+GTKwave实现verilog的编写、时序仿真与波形显示的解决方案。
于是想着记录一下自己在Macbook air M1芯片上实现verilog编写与仿真的过程,带大家从零开始在自己的Macbook上搭建Verilog编写环境。(有一个教程其实已经写的很详细了,可惜就是没有讲MacOS如何搭建!!给我一顿好找)
就是下面这篇~

vscode搭建Verilog环境(Windows与Linux)

一、介绍一下各个工具

  1. vscode
    vscode可以看做一个具有很多拓展功能与插件的文本编辑器。在这里我们使用它来编写verilog的代码。也就是来编写.v文件
  2. iverilog
    iverilog是一款轻量化的verilog编译器。编写好的verilog代码不能直接拿来跑仿真,需要对它先进行编译之后才能进行后续的仿真操作,而iverilog正是起到了这样的编译作用,配合vscode上的插件还可以实现verilog语法是否正确的检验
  3. gtkwave
    gtkwave可以用来查看.vcd文件,用于显示仿真结果。
  4. ctags
    ctags主要功能是,扫描指定的源文件,找出其中所包含的语法元素,在这里主要用于检索函数的定义。与vscode的一个插件搭配使用。
  5. homebrew
    Homebrew 是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。能够轻松实现各种软件包的下载安装,而不用你关心各种依赖和文件路径的情况,十分方便快捷。
    我这里使用了homebrew来在我的MacBook上安装iverilog。

二、安装各个需要的工具

1.MacOS上的包管理工具——Homebrew的安装

参考教程Mac M1安装homebrew步骤

  • step1:安装xcode

按照上面给出的文章的步骤,先在App Store搜索并安装xcode!!(主要是为了安装相关的git等环境)
在应用商城安装xcode

不然后面运行homebrew安装脚本的时候会出现类似下面这样的报错

安装Git后再运行此脚本,在系统弹窗中点击“安装”按钮

似乎是因为没有安装git,安装xcode之后似乎把包括git在内的很多开发需要的工具都给你的mac装上了,如果不嫌装git麻烦的话可以自行搜索一下macbook m1安装git的相关教程。如果想偷懒省事的话就直接安装xcode吧(笑)

  • step2:使用安装脚本安装Homebrew
    command+空格打开Mac的搜索,搜索terminal,然后打开终端。
    在终端中输入
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

随后就会打开一个安装Homebrew的脚本,按照脚本的步骤:依次执行选择下载源,按照命令输入y,输入开机密码,是否要安装homebrew-core等操作,完成homebrew的安装。
跑完安装脚本之后,按照上面给出来的教程,在终端中输入brew -v,查看homebrew的版本信息,以确认是否成功安装homebrew。一般来说会出现如下提示

Homebrew 4.0.6-15-g8e13a6e
fatal: detected dubious ownership in repository at '/opt/homebrew/Library/Taps/homebrew/homebrew-core'
To add an exception for this directory, call:

	git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
Homebrew/homebrew-core (no Git repository)
fatal: detected dubious ownership in repository at '/opt/homebrew/Library/Taps/homebrew/homebrew-cask'
To add an exception for this directory, call:

	git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask
Homebrew/homebrew-cask (no Git repository)

此时需要按照它的提示,再在终端中输入

git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask

再次输入brew -v查看homebrew的版本,这时候应该就会显示

Homebrew 4.0.6-15-g8e13a6e
Homebrew/homebrew-core (git revision 80b527e6314; last commit 2023-03-12)
Homebrew/homebrew-cask (git revision fee2067879; last commit 2023-03-12)

则homebrew的安装已经成功。

2.Verilog编译器——iverilog的安装

参考教程开源verilog仿真工具iverilog+GTKWave使用教程

command+空格打开Mac的搜索,搜索terminal,然后打开终端,输入下面的指令,使用homebrew安装iverilog。

brew install icarus-verilog

稍等片刻,你就成功安装了iverilog!

3.ctags的安装

一般来说,mac上是会带有一个ctags的,在终端中使用which -a ctags指令查找这个电脑上所有的ctags的路径,会发现

leo@leodeMacBook-Air ~ % which -a ctags
/usr/bin/ctags

也就是说,在没有额外安装ctags的情况下,电脑是自带一个在/usr/bin/ctags路径下的ctags的。
但是不知道是因为版本不够高之类的原因,使用这个自带的ctags似乎无法配合vscode的插件实现其功能,于是我们需要使用homebrew再安装一个!

按照上面讲过的打开终端的步骤,打开终端。在终端中输入

brew install ctags

稍等片刻,你就可以成功安装ctags了。
这时候再输入which -a ctags,你就会发现有两个路径了,例如下面

leo@leodeMacBook-Air ~ % which -a ctags
/opt/homebrew/bin/ctags
/usr/bin/ctags

出现了两个ctags路径,则说明你新的ctags也已经安装完成了~

4.gtkwave的安装

参考教程在M1芯片的MacBookPro上编译并运行 Verilog 代码

按照上面教程的作者的说法,他是直接在gtkwave的官网下载的unzip版本。网址在这

http://gtkwave.sourceforge.net/gtkwave.zip

右键打开

似乎目前gtkwave只有intel版本,且会显示未知的作者,为了打开这个文件,在访达中找到这个文件,右键打开即可成功打开gtkwave。如果没有装过Rosetta2的话还会让你装一下Rosetta2,右键并打开后按照电脑出来的弹窗安装Rosetta2即可。

成功打开后可以看到图示的gtkwave界面
gtkwave界面

恭喜你已经成功安装gtkwave


23年10月30日更新

今天升级到macOS 14以后软件就打不开了…
如果没有更新到macOS 14的话可以继续参照我的教程安装使用gtkwave

如果更新了的话
可以参照一下这个up主的手把手教学

MacOS14 安装iVerilog和GTKwave


三、在vscode上安装并配置相关插件

相关参考文章:vscode搭建Verilog环境

vscode在加上插件之后是无所不能的!
在这里打开拓展商店,并可以搜索相关插件~
相关插件在图中也已经列出
插件

1.CTags Support插件

CTags Support

作为ctags到vscode的桥梁,将两者联系起来,使得vscode中的其他插件能够自动调用ctags相关功能。

需要进行如下配置,打开图中的齿轮,打开拓展设置。
拓展设置

把框里的参数改成图示的

ctags相关参数

好像这个一开始就是.tags,不太用改

2.Verilog Highlight插件

verilog highlight

用于实现Verilog代码中的相关代码高亮

下载了就行,不用配置

3.Verilog-HDL/SystemVerilog/Bluespec SystemVerilog插件

Verilog-HDL

神中神,关键中的关键,vscode上能编写verilog代码的大功臣,有了它以后,你就可以在vscode上编写verilog代码,结合iverilog还可以实现代码语句的检查。

配置相关参数

打开设置界面

设置界面

  • Ctags的路径设置

Path设置

点进此插件的设置,在其第一栏的框中填入我们刚刚使用homebrew安装的ctags的路径(mac可用which -a ctags指令查找获得)
注意:这里需要填入的是homebrew安装的那个ctags的路径,在/usr/bin/ctags路径下的那个ctags可能是因为版本不够,无法成功实现对应功能。

  • Linter:编译器设置

linter

在点开的设置界面中,搜索linter,找到图示的这两个选项框
Arguments里填入-i
Linter处选中iverilog

这样,你就拥有了iverilog检查语法错误的功能了!

特别注意:linter工具只会在保存(CTRL+S)之后进行语法检查,因此,在编写源码的过程中没有红色波浪线提示,是正常的。


四、使用搭建好的平台进行verilog的编写与仿真

1.使用vscode进行verilog代码编写与代码错误检查

打开一个项目文件夹
项目文件夹

创建一个.v文件,用于编写verilog程序

这里我建了一个叫做led_test.v的文件。我在文件中故意写错一部分,用于验证是否有语句检查的功能
写完之后,按住CTRL+S进行保存,随后才会进行语法检查!!!
出现图示效果,成功报错!
报错
改正之后,再按CTRL+S进行保存与语法检查,没有报错
没有报错
说明语法检查功能可以正常运行~
附上正确的led_test.v文件的代码

module led_test(a,b,key_in,led_out);
input a;
input b;

input key_in;

output led_out;

assign led_out = (key_in==0) ? a:b;
endmodule

2.使用iverilog+gtkwave进行仿真

参考链接:
IVerilog+GTKwave+VS Code仿真及执行命令
mac的open命令[快速打开程序的利器]
开源verilog仿真工具iverilog+GTKWave使用教程

针对led_test.v编写一个对应的Testbench仿真程序led_test_tb.v

`timescale 1ns/1ps

module led_test_tb;
    reg signal_a;
    reg signal_b;
    reg signal_c;
    
    wire led;
    led_test led_test_0(
        .a(signal_a),
        .b(signal_b),
        .key_in(signal_c),
        .led_out(led)
    );
    initial begin
        signal_a=0;signal_b=0;signal_c=0;
        #100;
        signal_a=0;signal_b=0;signal_c=1;
        #100;
        signal_a=0;signal_b=1;signal_c=0;
        #100;
        signal_a=0;signal_b=1;signal_c=1;
        #100;
        signal_a=1;signal_b=0;signal_c=0;
        #100;
        signal_a=1;signal_b=0;signal_c=1;
        #100;
        signal_a=1;signal_b=1;signal_c=0;
        #100;
        signal_a=1;signal_b=1;signal_c=1;
        #100;
    end

initial
begin
    $dumpfile("led_test.vcd");
    $dumpvars(0, led_test_tb);
end

endmodule

注意

这里的

initial
begin
    $dumpfile("led_test.vcd");
    $dumpvars(0, led_test_tb);
end

是一定要在原有编写好的testbench基础上,加上去的。
这是iverilog编译器专用的语句,如果不加的话后面不能生成vcd文件。
当然$dumpfile("xxxx.vcd")可以你自己命名,但是$dumpvars(0, led_test_tb);里面的函数名字(这里是led_test_tb)必须与你的testbench函数名保持一致

随后使用control+ `在vscode中打开终端
在终端中输入iverilog -o wave led_test.v led_test_tb.v 使用iverilog将两个联合编译成一个命名为wave的文件。
wave
可以看到,在文件栏中,出现了一个叫做wave的文件(这个名字也可以你自己定义~)

随后输入vvp -n wave -lxt2,使用vvp工具在wave文件的基础上生成波形文件。(你vvp的文件需要是你上面编译生成的那个文件)
vvp
可以看到,生成了我们前面在led_test_tb.v文件里面命名的test.vcd文件。

然后就可以用安装的gtkwave软件,打开这个test.vcd文件,显示出波形。
使用指令open -a gtkwave test.vcd,即:用gtkwave软件,打开test.vcd文件。

参考:mac的open命令[快速打开程序的利器]

open
随后就会出现
示波

gtkwave的界面!

为了让信号能显示出来,需要双击对应的信号,将其添加入框中
双击

然后信号被添加后,有图示情况~
添加后

最后再点击下面这个按钮,把画面缩放到合适比例,即可看到仿真波形!

波形放缩


23年10月31日更新

报错图片

如果你升级到了macOS14可能会发现上面方法安装的gtkwave软件无法打开波形文件,主要是因为这个版本的软件无法在macOS14上运行,可参照b站这位up主的视频完成gtkwave的安装(如果没升级到macOS14,可直接使用上面安装的gtkwave打开波形

MacOS14 安装iVerilog和GTKwave

由于按照我们之前的步骤你已经把iverilog装好了,只用按照他的步骤把gtkwave装了就行。视频里还有指导安装yosys的步骤,但是我装不装yosys好像也没啥区别,所以可以只按照他的教程,把gtkwave装上就行。

装完了之后,编译指令与上面一样,但是vvp以及展示波形的指令也与上面不同了~

编译指令:iverilog -o wave led_test.v led_test_tb.v,与之前一样

vvp : vvp -n wave

gtkwave打开生成的波形文件:gtkwave ./test.vcd

指令的使用与意义,可以参照下面这篇文章

IVerilog+GTKwave+VS Code仿真及执行命令


总结

恭喜你!经过上面的步骤,你成功在你的Macbook m1上搭建了基于vscode+iverilog+gtkwave的Verilog仿真平台,如果说还想再加一些别的拓展功能,比如说自动生成testbench,格式化等等,可以去翻阅一些别的相关博客,能编写verilog和简单仿真我已经满足了。macbook还是用来充当文本编辑终端罢!(暴论)
新人创作,有问题还请大家多多指正~感谢大家!

可参考相关文章:
VScode搭建Verilog源码开发环境记录
VSCode配置verilog环境(代码提示+自动例化+格式化)

  • 21
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值