Ubuntu 安装Verilator——翻译自官网

… 威尔逊-斯奈德版权所有 2003-2023。
… SPDX 许可证标识符: 仅限 LGPL-3.0 或 Artistic-2.0

… _安装:


安装


本节讨论如何安装 Verilator。

软件包管理器快速安装

使用发行版的软件包管理器是最简单的入门方法。入门的最简单方法。(请注意,软件包不太可能有最新版本,因此:ref:Git Install 可能是更好的选择)。
安装软件包:

   apt-get install verilator # 在 Ubuntu 上对于其他发行版,请参考 [Repology Verilator Distro Packages](https://repology.org/project/verilator)

Git 快速安装

从 Git 安装 Verilator 具有最大的灵活性。
选项和详情,请参阅下面的 :ref:详细构建说明

简而言之,从 Git 安装

   # 先决条件:#sudo apt-get install git help2man perl python3 make autoconf g++ flex bison ccache#sudo apt-get install libgoogle-perftools-dev numactl perl-doc#sudo apt-get install libfl2 # 仅适用于 Ubuntu(如果出错,忽略不计)#sudo apt-get install libfl-dev # 仅适用于 Ubuntu(如果提示错误,忽略不计)#sudo apt-get install zlibc zlib1g zlib1g-dev # 仅适用于 Ubuntu(如有错误,忽略不计)git clone https://github.com/verilator/verilator # 仅限首次使用# 每次需要构建时unsetenv VERILATOR_ROOT # 用于 csh;如果使用 bash,则忽略错误unset VERILATOR_ROOT # 用于 bashcd verilatorgit pull # 确保 git 仓库是最新的git tag # 查看版本#git checkout master # 使用开发分支(例如最近的错误修复)#git checkout stable # 使用最新的稳定版本#git checkout v{version}  # 切换到指定的发布版本autoconf # 创建 ./configure 脚本./configure # 配置并创建 Makefilemake -j `nproc` # 编译 Verilator 本身(如果出错,尝试只用 "make")。sudo make install

详细编译说明

本节描述了构建过程的细节,并假定你是从
从 Git 构建。要使用预编译的 Linux
请参阅 :ref: “软件包管理器快速安装”。

操作系统要求

Verilator 主要在 Ubuntu 上开发和测试,另外还在 FreeBSD 和 Apple OS-X 上进行了测试。
FreeBSD 和 Apple OS-X 上进行测试。还在 Red Hat
Linux、其他 GNU/Linux 类平台、Windows Subsystem for
Linux 子系统 (WSL2)、Cygwin 下的 Windows 以及 MinGW 下的 Windows (gcc
-mno-cygwin)。Verilated 输出(非 Verilator 本身)可在所有
选项,以及使用 MSVC++ 进行编译。

安装前提

要构建或运行 Verilator,您需要以下标准软件包:

   sudo apt-get install git help2man perl python3 makesudo apt-get install g++ # 或者,clangsudo apt-get install libgz # 非 Ubuntu(如果提示错误,请忽略)sudo apt-get install libfl2 # 仅适用于 Ubuntu(如果提示错误,忽略不计)sudo apt-get install libfl-dev # 仅适用于 Ubuntu(若出错请忽略)sudo apt-get install zlibc zlib1g zlib1g-dev # 仅适用于 Ubuntu(如显示错误,忽略不计)

要构建或运行 Verilator,以下是可选项,但必须安装以获得良好性能:

   sudo apt-get install ccache # 如果编译时存在,运行时需要sudo apt-get install mold # 如果编译时有,运行时需要sudo apt-get install libgoogle-perftools-dev numactl

以下内容可有可无,但建议使用,以便命令行渲染效果更佳

   sudo apt-get install perl-doc

要构建 Verilator,您需要安装这些软件包;运行 Verilator 时不需要安装这些软件包。

   sudo apt-get install git autoconf flex bison

