在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”文件编译和模拟?
答案 0 :(得分:0)
这可能不是您问题的根本原因,但我觉得有必要让您了解滥用工作作为图书馆名称。
work
实际上不是VHDL中的有效库名。它也不是某种预定义的默认库。 VHDL标准将work
定义为当前工作库的特殊别名。因此,可以在VHDL文件中使用work
来引用同一库中的其他设计单元,而无需知道要分析它们的库的名称。由于work
是一个特殊的别名,因此在任何library work
子句之前不需要使用use work.pkg.all
子句引用它。
不幸的是,许多VHDL工具允许设计人员创建名为work
的库,有些甚至鼓励它导致混淆。只要另一个库中的设计单元没有尝试引用名称错误的工作库中的设计单元,这就可以正常工作。这是因为work
名称将是分析到该库中的文件上下文中其他库的别名。
即使在经验丰富的VHDL设计人员中,这个事实也鲜为人知。也许混淆的根本原因是许多工具经常谈论工作库"意思是"当前的工作库无论它叫什么#34;人们在字面上解释它实际上应该被命名为工作。
package pkg is
end package;
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)
看起来似乎无法在工作区外创建带有设计的库,因此必须创建它。
上的问题和答案