《基于“矿板”低成本学习FPGA》移植OpenC906番外篇-iverilog+gtkwave环境介绍
一.
前言
OpenC906
官方使用的是
iverilog
编译,
gtkwave
查看波形,上一篇已经体验了
OpenC906
的仿真。整个过程都是脚本完成所以其实并没有关注其细节,实际其也是脚本中调用了
iverilog
进行编译。所以为了后续了解整个编译过程,先来了解下
iverilog
和
gtkwave
。之前是
linux
环境下,这里就以
windows
下为例。
二.
安装
iverilog
和
gtkwave
从以下地址下载
https://bleyer.org/icarus/
下载最新版
双击
iverilog-v12-20220611-x64_setup
开始安装,弹出用户账户控制对话框点击是。
勾选接受,
Next
继续
Next
指定安装路径,
Next
勾选安装
mingw
依赖库和
gtkwave
,
Next
继续
Next
勾选添加路径和桌面图标,一定要勾选添加路径,否则命令行中无法找到命令。
Iverilog
和
gtkwave
都是通过命令行运行。
继续安装
安装完成
三.
测试
D:\iverilog\samples
下有一些例子,我们用这些例子进行测试,
在该目录下右键打开命令行,
编译,需要一会,有点慢
iverilog -o hello .\hello.vl
运行
vvp .\hello
lfsr16
的例子
PS D:\iverilog\samples> iverilog -o lfsr16 .\lfsr16.v
PS D:\iverilog\samples> vvp .\lfsr16
VCD info: dumpfile lfsr16.vcd opened for output.
xxxxx
10000
00001
00011
00111
01111
11110
11101
11010
10101
01011
10110
01100
11001
10010
00100
01000
10000
00001
00011
00111
01111
11110
11101
11010
10101
01011
10110
01100
11001
10010
00100
01000
10000
103: $finish called at 380 (1s) :
PS D:\iverilog\samples>
Sqrt 的例子
PS D:\iverilog\samples> iverilog -o sqrt .\sqrt.vl
PS D:\iverilog\samples> vvp .\sqrt
0 main.acc = 0000000000000000
225 main.acc = 0000000000000100
235 main.acc = 0000000000000110
63) --> 7
129: $finish called at 245 (1s) :
245 main.acc = 0000000000000111
PS D:\iverilog\samples>
四.
生成查看波形
上述
lfsr.v
的例子中
以下语句
initial begin
$dumpfile("lfsr16.vcd");
$dumpvars(-1, dut);
$monitor("%b", dout);
e
nd
记录波形文件
lfsr16.vcd
$dumpvars(-1, dut);
改为
$dumpvars(
0
, dut);
即记录
lfsr16 dut
实例模块下所有子模块的信号。
命令行中输入
gtkwave
打开
gtkwave
的
GUI
File->Open New Tab
打开
vcd
文件
添加信号,显示波形
五.
总结
iverilog+gtkwave
非常轻量级的黄金搭档,非常好用,我们这里熟悉下其环境搭建。
为分析
OpenC906
的构建过程做下知识准备。
Iverilog
文档参见
https://iverilog.fandom.com/wiki/User_Guide
Gtkwave
文档见
https://gtkwave.sourceforge.net/gtkwave.pdf
Iverilog
仓库
https://github.com/steveicarus/iverilog
Gtkwave
仓库
https://github.com/gtkwave/gtkwave