如何为Questa Modelsim 2020编译UVM库?

How to compile UVM library for Questa Modelsim 2020?

我从Intel下载了Modelsim,免费版(Modelsim-Intel FPGA版)。免费版本是 Ubuntu 64 位 LTS 上的 32 位版本的 Modelsim。我通过安装适用于 i386 arch 的 apt pkg 实现了解决方法。

我想使用 UVM 在 SV 中创建一个测试平台。

这个modelsim似乎只有设备支持原语的编译库。所以我随后从 Accellera 下载了 UVM 2017-1.1 (IEEE 1800.2)。

文档仅说明如何解压缩tar.gz。解压缩后,我看到带有 uvm.sv 和 uvm_pkg.sv 的源文件以及 class 文件的许多 svh 文件(reg、tlm、宏、驱动程序、监视器、env 等)。

我没有看到任何额外的 makefile 或关于如何为 Modelsim 编译的说明。

然后我创建了自己的编译脚本:

vlog -64 -lint -modelsimini $(MSI_FILE) -quiet -sv17compat -work $(LIB_UVM) ~/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_pkg.sv
vlog -64 -lint -modelsimini $(MSI_FILE) -quiet -sv17compat -work $(LIB_UVM) ~/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm.sv

我还设置了UVM_HOME环境变量指向包含src文件夹的目录。

我在编译脚本时遇到的错误是这样的:

Error: ** while parsing file included at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_pkg.sv(26)
** while parsing file included at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_macros.svh(82)
** at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/macros/uvm_tlm_defines.svh(642): Cannot open `include file "tlm1/uvm_tlm_imps.svh".
** Error: ** while parsing file included at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_pkg.sv(30)
** at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/dpi/uvm_dpi.svh(40): Cannot open `include file "dpi/uvm_hdl.svh".
** Error: ** while parsing file included at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_pkg.sv(30)
** at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/dpi/uvm_dpi.svh(41): Cannot open `include file "dpi/uvm_svcmd_dpi.svh".

我可以在 src 文件夹中看到 svh 文件,它们嵌套在指示的文件夹中。我只能假设 vlog 编译器正在查看我的本地项目文件夹,而不是 uvm_pkg.sv 所在的文件夹。

然后我尝试使用指向 src 文件的 +incdir+$(UVM_HOME) 标志。我仍然遇到同样的错误。

** Error: ** while parsing file included at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_pkg.sv(35)
** at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/seq/uvm_seq.svh(32): Cannot open `include file "/home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1//seq/uvm_sequence.svh".
** Error: ** while parsing file included at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/uvm_pkg.sv(35)
** at /home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1/src/seq/uvm_seq.svh(33): Cannot open `include file "/home/deadsupra/rtl_lib/UVM-18002-2017-11tar/1800.2-2017-1.1//seq/uvm_sequence_library.svh".

如有任何帮助,我们将不胜感激。我已经搜索过任何合适的方法来编译 UVM,其中很多似乎都指向 +incdir。但是很多例子都是针对旧版本的modelsim和旧的UVM 1.1或1.2。

我发现了问题。在我的编译脚本中,我给了它 .sv 文件的正确路径。但是我的早期版本在环境变量UVM_HOME中的路径并没有设置包含src文件夹的目录。一旦我重新运行我的 source.sh 脚本并更新了环境变量,.svh 文件就能够适当地找到依赖文件。

它一直在我面前,错误消息显示它正在查找的路径中没有 src 文件夹:..../1800.2-2017-1.1//seq/uvm_sequence.svh

Xilinx Vivado 2020.1 支持 UVM 1.2 和 Systemverliog 的许多功能。它支持相同的 WebPack(免费软件)版本。我开发了一个工具“tbengy”来生成 UVM TB 和 Makefile。您可以阅读 https://github.com/prasadp4009/tbengy

上的说明