我必须更新在包内声明的几个枚举数据类型,而我的枚举数据类型的大小将随参数值而变化。 我必须以某种方式使该参数值对包可见。
我知道包不是可以实例化的组件。因此我无法直接传递参数。
任何人都可以通过一些调整来帮助我完成我的要求。
PS:要求与TB
有关答案 0 :(得分:1)
我们通常对必须参数化的长度类型所做的是使用define而不是包参数:
package some_package_pkg;
`ifndef MAX_DATA_WIDTH
`define MAX_DATA_WIDTH 32
typedef [`MAX_DATA_WIDTH-1:0] bit some_type;
...
endpackage
默认情况下,MAX_DATA_WIDTH为32,但如果我们需要更大的宽度,我们只需从命令行传递define。对于Incisive,它类似于:
irun -D MAX_DATA_WIDTH=64 some_package_pkg.sv
如果您想要改造使用参数的现有包,您可以这样做:
package some_param_package_pkg;
parameter P_MAX_DATA_WIDTH = `MAX_DATA_WIDTH; // just add this line
typedef [P_MAX_DATA_WIDTH-1:0] bit some_type; // all declaration are unchanged
endpackage