开发 Verilator 本身的用户可能也需要这些软件包(参见 internals.rst):

   sudo apt-get install clang clang-format-14 cmake gdb gprof graphviz lcovsudo apt-get install libclang-dev yapf3 bearsudo pip3 install clang sphinx sphinx_rtd_theme sphinxcontrib-spelling breathe ruffcpan install Pod::Perldoccpan install Parallel::Forker
安装 SystemC

^^^^^^^^^^^^^^^
如果要使用 SystemC(相对于直接 C++ 输出),请下载SystemC。 按照他们的安装说明。您需要设置选项:SYSTEMC_INCLUDE 环境变量,指向包含目录,并设置 :option:SYSTEMC_LIBDIR 环境变量指向包含 systemc.h的目录。环境变量,使其指向包含 libsystemc.a 的目录。

安装 GTKWave

^^^^^^^^^^^^^^^

要使用 Verilator FST 跟踪功能,您需要安装 GTKwave 安装,但在 Verilator 构建时并不要求安装。
在 Verilator 构建时并非必需。

获取源代码

从 git 仓库获取源代码

git clone https://github.com/verilator/verilator   # Only first time
## Note the URL above is not a page you can see with a browser; it's for git only

输入签出并确定使用哪个版本/分支:

   cd verilatorgit pull # 确保我们是最新版本git tag # 查看存在哪些版本#git checkout master # 使用开发分支(如最近的错误修复)#git checkout stable # 使用最新发布的版本#git checkout v{version}  # 切换到指定的发布版本

自动配置

创建配置脚本:

autoconf # 创建 ./configure 脚本

最终安装选项

在配置编译之前,您必须决定如何将 Verilator最终将 Verilator 安装到系统中的方式。Verilator 将编译环境变量:option:VERILATOR_ROOT 的当前值、和 :option:SYSTEMC_LIBDIR 作为默认值编译到可执行文件中。因此在配置前必须正确无误。

这些是安装选项:

  1. 从 VERILATOR_ROOT 就地运行
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    我们个人最喜欢从 Verilator 的 Git目录中就地运行 Verilator(不要运行 make install)。这样可以最方便地实验和升级,并允许多个版本的 Verilator并存。
   export VERILATOR_ROOT=`pwd` # 如果你的 shell 是 bashsetenv VERILATOR_ROOT `pwd` # 如果你的 shell 是 csh./configure# 运行时将使用 $VERILATOR_ROOT 中的文件,因此无需安装

