3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-23 00:55:32 +00:00

Fix constants bound to redeclared function args

The changes in #2476 ensured that function inputs like `input x;`
retained their single-bit size when instantiated with a constant
argument and turned into a localparam. That change did not handle the
possibility for an input to be redeclared later on with an explicit
width, such as `integer x;`.
This commit is contained in:
Zachary Snow 2020-12-26 08:39:57 -07:00
parent 4491548037
commit 1419c8761c
2 changed files with 26 additions and 5 deletions

View file

@ -50,6 +50,12 @@ module top;
operation4 = {a, b};
endfunction
function automatic integer operation5;
input x;
integer x;
operation5 = x;
endfunction
wire [31:0] a;
assign a = 2;
@ -70,6 +76,9 @@ module top;
wire [16:0] x4;
assign x4 = operation4(a[15:0], 0);
wire [31:0] x5;
assign x5 = operation5(64);
// `define VERIFY
`ifdef VERIFY
assert property (a == 2);
@ -79,5 +88,6 @@ module top;
assert property (x2 == 4);
assert property (x3 == 16);
assert property (x4 == a << 1);
assert property (x5 == 64);
`endif
endmodule