这将为参数syn
的所有值生成单个输出。为什么syn>0
不能生成2位输出
module test
(clk,
rst_n,
en,
rst_n2,
in,
out
);
parameter syn=0;
generate if(syn>0)begin
`define ROMS
end endgenerate
input clk;
input rst_n;
input en;
input rst_n2;
`ifdef ROMS
input in;
output reg out;
`endif
`ifndef ROMS
input [1:0] in;
output reg [1:0] out;
`endif
always_ff@(posedge clk or negedge rst_n or negedge en) begin
if(~rst_n) begin
out <= 0;
end else if(clk) begin
out <= 0;
end else if(rst_n2 == 1'b0)begin
out <= 0;
end else begin
out <= in;
end
end
endmodule
答案 0 :(得分:2)
因为`define是 compile指令。在编译代码之前先对其进行评估。无论syn
的值如何,总是定义ROMS。