注意 安装后(参见 安装,调用程序或 shell必须设置环境变量 :option:VERILATOR_ROOT 指向此Git 目录,然后执行 $VERILATOR_ROOT/bin/verilator,这样就能找到所有需要的文件路径。找到所有所需文件的路径。

  1. 安装到特定前缀
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    您可能是操作系统软件包维护者,正在构建一个 Verilator 软件包,也可能最终要将其安装到一个项目文件夹中。最终可能会安装到项目/公司范围内的 "CAD "工具盘中,该盘可能支持每个工具的多个版本。该工具可能支持每个工具的多个版本。请配置最终目标目录名称。 我们建议目标位置包含 Verilator 版本名:
   unset VERILATOR_ROOT # 如果你的 shell 是 bashunsetenv VERILATOR_ROOT # 如果你的 shell 是 csh# 对于压缩包,使用版本号而不是 git describe./configure --prefix /CAD_DISK/verilator/`git describe | sed "s/verilator_//"`

请注意,安装后(请参阅 “安装”),您需要将路径添加到bin "目录的路径。或者,如果使用 modulecmd,你需要一个模块文件,如这样的模块文件:

   set install_root /CAD_DISK/verilator/{version-number-used-above} 设置安装根目录unsetenv VERILATOR_ROOTprepend-path PATH $install_root/binprepend-path MANPATH $install_root/manprepend-path PKG_CONFIG_PATH $install_root/share/pkgconfig
  1. 全局安装系统
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    最后一个选项是全局安装 Verilator,使用configure 的默认系统路径安装 Verilator:
   unset VERILATOR_ROOT # 如果 shell 是 bashunsetenv VERILATOR_ROOT # 如果你的 shell 是 csh./configure

安装后(请参阅 “安装”),二进制文件应位于环境变量 $PATH 中的位置。

配置

上一步介绍了配置软件包的命令。开发人员应配置更完整的开发人员测试。这些测试可能需要额外的软件包。

   export VERILATOR_AUTHOR_SITE=1 # 放到 .bashrc 中./configure --enable-longtests ...以上选项...

编译

编译 Verilator:

   make -j `nproc` # 或者,如果 `nproc` 出错,系统中 CPU 的数量

测试

通过运行自测试检查编译情况:

   make test

安装

如果您使用了除 1. 从VERILATOR_ROOT <#_1_run_in_place_from_verilator_root>方案之外的安装选项,则安装文件:

  make install

Verilator 编译 Docker 容器

此 Verilator 编译 Docker 容器用于编译和测试 Verilator 编译。它使用以下参数:

  • 源代码库(默认:https://github.com/verilator/verilator)

  • 源版本(默认:master)

  • 编译器(GCC 10.3.0、clang 10.0.0,默认:10.3.0)

容器以 verilator/verilator-buildenv 的形式发布在 docker hub 上。

使用当前的 Verilator 主版本运行基本构建:

docker run -ti verilator/verilator-buildenv

同时运行测试

docker run -ti verilator/verilator-buildenv test

更改编译器

docker run -ti -e CC=clang-10 -e CXX=clang+±10 verilator/verilator-buildenv test

由于安全限制,涉及 gdb 的测试无法运行。要运行这些测试

docker run -ti -e CC=clang-10 -e CXX=clang+±10 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined verilator/verilator-buildenv test

与其使用远程 git 仓库构建,不如使用本地文件系统中的工作副本。将本地工作副本路径挂载为卷,然后用它代替 git。这样做时,请注意将所有改动都提交到本地的 git 区域。从版本库的顶层构建当前的 HEAD:

docker run -ti -v ${PWD}:/tmp/repo -e REPO=/tmp/repo -e REV=git rev-parse --short HEAD --cap-add=SYS_PTRACE --security-opt seccomp=unconfined verilator/verilator-buildenv test

重建

要重建 Verilator-buildenv docker 镜像,请运行

docker build .

这也将在所有支持的编译器变体下构建 SystemC,以缩短 SystemC 测试时间。

Verilator 可执行 Docker 容器

Verilator 可执行 Docker 容器允许你以 docker 镜像的形式轻松运行 Verilator,例如

docker run -ti verilator/verilator:latest --version

这将安装容器,运行最新的 Verilator 并打印 Verilator 的版本。
容器会自动为所有已发布的版本构建,因此您可以轻松比较不同版本的结果,例如

docker run -ti verilator/verilator:4.030 --version

Verilator 需要读写本地系统中的文件。为了简化这一过程,可以使用 verilator-docker 方便脚本。例如./verilator-docker 4.030 --version或./verilator-docker 4.030 --cc test.v
如果不想使用 verilator-docker,则必须赋予容器以卷的形式访问文件的权限,并赋予适当的用户权限。例如,verilate test.v

docker run -ti -v ${PWD}:/work --user ( i d − u ) : (id -u): (idu):(id -g) verilator/verilator:latest --cc test.v

该方法只能访问当前目录下的文件。另一种方法是设置卷 -workdir。
你也可以通过设置入口点在容器中工作(如果你想让工作持续进行,别忘了挂载卷):

docker run -ti --entrypoint /bin/bash verilator/verilator:latest

你也可以使用容器在特定提交时构建 Verilator:

docker build --build-arg SOURCE_COMMIT= .

内部

Dockerfile 会构建 Verilator,并在构建完成后移除 Verilator 树,以减小映像大小。入口点是一个封装脚本(verilator-wrap.sh)。该脚本 1. 调用 Verilator,2. 将 Verilated 运行时文件分别复制到 obj_dir 或 -Mdir 中。这样,用户就可以拥有这些文件,以便日后使用匹配的运行时文件构建 C++ 输出。封装器还会相应地修补 Verilated Makefile。

Docker Hub 还定义了一个钩子,并通过自动构建运行。

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

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

相关文章

PHP开源问答网站平台源码系统 源码全部开源可二次开发 附带完整的搭建教程

目前&#xff0c;问答网站已经成为人们获取知识、交流思想的重要平台。然而&#xff0c;对于许多开发者来说&#xff0c;从头开始构建一个问答网站可能会面临各种挑战。今天&#xff0c;小编给大家介绍一款基于PHP的开源问答网站平台源码系统&#xff0c;它不仅源码全部开源&am…

IDEA-快捷键大全

快捷键大全 1 alt r 执行run 2 alt / 提示补全 3 ctrl / 单行注释 4 ctrl shift / 多行注释 5 ctrl alt down 向下复制一行 6 ctrl d 删除一行或者选中行 7 alt down 向下移动行 8 alt up 向上移动行 9 ctrl shift enter 向上开…

AI搜索相关性在网站和APP上的应用

设定场景&#xff1a;您在寻找一件新衣服&#xff0c;所以在浏览最喜欢的网店。您跳到搜索栏上&#xff0c;输入您要找的东西。您期待出现什么结果&#xff1f; 高度准确、相关和即时的结果。 无论在什么网站上搜索&#xff0c;寻找什么&#xff0c;甚至在打错字或使用了错误的…

八个优秀开源内网穿透工具

内网穿透&#xff08;NAT穿透&#xff09;是一种将本地网络服务暴露给互联网的一种技术。这种技术可以很好地解决许多局域网内的资源共享。采用路由的方式将一台计算机变成一个“路由器”&#xff0c;将公共的网络地址转为内部网络地址&#xff0c;从而实现通过英特网可以访问局…

COMP2400Relational Databases

COMP2400Relational Databases WeChat&#xff1a;yj4399_ Sina Visitor System

HarmonyOS应用开发者高级认证--96分

哈哈哈&#xff0c;喜欢分享的我又来了&#xff0c;这不最近在考HarmonyOS应用开发高级认证&#xff0c;给大家做了一期汇总进行学习交流&#xff0c;在这里给大家教一个小技巧&#xff0c;复制粘贴&#xff0c;word搜索&#xff0c;我啥也不知道&#xff0c;我只是说有一个小技…

四位的车号刚好是一个整数的平方。

题目&#xff1a; 一辆卡车违反交通规则&#xff0c;撞人后逃跑.现场有三个人目击事件, 但都没有记住车牌号.只记下车号的一些特征. 甲说&#xff1a;牌照的前两个数字相同&#xff1b; 乙说&#xff1a;牌照的后两个数字相同&#xff0c; 但与前两个不同&#xff0c;丙是位数…

C语言指针学习-从入门到精通

C语言中有指针概念&#xff0c;非常抽象灵魂&#xff0c;想要完全掌握他不是意见容易的事&#xff0c;结合这几天的学习进行一个总结。 一、什么是指针&#xff1a;指针实际就是地址&#xff0c;&#xff08;指针地址&#xff09;&#xff0c;地址就是具体的位置信息。 二、…

2023蓝桥杯算法学习路线与基础知识整理

文章目录 前言数学基础1.1 简单数学1.2 案例2. 1组合数学2.2 案例3. 1线性代数3.2 案例4. 1高等数学4.2 案例 计算几何1.1基础概念1.2 案例2.1基本运算2.2 案例3.1圆3.2 案例 数论1.1基础知识1.2 案例2.1素数2.2 案例3.1同余理论3.2 案例4.1位运算4.2 案例 概率论1.1概率1.2 案…

【23-24 秋学期】NNDL 作业9 RNN - SRN

简单循环网络&#xff08;Simple Recurrent Network&#xff0c;SRN&#xff09;只有一个隐藏层的神经网络&#xff0e; 目录 1. 实现SRN &#xff08;1&#xff09;使用Numpy &#xff08;2&#xff09;在1的基础上&#xff0c;增加激活函数tanh &#xff08;3&#xff0…

uniapp版本更新ios无效

uniapp小程序实现更新操作提示用户升级 引言获取小程序版本是否需要更新以及更新操作1.App.vue文件中实现获取更新方法2.在App.vue的 onShow 里面运行3.App.vue中使用到的提示框封装方法引言 小程序更新时,为了防止小程序由于热启动或者需要在登录时候添加新的缓存,无法获取…

Navicat忘记连接密码,查看数据库密码(JAVA版本、php版)

1、php版参考 navicat 如何查看已经连接了的数据库账号和密码_12992884的技术博客_51CTO博客 2、java版参考 Navicat 如何查看已经连接了的数据库账号和密码|openssl|protected_网易订阅 以上均为转载学习

YOLOv7独家原创改进:自研独家创新FT_Conv,卷积高效结合傅里叶变换

💡💡💡本文自研创新改进:卷积如何有效地和频域结合,引入分数阶傅里叶变换和分数阶Gabor变换,最终创新到YOLOv7。 推荐指数:五星 在道路缺陷检测任务中,原始map为0.8,FT_Conv为0.82 收录YOLOv7原创自研 https://blog.csdn.net/m0_63774211/category_12511937.htm…

力扣347. 前 K 个高频元素(java,最小堆,快速排序法)

Problem: 347. 前 K 个高频元素 文章目录 前言题目描述思路解题方法复杂度Code 前言 对于求取Top K一般有如下两种题型&#xff1a; 1.针对静态数据&#xff08;查询TopK操作&#xff09; 2.针对动态数据&#xff08;包括添加数据操作和查询TOPK操作&#xff09; 一般解决思路…

《一带繁花一路歌》趣味化讲述“一带一路”故事,生动化展现“文明互鉴”美好图景

2023年&#xff0c;总台《艺览天下》推出“一带一路”10期特别节目《一带繁花一路歌》&#xff0c;节目邀请“一带一路”沿线国家驻华大使等重量级嘉宾&#xff0c;在地标推介、故事分享、现场互动等环节里趣味化讲述“一带一路”故事&#xff0c;生动地展现出“文明互鉴”的美…

使用Java将yaml转为properties,保证顺序、实测无BUG版本

使用Java将yaml转为properties 一、 前言1.1 顺序错乱的原因1.2 遗漏子节点的原因 二、优化措施三、源码 一、 前言 浏览了一圈网上的版本&#xff0c;大多存在以下问题&#xff1a; 转换后顺序错乱遗漏子节点 基于此进行了优化&#xff0c;如果只是想直接转换&#xff0c;可…

【开源视频联动物联网平台】视频AI智能分析部署方式

利用视频监控的AI智能分析技术&#xff0c;可以让视频监控发挥更大的作用&#xff0c;成为管理者的重要决策工具。近年来&#xff0c;基于视频监控的AI分析算法取得了巨大的发展&#xff0c;并在各种智慧化项目中得到了广泛应用&#xff0c;为客户提供更智能化的解决方案。 然…

【Node.js】笔记整理 3 -npm

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

Ubuntu22.04 server版本关闭DHCP,手动设置ip

在Ubuntu 22.04 中&#xff0c;网络配置已迁移到 Netplan&#xff0c;因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤&#xff1a; 打开终端&#xff0c;使用 root 权限或 sudo 执行以下命令&…

WordPress(10)解决中文连接问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、修改的前后二、自定义结构讲明三、修改方法前言 提示:这里可以添加本文要记录的大概内容: 1.中文连接如:http://www.lplovemm.love/2023/11/12/测试 2.这种连接在提交sitemap收录的时…