我有一个系统,它的超时时间大约为几秒,出于仿真目的,我希望将这些时间减少到微秒或毫秒。
我用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_TIMEOUT
或EXT_EN_SIG_TIMEOUT_SIM
进行比较
使用仿真工具时,是否存在允许在包装内重新定义参数的标准方法?
答案 0 :(得分:0)
否,您不能覆盖软件包中的参数。您可以做的是使用两个不同的文件名,它们使用不同的参数值声明同一程序包,然后选择要编译的文件名以进行模拟或综合。
答案 1 :(得分:0)
在软件包中包含大量模拟器的情况下,最好使用大型ifdef。这样,您的代码就不会到处都是ifdef,而只会集中在一个地方。而且,模块内部的代码无需更改。