verilator——牛刀小试

verilator——牛刀小试

安装verilator可见:https://blog.csdn.net/qq_40676869/article/details/132648522?spm=1001.2014.3001.5501

正文开始

编写一个异或的电路模块如下:
top.v

module top(
  input a,
  input b,
  output f
);
  assign f = a ^ b;
endmodule

编写C++测试文件
tb_top.cpp

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "verilated.h"
#include "verilated_vcd_c.h"
#include "Vtop.h"

#define MAX_SIM_TIME 200
vluint64_t sim_time = 0;

int main(int argc, char** argv) {
    Vtop *dut = new Vtop;

    Verilated::traceEverOn(true);
    VerilatedVcdC* m_trace = new VerilatedVcdC;
    dut->trace(m_trace, 5);
    m_trace->open("waveform.vcd");
    while (sim_time < MAX_SIM_TIME) {
	    int a = rand() & 1;
	    int b = rand() & 1;
	    dut->a = a;
        dut->b = b;
        dut->eval(); 
        printf("a = %d, b = %d, f = %d\n", a, b, dut->f);
        m_trace->dump(sim_time);
        sim_time++;
        assert(dut->f == (a ^ b));
    }
    m_trace->close();
    delete dut;
    return 0;
}

编译并运行

verilator --cc --trace --exe --build -Wall tb_top.cpp top.v

–cc 将.v文件翻译成c++
–exe 创建可执行文件
–build verilator自动进行make
–trace 记录波形

查看波形

sudo apt install gtkwave
gtkwave waveform.vcd

波形如下:

在这里插入图片描述
github链接:https://github.com/mulinhu/CPPer/tree/main/verilog/demo1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值