1. 已有文件

已知our_OnOff.v和main.cpp文件,编写Makefile文件,在verilator软件仿真

our_OnOff.v

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

main.cpp

#include "verilated_vcd_c.h" //可选,如果要导出vcd则需要加上
#include "Vour_OnOff.h"
#include "stdio.h"
#include <stdlib.h>vluint64_t main_time = 0;  //initial 仿真时间double sc_time_stamp()
{return main_time;
}int main(int argc, char **argv)
{Verilated::commandArgs(argc, argv); Verilated::traceEverOn(true); //导出vcd波形需要加此语句VerilatedVcdC* tfp = new VerilatedVcdC; //导出vcd波形需要加此语句Vour_OnOff *top = new Vour_OnOff("top"); //调用VAccumulator.h里面的IO structtop->trace(tfp, 0);   tfp->open("wave.vcd"); //打开vcdwhile (sc_time_stamp() < 20 && !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);tfp->dump(main_time); //dump wavemain_time++; //推动仿真时间}top->final();tfp->close();delete top;return 0;
}

2. 执行流程

运行仿真分成三步:;

(1)生成目标文件夹;(2)编译;(3)运行和查看波形

2.1 生成目标文件夹

命令:verilator -Wno-fatal our_OnOff.v main.cpp --top-module our_OnOff --cc --trace --exe

-Wno: 忽略非 fatal 的 warning
our_OnOff.v: 是设计文件
main.c"是主程序
--top-module:顶层模块名,注意是模块名,不是文件名
--cc:表明是C++,不过 c 程序也是支持的
--trace 表明会追踪波形,如果需要导出vcd 或者 fst 等其他波形文件,需要加上这个选项
--exe:生成可执行文件

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

2.2 编译

命令:make -C obj_dir -f Vour_OnOff.mk Vour_OnOff

  • 使用 -C 选项改变目录,你能看到 make 命令首先切到特定的目录下,在那执行
  • Vour_OnOff.mk 也是生成出来的一个文件,在 obj_dir 文件夹里面,用于自动化的编译控制
  • 最后一个参数是输出可执行文件的文件名,最好不要乱改,就"V" + "design_name"

2.3 运行和查看波形

./obj_dir/Vour_OnOff
gtkwave wave.vcd

verilator的第一个程序,注意流程和命令相关推荐

  1. java mybatis狂神说sql_狂神说MyBatis01:第一个程序

    狂神说MyBatis系列连载课程,通俗易懂,基于MyBatis3.5.2版本,欢迎各位狂粉转发关注学习,视频同步文档.未经作者授权,禁止转载 MyBatis简介 环境说明: jdk 8 + MySQL ...

  2. 她,诗人拜伦之女,英国数学家,历史上第一位程序员

    作者丨吴军 来源丨大数据文摘 摘自丨<信息论> 人类使用机械处理信息的尝试是由两个看似不该有交集的英国人开启的. 在英格兰中部莱斯特郡的柯比-马洛里庄园,住着一对母女. 1816年初那个多 ...

  3. ARM 之八 Cortex-M/R 内核启动过程 / 程序启动流程(基于IAR)

      在前面的文章<ARM 之 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC)>中已经介绍过了 Cortex-M/R 内核相关内容.这里基于 IAR 的启动流程与之前 ...

  4. 万能门店小程序_超市门店微信小程序注册流程

    现在超市门店商家利用小程序卖货已经非常普遍,小程序可以便捷地连接线上线下通道,让商家不再局限于门店周围的流量,能够从微信获取更多客户,从而提升销量和店铺知名度.超市要想有自己的线上电商小程序,就得先注 ...

  5. Qt 第一步 HelloWorld 的第一个程序

    简言 Qt 是基于C++的 GUI 解决方案.QT简单易学(底层封装的好).跨平台.相关资料易得到. 开始写Qt 相关的文章的主要原因是,我本人在编写一个视频录制及相关处理的项目,写到一半发现.net ...

  6. CPU上电后加载程序的流程 | 基于RK3399

    芯片上电解复位之后执行的第一段程序,在芯片中称之为Bootrom loader.这部分程序在芯片制造过程中固化到其内部的ROM空间,具备只读属性,在实际使用过程中无法修改这部分内容,这部分程序的知识产 ...

  7. MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结

    MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结 1.MFC单文档程序运行流程 1.首先利用全局变量对象 theApp 启动应用程序 (这是因为这个全局对象,基类CWinApp中 this ...

  8. python模型训练 warm_start_08-06 细分构建机器学习应用程序的流程-训练模型

    AI 人工智能 08-06 细分构建机器学习应用程序的流程-训练模型 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https:// ...

  9. 小程序 cover-view 字体_【企商云】2021年,要知道的9个小程序开发流程清单

    从17年小程序上线后,格外受到市场青睐,从火爆春节的"跳一跳"到商界巨头头条.百度.支付宝等纷纷上线,而20年疫情期间更让小程序成为商家运营法宝,极力转型线上线下.如今距离2021 ...

最新文章

  1. 为什么越来越多硕博人消失在朋友圈?
  2. springMVC参数传递(三)
  3. 从各方面数据来看《猎场》为什么收官后热度依旧
  4. 使用ssh连接WSL
  5. 电机控制pid_微电机控制如此简单,揭秘微电机调速的控制,PID控制之双环调速...
  6. 【MySQL 】学习笔记千行总结
  7. jsonobject转list集合_怎样优雅的操作集合,CollectionUtils工具类正确使用姿势
  8. 买不买D50的N个理由
  9. kingcms php 排序 标签,Phpcms v9 如何设置排序listorder
  10. LeetCode69. x 的平方根(二分查找)
  11. python培训班靠谱吗-Python培训班多少钱
  12. 数据结构作业——ギリギリ eye(贪心+优先队列/贪心+并查集)
  13. 世界首例AI同性婚姻惊呆众人 | Siri和Alexa结婚了
  14. android wifi tethering,新增Wi-Fi/USB Tethering功能
  15. Oracle Flashback之flashback table
  16. java中enhancer试什么_Java Enhancer類代碼示例
  17. 6步教你封杀恶意登录服务器的ip
  18. echarts 自定义平均线值
  19. 【企业架构设计实战】大数据架构设计
  20. 软件产品测试之压力测试

热门文章

  1. linux服务篇-RSYNC数据备份
  2. YOLOv7训练自己的VOC数据集
  3. asp实现注册登录界面_大明:手机怎样同时登录两个微信?教你方法,简单实用很有效...
  4. cpu被锁频解除方法_笔记本cpu被锁频怎么解
  5. 简单使用Protostuff来完成序列化与反序列化
  6. linux创建fcoe接口,UCS FCoE上行链路配置示例
  7. LTE系统上行链路调度算法研究
  8. PTA 7-132 闰年判断
  9. C++获取浏览器浏览历史(兼容谷歌、IE、火狐)
  10. Java B组蓝桥杯第八届国赛:生命游戏