Verilog中使用的VHDL常量

问题描述 投票:2回答:1

我已经定义了一个VHDL常量,我将其用作“生成”语句中的开关,以生成代码的一部分还是跳过它。我有一个Verilog模块在同一顶级,我想做类似的事情。我想在Verilog的“ifdef”语句中使用VHDL常量来实例化或跳过Verilog模块。为了达到这个目的,我有什么技巧吗?因为我知道VHDL常量不能在Verilog“ifdef”语句中使用。

谢谢, - 鲁迪

vhdl verilog
1个回答
2
投票

`ifdef意味着您需要决定何时以及是否设置各种`define MY_MACRO_DEF并且可能污染您的全局名称空间并且正在编译依赖于顺序。

相反,使用在IEEE Std 1364-2001中引入的Verilog的generate。它类似于VHDLs生成方法。这是一个例子:

module my_module #(parameter PARAM_VALUE=0) ( /* ports */ );
  generate
    if (PARAM_VALUE==1) begin
     ThisModule subinst ( .* );
    else begin
      ThatMoudle subinst ( .* );
    end
  endgenerate
endmodule

module top;
  /* nets */
  genvar gvar_i;
  generate
    for (gvar_i = 0; gvar_i<2; gvar_i=gvar_i+1) begin
      my_module #(.PARAM_VALUE(gvar_i)) inst ( .* );
    end
  endgenerate
endmodule
  • IEEE Std1364-2001§12.1.3生成的实例化
  • IEEE Std1364-2005§12.4生成结构
  • IEEE Std 1800-2012(SystemVerilog)§27。生成结构
© www.soinside.com 2019 - 2024. All rights reserved.