2

从 Aldec Active-HDL GUI 中,vlib应该创建一个工作库,例如:

vlib my_lib

这将在当前目录下创建一个“my_lib”目录,但带有警告:

警告:无法创建库

随后set worklib my_lib失败并出现错误“错误:未加载设计。”,并且编译vcom -work my_lib tb.vhd完成而没有输出,并且既不将任何内容编译到“my_lib”目录。所以看起来即使创建了“my_lib”目录,它也不能作为 VHDL 编译的“my_lib”库使用。

如果通过它使用 Aldec Active-HDL 命令行界面 (CLI)vsimsa.bat可以正常工作。

vlib从 GUI Tcl 控制台窗口使 Tcl 命令工作需要什么?

可能看起来问题是本地“library.cfg”文件不是通过doing创建的vlib my_lib,那么在这种情况下,如何创建一个本地“library.cfg”文件以进行简单的模块编译和模拟?

4

2 回答 2

1

这可能不是您问题的根本原因,但我只是觉得有必要让您了解滥用工作作为库名称的问题。

work在 VHDL 中确实不是一个有效的库名称。它也不是某种预定义的默认库。VHDL 标准定义work为当前工作库的特殊别名。因此,人们可以work在 VHDL 文件中使用来引用同一库中的其他设计单元,而无需知道它们将被分析到的库的名称。由于work它是一个特殊别名,因此不需要library work在任何子句之前用子句引用它use work.pkg.all

不幸的是,许多 VHDL 工具允许设计人员创建名为 的库work,有些甚至鼓励它造成混乱。只要另一个库中的设计单元没有尝试引用命名错误的工作库中的设计单元,这就可以正常工作。这是因为在work分析到该库的文件的上下文中,该名称将是其他库的别名。

即使在经验丰富的 VHDL 设计人员中,这一事实也鲜为人知。也许混淆的根本原因是许多工具经常谈论“工作库”,意思是“当前工作库,不管它叫什么”,人们从字面上解释它实际上应该被命名为工作。

工作问题示例:

包.vhd

package pkg is
end package;

文件.vhd

use work.pkg.all;

好案例

vcom -work lib pkg.vhd
vcom -work lib file.vhd

文件 pkg.vhd 和 file.vhd 可以编译成任何名称的库,因为它们使用work别名。

坏案例

vcom -work work pkg.vhd
vcom -work lib file.vhd

第二个命令会有错误,因为在分析 file.vhd 时引用了当前工作库work是. 不可能从内部引用名称错误的库中的任何内容,因为包含特殊别名的所有引用都将转换为.liblibworklibworklib

于 2015-06-17T17:57:01.000 回答
0

似乎不可能在带有设计的工作区之外创建库,因此必须创建它。

另请参阅https://stackoverflow.com/a/30936868/3989931上的问题和答案

于 2015-06-19T11:23:18.093 回答