Verilog 仿真流程¶
- 首先明确,
Verilog是硬件描述语言,描述的是数字电路信号的逻辑连接关系。 - 其次明确,
Verilog只是描述电路,没有说具体的实现。实现电路时可以用基础门连接、可以用查找表等。 - 仿真是用软件模拟一些信号,测试所设计电路。综合就是把硬件描述语言,转换成实际的电路。
编写Verilog¶
以下面的反相器模块为例:
module Inverter(in, out);
input in;
output out;
assign out = ~in;
endmodule
在Vivado中,该文件被称作design source,后缀为.v。

查看电路图¶
在Vivado的RTL Analysis中,点击Schematic中可以看到该模块的一种电路实现:

可以看到这里就是用一个非门实现了实际的电路。
编写测试文件¶
Verilog分为可综合的部分和不可综合的部分。我们在编写testbench(测试文件)的时候会使用一些不可综合的语法。
`timescale 1ns / 1ps
`define PERIOD 10
module Inverter_TB();
reg clk;
wire out;
initial begin
forever
#(`PERIOD/2) clk = ~clk;
end
initial begin
clk = 1'b0;
end
Inverter myInverter(
.in(clk),
.out(out)
);
endmodule
测试文件在Vivado中被称作simulation source。

仿真¶
在Vivado中展开Simulation菜单,点击Run Simulation,可以得到模块的输入输出随时钟信号的变化。

可以看到反相器的功能验证正确。