I\'d like to set a parameter based on a parameter which is set when the module is instantiated. I have the following.
module foo #(WORDS = 8);
parameter P00
This works (generally say you need to make all 4 generate blocks name as the same):
module foo #(WORDS = 8);
parameter P00 = 33;
logic [7:0] tmp;
generate
case (WORDS)
4: begin : B
assign tmp = 8'haa;
parameter P00 = 4;
end
8: begin : B
assign tmp = 8'hbb;
parameter P00 = 8;
end
16: begin : B
assign tmp = 8'hcc;
parameter P00 = 16;
end
default: begin : B
assign tmp = 8'hdd;
parameter P00 = 8;
end
endcase
endgenerate
initial begin
$display ("WORDS = %d", WORDS);
$display ("tmp = %h", tmp);
$display ("P00 = %d", B.P00);
end
endmodule