Verilator Pt.1: Introduction

这篇博客介绍了如何使用Verilog进行测试平台的搭建,特别是针对ALU单元的验证。主要内容包括头文件的包含、测试bench的简单形式以及如何生成波形文件waveform.vcd。通过定义最大仿真时间和模拟时钟的翻转,实现了对alu模块的仿真与信号跟踪,从而得到波形图。
摘要由CSDN通过智能技术生成

PART 01 所学资源

01 头文件

#include <stdlib.h>
#include <iostream>
#include <cstdlib>
#include <verilated.h>  //这个+后面的为了产生波形vcd
#include <verilated_vcd_c.h>
#include "Valu.h"  //这个+后面都是在obj_dir文件中的函数,其中Valu.h是主要设计的头部函数,包含了转换后的ALU类定义
#include "Valu___024unit.h" //是ALU的内部头标

#define MAX_SIM_TIME 300
#define VERIF_START_TIME 7
vluint64_t sim_time = 0;
vluint64_t posedge_cnt = 0;

简单形式testbench

#include <stdlib.h>
#include <iostream>
#include <verilated.h>
#include <verilated_vcd_c.h>
#include "Valu.h"
#include "Valu___024unit.h"

#define MAX_SIM_TIME 20 //设置最大仿真时间
vluint64_t sim_time = 0; //用sim_time追踪何时完成仿真

int main(int argc, char** argv, char** env)
 {
    Valu *dut = new Valu; //例化alu模块
    Verilated::traceEverOn(true);
    VerilatedVcdC *m_trace = new VerilatedVcdC;
    dut->trace(m_trace, 5); //创建m_trace并传递给dut,参数5只是将追踪深度限制在被测设备的5层(lever)
    m_trace->open("waveform.vcd");

 /*   while (sim_time < MAX_SIM_TIME) {
        dut->clk ^= 1;//反转clk(可创建上升沿/下降沿
        dut->eval();//评估alu的所以信号
        m_trace->dump(sim_time);//把被追踪信号值传递给波形图,目前只有clk模块
        sim_time++;
    }*/ 此部分和实现内容有关,其余为框架代码

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

产生波形图如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值