Aldec Active-HDL:GUI中的vlib在没有可用库的情况下给出了“警告:无法创建库”

时间:2015-06-17 14:27:44

标签: vhdl active-hdl

在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”库。

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

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

看起来问题是本地“library.cfg”文件不是仅通过执行vlib my_lib创建的,因此在这种情况下,如何为简单模块创建本地“library.cfg”文件编译和模拟?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

工作问题示例:

pkg.vhd

package pkg is
end package;

file.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

第二个命令会出现错误,因为work在分析file.vhd时引用lib,因为当前工作库是lib。 由于包含特殊别名work的所有引用都将转换为lib,因此无法在work内引用名称较差的lib库中的任何内容。

答案 1 :(得分:0)

看起来似乎无法在工作区外创建带有设计的库,因此必须创建它。

另请参阅https://stackoverflow.com/a/30936868/3989931

上的问题和答案