我想根据实例化模块时设置的参数设置参数。我有以下。
module foo #(WORDS = 8);
parameter P00 = 33;
logic [7:0] tmp;
generate
case (WORDS)
4: begin : A
assign tmp = 8'haa;
parameter P00 = 4;
end
8: begin : B
assign tmp = 8'hbb;
parameter P00 = 8;
end
16: begin : C
assign tmp = 8'hcc;
parameter P00 = 16;
end
default: begin : D
assign tmp = 8'hdd;
parameter P00 = 8;
end
endcase
endgenerate
initial begin
$display ("WORDS = %d", WORDS);
$display ("tmp = %h", tmp);
$display ("P00 = %d", P00);
end
endmodule
我预计重新定义 P00 会出错,但它编译并运行并显示以下内容。
WORDS = 8
tmp = bb
P00 = 33
如果我评论“参数 P00 = 33”分配,我得到一个“标识符 P00 尚未声明”。错误。
似乎生成块被忽略了。这里有什么问题?