SystemC 仿真库的编译

AMD Vivado™ 设计套件以文件和库的形式提供仿真模型。仿真库包含器件和 IP 的行为和时序模型。编译后的库可供多个设计项目使用。用户必须在设计仿真之前通过名为 compile_simlib 的实用程序编译这些文件,以便为目标仿真器编译仿真模型。

除了 RTL 模型,Vivado 还对一些 IP 提供 C/C++/SystemC 仿真模型,用于 SystemC 仿真验证,源文件的路径位于安装目录下:

<Vivado-install-path>/data/systemc/

与 RTL 模型一样,对于 Vivado 仿真器,这些 SystemC 模型已在标准的 <Vivado-install-path>/data/xsim 文件夹中进行预编译。对于第三方模拟器,必须使用 compile_simlib 编译这些模型。compile_simlib 默认会编译 SystemC 模型,如果你的设计中并不需要用到 SystemC 模型,可以添加 -no_systemc_compile 选项跳过这部分编译。

在实际应用中,绝大多数的 SystemC 模型编译出错都和 GCC 版本匹配以及环境的设置有关。在不同版本的 UG900 手册中,均罗列了此版本 Vivado 兼容的支持 SystemC 仿真的第三方仿真器以及 GCC 版本,最新版的链接如下:

https://docs.amd.com/r/en-US/ug900-vivado-logic-simulation/Simulators-Su...

下表总结了 2021 版本以来的仿真器兼容信息,可作为快速参考:

仿真器兼容信息.png

建议使用仿真器原生的 SystemC 编译器。各仿真器的 GCC 路径如下(以下仿真器及 GCC 版本仅做路径显示方便之用,实际应用中请替换成合适的版本):

XSim:

<Vivado install dir>/tps/lnx64/gcc-9.3.0/bin

Questa:

<Questa install dir>/gcc-7.4.0-linux/bin

Xcelium:

<Xcelium install dir>/tools/cdsgcc/gcc/9.3/bin

VCS:

<vg_gnu install dir>/vg_gnu/<version>/linux/gcc-9.2.0_64-shared/bin

Riviera:

<Riviera install dir>/gcc_Linux64/bin

请注意,有些仿真器(如 VCS),GCC 安装包需要单独下载并安装,请参考第三方文档。

要使得 compile_simlib/launch_simulation 获取 GCC 的路径信息,Vivado 提供了多种方式:

1.设置环境变量 GCC_SIM_EXE_PATH=<gcc install path>

2.compile_simlib -gcc_exec_path <gcc install path>

launch_simulation -gcc_install_path <gcc install path>

如果未找到这些推荐设置,Vivado 将从 PATH 环境变量中选择 GCC 安装路径,你也可将仿真器 GCC 路径添加到 PATH 环境变量中。

在启动仿真库编译或仿真前,请确认第三方仿真器的版本兼容于当前的 Vivado 版本,并设置了对应的环境变量,如下表所示:

注:表格中用 GCC_HOME 代表上文所述各仿真器的 GCC 路径。

各仿真器的 GCC 路径.png

UG900 给出的仿真器环境变量设置中,Questa 和 Xcelium 省略了设置 PATH 指向 GCC 路径。默认情况下,Questa 和 Xcelium 的 GCC 路径会根据仿真器安装位置自动确定。当然,添加上也无影响,只要版本兼容。

当上述版本及设置都已完成,编译 SystemC 仿真库仍然出错,可以从 compile_simlib.log 中找到具体出错的 SystemC 模型,然后定位到预编译库其所在的文件夹,查看 log 文件的详细错误信息(请用ls -a列出所有文件,.cxl.*为隐藏文件)。

e.g.

clibs/xcelium/24.09.001/lin64/lib/xtlm/.cxl.systemc.sm.log

同文件下的.cxl.systemc.sm.cmd包含编译此模型的命令行,如果工具自动产生的命令行有错,可尝试手动修改执行。

文章来源:AMD Xilinx开发者社区