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