搭建verilator仿真环境 实例:双控开关

这篇博客介绍了如何使用Verilator进行硬件描述语言(HDL)的仿真。首先,展示了简单的Verilog模块our_OnOff.v,然后编写了C++测试模块main.c,该模块随机生成输入并验证输出是否正确。接着,详细说明了Verilator的安装和配置步骤,包括生成目标文件、编译和运行仿真。整个过程涵盖了Verilator的命令行选项,以及如何通过assert语句确保仿真结果的正确性。
摘要由CSDN通过智能技术生成

Verilator的安装请点这个链接

1、模块准备

首先,我们先写好一个模块,如our_OnOff.v:

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

2、测试模块

main.c 如下:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "Vour_OnOff.h"  //因为创建的是our_OnOff.v 所以头文件要包含Vour_OnOff.h(把V放在前面)


int main(int argc,char **argv)
{
  Verilated::commandArgs(argc,argv);
  Vour_OnOff *top = new Vour_OnOff("top");
  while(!Verilated::gotFinish())
{                                                                                                                                 
  int a = rand() & 1;
  int b = rand() & 1;
  top->a = a;
  top->b = b;
  top->eval();
  printf("a = %d, b = %d, f = %d\n",a,b, top->f);
  assert(top->f == a ^ b);
 }
  delete top;
  return 0;
}

在一次循环中, 代码将会随机生成两个1比特信号, 用来驱动两个输入端口, 然后通过eval()函数更新电路的状态, 这样我们就可以读取输出端口的值并打印. 为了自动检查结果是否正确, 我们通过assert()语句对输出结果进行检查.

3、运行仿真

运行仿真分成三步:

a、生成目标文件夹

verilator -Wall --cc --exe --build main.cpp our_OnOff.v
  1. -Wall so Verilator has stronger lint warnings enabled.

  2. --cc to get C++ output (versus e.g. SystemC or only linting).

  3. --exe, along with our sim_main.cpp wrapper file, so the build will create an executable instead of only a library.

  4. --build so Verilator will call make itself. This is we don’t need to manually call make as a separate step. You can also write your own compile rules, and run make yourself as we show in Example SystemC Execution.)

  5. An finally, our_OnOff.v which is our SystemVerilog design file.    

运行完后会在当前目录生成obj_dir文件夹,这么多文件不需要深究。 

b、编译

make -C obj_dir -f Vour_OnOff.mk Vour_OnOff
  • Vour_OnOff.mk 也是生成出来的一个文件,在 obj_dir 文件夹里面,用于自动化的编译控制
  • 最后一个参数是输出可执行文件的文件名,最好不要乱改,就"V" + "design_name"

c、运行

./obj_dir/Vour_OnOff

 

当然,我可以为您提供关于Verilator的一些基本信息和教程。Verilator是一个开源的Verilog仿真器,它可以将Verilog代码转换为C++代码,并生成可执行文件来模拟硬件行为。以下是一些学习Verilator的步骤和资源: 1. 安装Verilator:首先,您需要在您的系统上安装Verilator。您可以从官方网站(https://www.veripool.org/wiki/verilator)上下载并按照指南进行安装。 2. Verilator基础知识:了解Verilator的工作原理和基本概念是很重要的。您可以阅读官方文档中的入门指南,其中包含了一些基本示例和说明。 3. 编写Verilog代码:编写您想要仿真的Verilog模块。确保您的代码符合Verilog语法规范,并且您对所编写的硬件行为有清楚的理解。 4. 编译和运行:使用Verilator编译您的Verilog代码,并生成可执行文件。您可以使用Verilator提供的命令行选项来进行自定义设置和配置。运行可执行文件将启动硬件仿真。 5. 调试和验证:使用调试工具和仿真波形查看器来验证您的硬件仿真结果。这将帮助您识别和解决任何潜在的问题。 此外,还有一些在线资源可以帮助您深入了解Verilator的更多细节和用法,例如: - Verilator官方文档:官方网站提供了详细的文档,包括用户指南、参考手册和示例代码。 - Verilator GitHub仓库:您可以在GitHub上找到Verilator的源代码和一些示例项目。 - Verilator论坛:加入Verilator用户论坛,与其他用户交流经验和解决问题。 希望这些信息对您有所帮助!如果您有任何进一步的问题,请随时提问。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值