【问题标题】:Allowing re-declaration of certain parameters inside package for simulation允许在包内重新声明某些参数以进行模拟
【发布时间】:2018-12-04 21:41:05
【问题描述】:

我有一个系统,它有一些以秒为单位的超时,出于模拟的目的,我想将它们减少到微秒或毫秒。

我根据我的 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 进行比较

在使用模拟工具时,是否有允许重新定义包内参数的标准方法?

【问题讨论】:

    标签: verilog fpga system-verilog modelsim


    【解决方案1】:

    不,您不能覆盖包中的参数。你可以做的是有两个不同的文件名,用不同的参数值声明同一个包,然后选择编译哪个进行仿真或综合。

    【讨论】:

      【解决方案2】:

      在包中包含一个带有模拟器 falg 的大型 ifdef 可能是一个更好的主意。这样你的代码就不会到处都是 ifdef,而只是集中在一个地方。此外,模块本身的代码不需要更改。

      【讨论】:

        猜你喜欢
        • 2017-06-22
        • 1970-01-01
        • 1970-01-01
        • 2021-05-02
        • 1970-01-01
        • 2021-07-18
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多