前言
最近在研究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)
一、介绍一下各个工具
- vscode
vscode可以看做一个具有很多拓展功能与插件的文本编辑器。在这里我们使用它来编写verilog的代码。也就是来编写.v文件
- iverilog
iverilog是一款轻量化的verilog编译器。编写好的verilog代码不能直接拿来跑仿真,需要对它先进行编译之后才能进行后续的仿真操作,而iverilog正是起到了这样的编译作用,配合vscode上的插件还可以实现verilog语法是否正确的检验 - gtkwave
gtkwave可以用来查看.vcd文件
,用于显示仿真结果。 - ctags
ctags主要功能是,扫描指定的源文件,找出其中所包含的语法元素,在这里主要用于检索函数的定义。与vscode的一个插件搭配使用。 - homebrew
Homebrew 是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。能够轻松实现各种软件包的下载安装,而不用你关心各种依赖和文件路径的情况,十分方便快捷。
我这里使用了homebrew来在我的MacBook上安装iverilog。
二、安装各个需要的工具
1.MacOS上的包管理工具——Homebrew的安装
参考教程:Mac M1安装homebrew步骤
- step1:安装xcode
按照上面给出的文章的步骤,先在App Store搜索并安装xcode!!(主要是为了安装相关的git等环境)
不然后面运行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
23年10月30日更新
今天升级到macOS 14以后软件就打不开了…
如果没有更新到macOS 14的话可以继续参照我的教程安装使用gtkwave
如果更新了的话
可以参照一下这个up主的手把手教学
MacOS14 安装iVerilog和GTKwave
三、在vscode上安装并配置相关插件
相关参考文章:vscode搭建Verilog环境
vscode在加上插件之后是无所不能的!
在这里打开拓展商店,并可以搜索相关插件~
相关插件在图中也已经列出
1.CTags Support插件
作为ctags到vscode的桥梁,将两者联系起来,使得vscode中的其他插件能够自动调用ctags相关功能。
需要进行如下配置,打开图中的齿轮,打开拓展设置。
把框里的参数改成图示的
好像这个一开始就是.tags
,不太用改
2.Verilog Highlight插件
用于实现Verilog代码中的相关代码高亮
下载了就行,不用配置
3.Verilog-HDL/SystemVerilog/Bluespec SystemVerilog插件
神中神,关键中的关键,vscode上能编写verilog代码的大功臣,有了它以后,你就可以在vscode上编写verilog代码,结合iverilog还可以实现代码语句的检查。
配置相关参数
打开设置界面
- Ctags的路径设置
点进此插件的设置,在其第一栏的框中填入我们刚刚使用homebrew安装的ctags的路径(mac可用which -a ctags
指令查找获得)
注意:这里需要填入的是homebrew安装的那个ctags的路径,在/usr/bin/ctags
路径下的那个ctags可能是因为版本不够,无法成功实现对应功能。
- 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
的文件(这个名字也可以你自己定义~)
随后输入vvp -n wave -lxt2
,使用vvp工具在wave
文件的基础上生成波形文件。(你vvp的文件需要是你上面编译生成的那个文件)
可以看到,生成了我们前面在led_test_tb.v
文件里面命名的test.vcd
文件。
然后就可以用安装的gtkwave软件,打开这个test.vcd
文件,显示出波形。
使用指令open -a gtkwave test.vcd
,即:用gtkwave
软件,打开test.vcd
文件。
参考:mac的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还是用来充当文本编辑终端罢!(暴论)
新人创作,有问题还请大家多多指正~感谢大家!文章来源:https://www.toymoban.com/news/detail-762015.html
可参考相关文章:
VScode搭建Verilog源码开发环境记录
VSCode配置verilog环境(代码提示+自动例化+格式化)文章来源地址https://www.toymoban.com/news/detail-762015.html
到了这里,关于Macbook M1使用vscode+iverilog+gtkwave实现Verilog代码的编译与运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!