Verilator仿真环境搭建

news2024/11/24 16:04:37

Verilator简介与使用_Hwang_shuo的博客-CSDN博客

Verilator是一种开源的Verilog/SystemVerilog仿真器,可用于编译代码以及代码在线检查,Verilator能够读取Verilog或者SystemVerilog文件,并进行lint checks(基于lint工具的语法检测),并最终将其转换成C++的源文件.cpp和.h。

Verilator不直接将Verilog HDL转换为C++或者SystemC,反之Verilator将代码编译成更快的优化过的并且支持多线程的模型,该模型被依次包装在(wrapped)在C++/SystemC模型中。这样就生成一个编译的Verilog模型,其功能和Verilog是一致的,但效率由于基于C++即使是单线程模型也可以10倍快于SystemC,100倍快于基于解释Verilog的仿真器,并且通过多线程可以进一步加速。

Verilator的作用是将某些Verilog或System Verilog代码翻译成可编译的C++或System C代码,或者库,之后再编写合适的驱动代码也就是sim_main.cpp,一同使用C编译器进行编译,由此得到可执行的程序,来对Verilog或System Verilog代码进行仿真,得到波形图等仿真结果。

其详细的执行过程如下:

​Verilator通过读取指定的 Verilog 或 System Verilog 代码、对其执行 lint 静态代码检查以及可选地插入断言检查和覆盖分析点。它可以输出单线程或多线程的 .cpp 和 .h 文件,即“Verilated(经过验证的)”代码。

​用户需要编写的一个C++ / System C Wrapper file 封装文件,这个文件会定义main()函数,它会将“Verilated”模型实例化为C++/System C对象。

​用户的Wrapper file、Verilator创建的文件、Verilator提供的“运行时的库”和System C库,这些 C++ / System C 文件之后会由 C++ 编译器 (gcc / clang / MSVC++) 统一进行编译。生成的可执行文件来执行设计仿真。Verilator 还支持将其生成的库(可选加密)链接到其他模拟器。

生成的可执行文件将在“模拟运行”期间执行实际的模拟。还可以生成可查看的设计波形轨迹。

Verilator 并非简单地将 Verilog HDL 转换为 C++ 或 System C。Verilator会将代码编译成一个优化更快的和可选的线程分区模型,该模型又包装在 C++/ System C 模块中。结果就是一个编译好的 Verilog 模型,即使在单线程上的执行速度也比独立的System C快10倍以上,在单线程上的执行速度比解释过的Verilog模拟器(如Icarus Verilog)快100倍左右。多线程可能会带来2-10倍的加速(比解释的模拟器快200-1000倍)。 Verilator 通常具有与闭源 Verilog 模拟器(Carbon Design Systems Carbonator、Modelsim、Cadence Incisive/NC-Verilog、Synopsys VCS、VTOC 和 Pragmatic Cver /CVC)相似或更好的性能。

pre-install:

sudo apt install clang iverilog gtkwave help2main git perl python3 make autoconf g++ flex bison ccache libgoogle-perftools-dev numactl perl-doc libfl2 libfl-dev zlibc zlib1g zlib1g-dev

clone:

$ git clone https://github.com/verilator/verilator
正克隆到 'verilator'...
remote: Enumerating objects: 74926, done.
remote: Counting objects: 100% (222/222), done.
remote: Compressing objects: 100% (139/139), done.
remote: Total 74926 (delta 105), reused 150 (delta 83), pack-reused 74704
接收对象中: 100% (74926/74926), 31.84 MiB | 30.00 KiB/s, 完成.
处理 delta 中: 100% (63697/63697), 完成.
zlcao@zlcao-Vostro-3268:~/sim$ cd verilator/
zlcao@zlcao-Vostro-3268:~/sim/verilator$ git checkout stable
分支 'stable' 设置为跟踪来自 'origin' 的远程分支 'stable'。
切换到一个新分支 'stable'
$ autoconf
$ unset VERILATOR_ROOT
$ autoconf 
$ ./configure
$ make -j8
$ make install

testing:

cd /home/zlcao/sim/verilator/examples/make_tracing_c && make

 see waveform

Reference

Installation — Verilator 5.014 documentation


End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第六章:Linux基础IO

系列文章目录 文章目录 系列文章目录前言打开文件预备知识回顾C文件IO操作C语言I/O库函数fopen/fcloseperrorfwrite/freadfgets/fputsprintf/fprintf/sprintf/snprintfstdin/stdout/stderr 标志位系统调用IO接口open/closeumaskwrite/read lseek库函数IO操作与系统调用IO操作比…

ubuntu 20.0.4 搭建nvidia 显卡环境

一、安装docker 1、安装dokcer sudo apt install docker.io2、docker 添加到用户组 创建docker用户组 sudo groupadd docker添加当前用户加入docker用户组 sudo usermod -aG docker ${USER}重启docker服务 sudo systemctl restart docker切换或者退出当前账户再从新登入 …

【单片机】51单片机,晨启科技,板子引脚对应关系

一般引脚: sbit beepP2^4; //将单片机的P2.4端口定义为beep.本口用于屏蔽上电后蜂鸣器响 sbit ledP1^0; //将单片机的P1.0端口定义为led,用于点亮LED-D1 sbit DIG1P0^0; //数码管位选1 sbit DIG2P0^1; //数码管位选2P10xFF;//初始化P1引脚全部置高&a…

【计算机网络】第四章 IPv4

文章目录 4.3 IPv44.3.1 IPv4 地址概述4.3.2 分类编址的 IPv4 地址 4.3 IPv4 IPv4是互联网协议第四版(Internet Protocol version 4)的简称。它是现今互联网最常用的网络层协议,为互联网上的设备提供了唯一的逻辑地址,用于在网络…

