(done) 如何使用 verilator 和 gtkwave 调试电路?

1.首先创建一个文件夹,名为 verilator-demo

bash 复制代码
mkdir verilator-demo

2.接着设计一个电路,名为 ledmodule.v

v 复制代码
module ledmodule(
	output reg led,
	input clk,
	input rst
);

reg [2:0] counter = 3'd0;

always @(posedge clk) begin
	counter <= (counter + 1'd1);
	if(counter >= 3'd2) begin
		led <= 1'd1;
	end else begin
		led <= 1'd0;
	end
	if(rst) begin
		counter <= 3'd0;
		led <= 1'd0;
	end
end

endmodule

3.然后编写测试床,这是 cpp 文件,如下:

cpp 复制代码
#include <stdlib.h>
#include <iostream>
#include <verilated.h>
#include <verilated_vcd_c.h>
#include "obj_dir/Vledmodule.h"

#define MAX_TIME 60
vluint64_t sim_time = 0;

int main(int argc, char **argv, char **env) {
	Vledmodule *dut = new Vledmodule;
	Verilated::traceEverOn(true);
	VerilatedVcdC *m_trace = new VerilatedVcdC;
	dut->trace(m_trace, 5);
	m_trace->open("waveform.vcd");

	while(sim_time < MAX_TIME) {
		dut->clk ^= 1;
		dut->rst = 0;
		dut->eval();
		m_trace->dump(sim_time);
		sim_time++;
	}

	m_trace->close();
	delete dut;
	exit(EXIT_SUCCESS);
}

4接着运行如下命令,生成可执行文件,运行可执行文件产生波形

bash 复制代码
verilator --cc ledmodule.v 
verilator -Wall --trace --exe --build -cc ledmodule.cpp ledmodule.v
./obj_dir/Vledmodule

5.使用 gtkwave 打开波形

bash 复制代码
gtkwave waveform.vcd

6.最后得到的波形如下图

相关推荐
博览鸿蒙9 小时前
FPGA 工程中常见的基础硬件问题
fpga开发
GateWorld13 小时前
FPGA 实现无毛刺时钟切换
fpga开发·实战·无毛刺时钟
Seraphina_Lily15 小时前
从接口选型到体系结构认知——谈 CPU–FPGA–DSP 异构处理系统与同构冗余设计
fpga开发
Seraphina_Lily16 小时前
CPU–FPGA–DSP 异构系统中的总线接口选型——为什么 CPU 用 eLBC,而 DSP 用 XINTF?
fpga开发
GateWorld17 小时前
FPGA开发十年心路
fpga开发
ALINX技术博客1 天前
【ALINX 教程】FPGA Multiboot 功能实现——基于 ALINX Artix US+ AXAU25 开发板
fpga开发·fpga
Genevieve_xiao1 天前
【verilog】如何一小时成为verilog高手(并非
fpga开发
从此不归路1 天前
FPGA 结构与 CAD 设计(第3章)上
ide·fpga开发
Aaron15882 天前
基于VU13P在人工智能高速接口传输上的应用浅析
人工智能·算法·fpga开发·硬件架构·信息与通信·信号处理·基带工程
碎碎思2 天前
在 FPGA 上实现并行脉冲神经网络(Spiking Neural Net)
人工智能·深度学习·神经网络·机器学习·fpga开发