Verilog 参数化逻辑,包括模块实例化等
我想启用逻辑、模块实例化等。。模块的参数如下所示:Verilog 参数化逻辑,包括模块实例化等,verilog,system-verilog,Verilog,System Verilog,我想启用逻辑、模块实例化等。。模块的参数如下所示: 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) beg
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也支持它,但并不完全支持
启用带有参数的部分逻辑的最佳实践是什么?您的代码使用2005版的Verilog标准—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
我相信Modelsim会支持它,您收到了什么错误消息?实际上,我的问题来自Modelsim,它为隐式生成块下的所有信号添加了父genblk1。。。但多亏了你,我才发现。非常感谢。我可以在条件块内的for循环中使用always_梳吗?我编辑了问题中的代码。Vivado而不是Riviera/Modelsim识别它。@Alexis\u FR\u JP是的。您可以在generate endgenerate中放置任何可以在模块endmodule之间移动的内容。