我想使用模块的参数启用逻辑,模块实例化等。
module mymodule #(
parameter FEATURE_ENABLE = 0
)(
input logic clk,
...
);
if (FEATURE_ENABLE==1) begin
logic feature;
modulea modulea_instance (
.clk (clk),
...
);
for (h=0;h<=20;h=h+1) begin:forloopinstance
always_comb begin
if (sys_reset) begin
ind_type[h] = UNKNOWN;
end else begin
ind_type[h] = ZERO;
end
end
end
end
endmodule
似乎Modelsim不支持它,而Xilinx Vivado确实支持,但不完全支持。
通过参数启用部分逻辑的最佳做法是什么?
答案 0 :(得分:1)
您的代码使用Verilog标准的2005版本-IEEE 1364-2005。 IEEE 1364-2005消除了使用generate
和endgenerate
语句的需要。就我个人而言,我真的不知道这样做的意义。 generate
的构造有点与众不同,因此值得generate
和endgenerate
语句提供额外的支持。如何添加它们:
module mymodule #(
parameter FEATURE_ENABLE = 0
)(
input logic clk
);
generate
if (FEATURE_ENABLE==1) begin
logic feature;
modulea modulea_instance (
.clk (clk)
);
end
endgenerate
endmodule
https://www.edaplayground.com/x/4k86
我确定Modelsim将支持它,您得到什么错误消息?