Add regression test for scalar and 1-bit parameters

Check that scalar typed parameters are handled correctly. Make sure the
width of the parameter only depends on the type and not on the value
assigned to the parameter.

Same for parameters with a 1-bit range specification.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
Lars-Peter Clausen 2022-05-01 12:16:38 +02:00
parent 37f9cde49f
commit 37392383b5
4 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,26 @@
// Check that parameters with a implicit and 1-bit range type are handled correctly
module test #(
// This should get truncated to 1'b1
parameter [0:0] P = 2'b11
);
reg failed = 1'b0;
`define check(expr, val) \
if (expr !== val) begin \
$display("FAILED: `%s`, expected %0d, got %0d", `"expr`", val, expr); \
failed = 1'b1; \
end
initial begin
`check($bits(P), 1);
`check(P + 1'b1, 1'b0);
`check(P, 1'b1);
if (!failed) begin
$display("PASSED");
end
end
endmodule

View File

@ -0,0 +1,26 @@
// Check that parameters with a scalar type are handled correctly
module test #(
// This should get truncated to 1'b1
parameter bit P = 2'b11
);
bit failed = 1'b0;
`define check(expr, val) \
if (expr !== val) begin \
$display("FAILED: `%s`, expected %0d, got %0d", `"expr`", val, expr); \
failed = 1'b1; \
end
initial begin
`check($bits(P), 1);
`check(P + 1'b1, 1'b0);
`check(P, 1'b1);
if (!failed) begin
$display("PASSED");
end
end
endmodule

View File

@ -374,6 +374,7 @@ parameter_no_default_fail2 CE ivltests
parameter_no_default_toplvl normal,-g2005-sv ivltests
parameter_override_invalid7 CE,-g2005-sv ivltests
parameter_override_invalid8 CE,-g2005-sv ivltests
parameter_scalar normal,-g2005-sv ivltests
parameter_type2 normal,-g2009 ivltests
parpkg_test normal,-g2009 ivltests
parpkg_test2 normal,-g2009 ivltests

View File

@ -712,6 +712,7 @@ param_test2 normal ivltests gold=param_test2.gold
param_test3 normal ivltests gold=param_test3.gold # PR#293
param_test4 normal ivltests
param_times normal ivltests # param has multiplication.
parameter_1bit normal ivltests
parameter_type normal ivltests gold=parameter_type.gold
parameter_in_generate1 CE ivltests
parameter_no_default CE ivltests