允许重新声明包中的某些参数以进行仿真

时间:2018-12-04 21:41:06

标签: verilog fpga system-verilog modelsim

我有一个系统,它的超时时间大约为几秒,出于仿真目的,我希望将这些时间减少到微秒或毫秒。

我用FPGA时钟的时钟周期数定义了这些超时。举个例子

package time_pkg

parameter EXT_EN_SIG_TIMEOUT = 32'h12345678;
...
endpackage

我将计数器与常量全局参数EXT_EN_SIG_TIMEOUT进行比较,以确定是否是确定启用信号的正确时间。

我想在名为time_pkg的文件中的名为time_pkg.v的程序包中定义此参数(以及其他参数),我想将此程序包用于综合。

但是当我在Riviera Pro(或Modelsim)中模拟设计时,我想在名为time_pkg_sim.v的文件中定义第二个参数,该文件在time_pkg.v之后导入并覆盖共享的参数。与time_pkg中已定义的名称相同。

如果我只是简单地制作一个time_pkg_sim.v,并且其中包含一个具有相同名称(time_pkg)的软件包,那么Riviera会抱怨,因为我试图重新声明一个已经声明的软件包。

我不是特别想用语句来填充我的hdl来检查是否设置了模拟标志,以便决定是否将计数器与EXT_EN_SIG_TIMEOUTEXT_EN_SIG_TIMEOUT_SIM进行比较

使用仿真工具时,是否存在允许在包装内重新定义参数的标准方法?

2 个答案:

答案 0 :(得分:0)

否,您不能覆盖软件包中的参数。您可以做的是使用两个不同的文件名,它们使用不同的参数值声明同一程序包,然后选择要编译的文件名以进行模拟或综合。

答案 1 :(得分:0)

在软件包中包含大量模拟器的情况下,最好使用大型ifdef。这样,您的代码就不会到处都是ifdef,而只会集中在一个地方。而且,模块内部的代码无需更改。