System verilog 在systemverilog头文件中存储自定义类型

System verilog 在systemverilog头文件中存储自定义类型,system-verilog,System Verilog,我在systemverilog代码中使用了大量自定义类型 目前,我在每个文件中都有typedef的副本,但是如果我可以在头文件中指定typedef,并且在每个模块中只包含一个头文件,那就太好了。这将使我不必维护typedef的多个副本,而且还将显著地清理我的代码 我试图通过将typedef粘贴到头文件中来实现这一点,但是这些工具(Vivado 2014.1)不喜欢typedef位于模块之外这一事实,并且我会遇到语法错误 是否有一种语法可用于指定多个模块通用的typedef?您可以在包中定义所有类

我在systemverilog代码中使用了大量自定义类型

目前,我在每个文件中都有typedef的副本,但是如果我可以在头文件中指定typedef,并且在每个模块中只包含一个头文件,那就太好了。这将使我不必维护typedef的多个副本,而且还将显著地清理我的代码

我试图通过将typedef粘贴到头文件中来实现这一点,但是这些工具(Vivado 2014.1)不喜欢typedef位于模块之外这一事实,并且我会遇到语法错误


是否有一种语法可用于指定多个模块通用的typedef?

您可以在
包中定义所有类型,并在代码中的任何位置导入它们

例如:

package ComplexPkg;
  typedef struct{
    shortreal i, r;
  } Complex;
endpackage: ComplexPkg
然后:

import ComplexPkg::Complex;

有关
软件包的更多信息,请参见第页。738.

您可以在
包中定义所有类型
,只需在代码中的任何位置导入它们即可

例如:

package ComplexPkg;
  typedef struct{
    shortreal i, r;
  } Complex;
endpackage: ComplexPkg
然后:

import ComplexPkg::Complex;
有关
软件包的更多信息,请参见第页。738