... 威尔逊-斯奈德版权所有 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
作为默认值编译到可执行文件中。因此在配置前必须正确无误。
这些是安装选项:
-
从 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
,这样就能找到所有需要的文件路径。找到所有所需文件的路径。
-
安装到特定前缀
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您可能是操作系统软件包维护者,正在构建一个 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
-
全局安装系统
^^^^^^^^^^^^^^^^^^^^^^^^^^
最后一个选项是全局安装 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 编译。它使用以下参数:
-
源版本(默认: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): (id−u):(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 还定义了一个钩子,并通过自动构建运行。