我使用 TCL 脚本为每个子模块存储库生成一个 VHDL pkg,该存储库存储子模块的编译日期时间和 git 哈希值。存储 32 位 git hash 的常量称为 MAIN_GIT_HASH,是一个 std_logic_vector。
我现在有多个包,它们都包含一个名为 MAIN_GIT_HASH 的常量,我需要使用 VHDL“use”指令将它们包含到同一个源文件中。现在的问题是,从每个包中选择正确常量的正确方法是什么,因为只写“MAIN_GIT_HASH”会产生歧义?
每个包要么需要有唯一的名称,要么需要分析到单独的库中。
如果您使用单独的库,则只需使用包路径引用它:
library Submodule1 ;
use Submodule1.HashPkg.MAIN_GIT_HASH ; -- just get the relevant constant
Run Code Online (Sandbox Code Playgroud)
如果设计需要引用多个 HashPkg(如您的用例),那么您可以使用与上面相同的符号来引用常量:
HashReg <= Submodule1.HashPkg.MAIN_GIT_HASH ;
Run Code Online (Sandbox Code Playgroud)
如果您使用唯一命名的包,那么它们可以全部放入同一个库中。假设该库与您正在编译当前设计单元的库相同,那么您可以在工作中引用它:
use work.Submodule1HashPkg.MAIN_GIT_HASH ;
. . .
HashReg <= work.Submodule1HashPkg.MAIN_GIT_HASH ;
Run Code Online (Sandbox Code Playgroud)