如何在 Linux 上安装 Verilog HDL?
Verilog 代表验证逻辑。它广泛用于硬件设备编程,随着芯片系统和硬件设备需求的增加,Verilog HDL越来越受欢迎。在 Verilog 中,数字设备在 RTL 级别抽象的设计和验证变得不那么复杂。理解 Verilog 与 C 编程一样,因为它的大部分语法都与之相似。
随着对 VLSI 需求的增加,芯片的设计数量也在增加。在最初的日子里,很难综合逻辑和调试代码。因此硬件描述语言应运而生。最新的 Verilog HDL 标准通过使设计在逻辑上可综合且易于调试,对 HDL 编程具有重要意义。现在我们将编写我们的第一个 Verilog 程序并在 Linux Kernel 中安装 Verilog。
在 Linux 上安装 Verilog HDL
Icarus Verilog 是一个 Verilog 模拟和综合工具。使用此工具,它以特定目标格式作为 Verilog 编译器运行。该编译器可以生成一个称为 vvp 汇编的中间形式,用于批量模拟,该中间形式是在“vvp”命令的帮助下执行的。对于综合,编译器生成所需格式的网表。
第 1 步:在本地克隆 Icarus Verilog 存储库。克隆 Icarus Verilog 存储库:git clone https://github.com/steveicarus/iverilog.git。克隆存储库后,将创建一个名为 iverilog 的目录,现在使用 cd 命令更改当前工作目录。
git clone https://github.com/steveicarus/iverilog.git
cd iverilog
第 2 步:配置文件。进入iverilog 目录后,配置步骤非常少。要在本地存储库中配置iverilog,请运行以下命令。
sh autoconf.sh
如果您遇到错误,则意味着您的系统中没有安装 autoconf。通过输入以下命令安装 autoconf。
Fedora: sudo dnf install autoconf
Ubuntu: sudo apt-get install autoconf
成功的配置消息如下所示:
Autoconf in root…
Precompiling lexor_keyword.gperf
Precompiling vhdlpp/lexor_keyword.gperf
然后配置文件以更新默认设置。
./configure
现在您可以开始工作了。
第三步:安装iverilog和GTKWave。配置默认设置后,进入根目录并运行 make install 命令。但在此之前,请确保您已安装 GCC、g++、bison 和 flex。由于 Verilog 是使用 C 编程创建的:应该安装 g++、gcc、flex 和 bison 以便编译和运行 iverilog 代码。如果您没有 gcc、g++、bison 和 flex,请运行这些命令。
//sudo apt-get install package_name in ubuntu
sudo dnf install flex
sudo dnf install gcc
sudo dnf install bison
sudo dnf install g++
安装完这些必需品后,继续进行安装。
sudo su
make install
sudo dnf install iverilog
sudo dnf install gtkwave
iverilog 安装成功,现在让我们编写 Verilog 代码并运行它。
编译并运行 Verilog 代码
我们将编写一个简单的设计和仿真的门代码。确保使用 .v 扩展名保存 Verilog。真值表是:a b out 0 0 0 0 1 0 1 0 0 1 1 1
首先,创建一个文件名为 dut.v,这是我们在测试代码块下的设计。我们首先定义一个以模块关键字 module 开头的模块名称。我们传递一个端口列表作为模块名称的参数。使用数据流抽象建模。
//dut= save in dut.v
module and_gate(out,a,b);
input a,b;
output out;
assign out = a & b;
//and a1(out,a,b); for gate level abstraction
endmodule
接下来,编写测试平台或模拟代码。仿真是通过向其提供输入来验证设计块。
//testbench for and gate
module tb;
reg A, B; //input assigned to register
wire out; //output assigned to net
//instantiate dut
and_gate dut(out,A,B);
initial
begin
A = 0; B = 0;#10
$display(“A=%b B=%b Output=%b”,A,B,out);
A = 0; B = 1;#10
$display(“A=%b B=%d Output=%b”,A,B,out);
A = 1; B = 0;#10
$display(“A=%b B=%b Output=%b”,A,B,out);
A = 1; B = 1;#10
$display(“A=%b B=%b Output=%b”,A,B,out);
$finish;
end
endmodule
以下语法用于编译和运行 Verilog 代码:
//to complile:
iverilog -o check_code tb.v dut.v
//to run:
vvp check_code
输出:
您可以通过参考真值表来验证输出