我在 SystemVerilog 中创建了一个设计模型。它使用定点数学。模块的一些顶级参数用于指定在模块内进行计算时使用什么缩放因子。这会影响预定义常量的值以及如何执行缩小操作和舍入。
现在我有多个预定义常量,然后使用 if..else.. 块根据参数值选择其中一个。有多个不同的函数几乎完全相同,除了它们在计算过程中使用的常量以及如何缩小结果。
我的问题是,是否可以将顶级测试台模块参数传递到包中并使用它来选择常量应具有的值,即使用测试台顶级模块参数对包进行参数化?
我来自 VHDL 背景,`if 与 #if 让我感到困惑。此外,我不确定我尝试做的事情是否可在 SystemVerilog 中使用测试平台模块顶级参数实现。
您的问题非常接近XY 问题。SystemVerilog 包无法参数化,您也无法根据参数选择要导入的其他包。如果我们对您最终需要完成的任务有更具体的详细信息,那么有很多可能的方法。
如果您要拥有不同的顶层测试台,您可以让每个测试台导入不同的包和不同的参数值到您的设计中。
您可以将软件包的不同版本编译到不同的库中,并在选择所需的测试平台的同时选择所需的库。编译脚本将是特定于工具的问题,而不是 SystemVerilog 语言的一部分。
您可以在包中放置根据顶级测试台参数选择返回值的函数。