参数化逻辑包括模块实例化等
Parameterized logic including module instantiation and so on
我想启用逻辑、模块实例化等。使用这样的模块参数:
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
https://www.edaplayground.com/x/4k86
我确定 Modelsim 会支持它,您收到什么错误消息?
我想启用逻辑、模块实例化等。使用这样的模块参数:
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
https://www.edaplayground.com/x/4k86
我确定 Modelsim 会支持它,您收到什么错误消息?