【电机绘图】:插补算法(一)—直线插补—逐点比较法

今日介绍学习一种使用电机作画、绘图、加工零件时需要使用的算法 : 插补算法 本文提供直线插补的概念基础,基本思路分析,C语言实现等,代码会直接贴出! 插补算法是指在数值计算或数据处理中,根据已有的数据…

Windows环境利用QT+CMake编译mingw版本的opencv

Opencv官网没有提供mingw版本的opencv库,所以需要自己编译,下面是编译过程,32位64位方法类似。 可以直接下载编译好的mingw版本opencv4.4: 使用CMAKE3.22QT5.13编译后的opencv4.4(32位的)资源-CSDN文库 …

【win10专业版远程控制】 自带远程桌面公司内网电脑

使用win10专业版自带远程桌面公司内网电脑 文章目录 使用win10专业版自带远程桌面公司内网电脑 在现代社会中,各类电子硬件已经遍布我们身边,除了应用在个人娱乐场景的消费类电子产品外,各项工作也离不开电脑的帮助,特别是涉及到数…

Nginx环境搭建、docker安装

1.Nginx安装 1)首先创建Nginx的目录并进入 [rootlucky ~]# mkdir /soft && mkdir /soft/nginx/ [rootlucky ~]# cd /soft/nginx/ [rootlucky nginx]# 2)下载Nginx的安装包,可以通过FTP工具上传离线环境包,也可通过wget命…

数据标注对新零售的意义及人工智能在新零售领域的应用?

数据标签对于新零售至关重要,因为它构成了训练和部署人工智能(AI)和机器学习(ML)模型的基础。在新零售的背景下,数据标签涉及对数据进行分类、标记或注释以使其能够被机器理解的过程。然后,这些…

手把手写深度学习(20):搭建LLM大语言模型的敏感词过滤系统

前言:随着Llama 2、通义千问7B等越来越多的大语言模型开源,开发者们可以基于这些开源的模型搭建自己的对话系统、Agent等。但是因为我们的国情,需要开发者对这些模型进行一些特殊的“安全性”考虑,保证与用户的交互不会出现“有害信息”。这篇博客手把手教大家搭建一个大语…

效率利器之事件委托

前言 公司产品部推出了一款新产品,经理指派小A负责推广工作。小A通过多方打听了解到推广流程,需要使用公司证件在几个平台注册账号,并经过多轮审批。小A经历了一番操作后感到身心俱疲,最终成功将产品发布到公众平台上。 与此同时…

GB:重测序+转录2023经典文章,一篇就够

在三代测序崛起的现在,HiFi Reads以其超长读长,高准确率及灵敏度、GC偏向性小、无PCR偏向性等特色优势在动植物基因组、微生态领域等研究中正崭露头角,成为组学研究技术的新热门。高品质的HiFi Reads成为攻克动植物基因组组装难点的有力助推&…

SNAP插件sen2Three去云操作

1.先把这篇文章看了 2.去官网下载Sen2Three 3.这时候可以大概看看Sen2Three的官方文档,我们知道了需要用anaconda2环境 4.我是已经安装有anaconda3,所以需要两个并存,此时可以参考这篇文章 5.这是ananconda2的链接,直接下载安装即可&#xff…

南卡签约游泳冠军傅园慧,创造防水运动耳机的新天花板!

近日,国内骨传导运动耳机龙头品牌NANK南卡,正式官宣知名游泳冠军傅园慧出任品牌形象大使。在此之外,南卡品牌方还特邀了同样作为游泳冠军的孙杨,以及知名演员张新成、流行歌手段奥娟等多位明星来体验旗下的运动耳机,皆…

Python中搭建IP代理池的妙招

在Python的爬虫世界里,你是否也想搭建一个功能强大的IP代理池,让你的爬虫无忧无虑地畅游各大网站?今天,我就来教你使用Scrapy框架搭建IP代理池,让你的爬虫更加智能、高效!跟着我一步一步来,轻松…

天津最新python培训班就业形势 python能就业吗?

小编认为Python是一门非常适合学习的编程语言,无论性别如何。它易于学习、功能强大,并且在各个领域都有广泛的应用,因此,性别不应该成为学习Python的障碍,那么学习Python是否就能找到满意的工作呢? 这是一…

PyTorch深度学习实战(10)——过拟合及其解决方法

PyTorch深度学习实战(10)——过拟合及其解决方法 0. 前言1. 过拟合基本概念2. 添加 Dropout 解决过拟合3. 使用正则化解决过拟合3.1 L1 正则化3.2 L2 正则化 4. 学习率衰减小结系列链接 0. 前言 过拟合 (Overfitting) 是指在机器学习中,模型…

问题解决方案

前端开发 1、npm安装的时候老是卡住 reify:rxjs: timing reifyNode:node_modules/vue/cli/node_modules 查看当前使用的那个镜像 nrm lsnpm ---------- https://registry.npmjs.org/yarn --------- https://registry.yarnpkg.com/cnpm --------- https://r.cnpmjs.org/taobao …

推荐系统工作小结

最初的构想 由于我们的技术团队中并没有人真正用大数据的方法做过推荐系统。所以我们定的步骤是先解决有没有的问题。然后再持续地进行效果优化的工作。 现状 但一方面考虑到要快速上线。另一方面也希望对推荐系统的效果有一个合理的参照。我们打算先使用达观数据的推荐系统云…

无涯教程-Perl - endpwent函数

描述 此功能告诉系统您不再希望使用getpwent从密码文件读取条目。在Windows下,使用Win32API::Net函数从域服务器获取信息。 语法 以下是此函数的简单语法- endpwent返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perlwhile(($name, $pas…