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 # 用于 bash
   cd verilator
   git pull # 确保 git 仓库是最新的
   git tag # 查看版本
   #git checkout master # 使用开发分支(例如最近的错误修复)
   #git checkout stable # 使用最新的稳定版本
   #git checkout v{version}  # 切换到指定的发布版本

   autoconf # 创建 ./configure 脚本
   ./configure # 配置并创建 Makefile
   make -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 make
   sudo apt-get install g++ # 或者,clang
   sudo 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 lcov
   sudo apt-get install libclang-dev yapf3 bear
   sudo pip3 install clang sphinx sphinx_rtd_theme sphinxcontrib-spelling breathe ruff
   cpan install Pod::Perldoc
   cpan 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 verilator
   git 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 是 bash
   setenv 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 是 bash
   unsetenv 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_ROOT
   prepend-path PATH $install_root/bin
   prepend-path MANPATH $install_root/man
   prepend-path PKG_CONFIG_PATH $install_root/share/pkgconfig
  1. 全局安装系统
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    最后一个选项是全局安装 Verilator,使用configure 的默认系统路径安装 Verilator:
   unset VERILATOR_ROOT # 如果 shell 是 bash
   unsetenv 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 还定义了一个钩子,并通过自动构建运行。

你可能感兴趣的:(CPU设计实战,计算机体系结构,ubuntu,elasticsearch,linux,仿真,CPU处理器设计)