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

相关推荐
daxi1501 小时前
Verilog入门实战——第5讲:Testbench 仿真编写 + 波形查看与分析
fpga开发
FPGA的花路5 小时前
UDP协议
fpga开发·以太网·udp协议
LCMICRO-1331084774615 小时前
长芯微LPS123完全P2P替代ADP123,高性能、低压差的线性稳压器
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·线性稳压器
fei_sun17 小时前
面经、笔试(持续更新中)
fpga开发·面试
xixixi7777717 小时前
通信领域的“中国速度”:从5G-A到6G,从地面到星空
人工智能·5g·安全·ai·fpga开发·多模态
Nobody3319 小时前
Verilog always语句详解:从组合逻辑到时序逻辑
fpga开发
李嘉图Ricado21 小时前
FPGA 时序约束与分析
fpga开发
白又白、1 天前
时序优化和上板调试小结
fpga开发
Z22ZHaoGGGG1 天前
verilog实现采样电流有效值的计算
fpga开发
fei_sun1 天前
牛客Verilog刷题篇
fpga开发