(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.最后得到的波形如下图

相关推荐
悲喜自渡7217 小时前
硬件加速(FPGA)
fpga开发
雨霁初曦8 小时前
串行数据检测器,检测到011,Y输出1,否则为0.
fpga开发·数字电路与逻辑设计·logisim
Major_pro8 小时前
MIG_IP核的时钟系统
fpga开发
小眼睛FPGA18 小时前
【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程
科技·嵌入式硬件·ai·fpga开发·fpga
9527华安19 小时前
FPGA实现SDI转LVDS视频发送,基于GTP+OSERDES2原语架构,提供工程源码和技术支持
fpga开发·音视频·lvds·gtp·sdi·oserdes2
三贝勒文子1 天前
Synopsys 逻辑综合之 MultiBit Flip-Flop 与 ICG
fpga开发·eda·synopsys
骁的小小站1 天前
HDLBits刷题笔记和一些拓展知识(十一)
开发语言·经验分享·笔记·其他·fpga开发
千宇宙航1 天前
闲庭信步使用图像验证平台加速FPGA的开发:第九课——图像插值的FPGA实现
图像处理·计算机视觉·缓存·fpga开发
尤老师FPGA1 天前
LVDS系列20:Xilinx 7系ISERDESE2原语(一)
fpga开发
XINVRY-FPGA2 天前
XCZU47DR-2FFVG1517I Xilinx FPGA AMD ZynqUltraScale+ RFSoC
人工智能·嵌入式硬件·fpga开发·信息与通信·信号处理·射频工程·fpga