Refactor test for invalid parameter overrides
Split the test into multiple tests that each check one type of invalid override rather than having one big tests that checks for everything. This allow to check whether the test passes or fails by seeing if it compiles or not. The one big test on the other hand relies on seeing the exact error messages as recorded in the gold file. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
673b40b78c
commit
bb74c6412d
|
|
@ -1,21 +0,0 @@
|
|||
./ivltests/parameter_invalid_override.v:28: error: Cannot override localparam `C` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:29: error: Cannot override localparam `D` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:31: error: Cannot override localparam `F` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:32: error: Cannot override localparam `G` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:33: error: Cannot override localparam `H` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:34: error: Cannot override localparam `I` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:35: error: parameter `Z` not found in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:52: error: Cannot override localparam `C` in `test.i_b`.
|
||||
./ivltests/parameter_invalid_override.v:53: error: Cannot override localparam `D` in `test.i_b`.
|
||||
./ivltests/parameter_invalid_override.v:54: error: parameter `Z` not found in `test.i_b`.
|
||||
./ivltests/parameter_invalid_override.v:40: error: Cannot override localparam `C` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:41: error: Cannot override localparam `D` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:43: error: Cannot override localparam `F` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:44: error: Cannot override localparam `G` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:45: error: Cannot override localparam `H` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:46: error: Cannot override localparam `I` in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:47: error: parameter `Z` not found in `test.i_a`.
|
||||
./ivltests/parameter_invalid_override.v:59: error: Cannot override localparam `C` in `test.i_b`.
|
||||
./ivltests/parameter_invalid_override.v:60: error: Cannot override localparam `D` in `test.i_b`.
|
||||
./ivltests/parameter_invalid_override.v:61: error: parameter `Z` not found in `test.i_b`.
|
||||
21 error(s) during elaboration.
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
// Check that invalid parameter overrides generate an error
|
||||
|
||||
module a #(
|
||||
parameter A = 1, B = 2,
|
||||
localparam C = 3, localparam D = 4, // TODO: D should be localparam even when the keyword omitted
|
||||
parameter E = 5
|
||||
);
|
||||
|
||||
// TODO: parameter here should be treated as a localparam since the module has a
|
||||
// parameter port list
|
||||
/*parameter*/ localparam F = 6, G = 7;
|
||||
localparam H = 8, I = 9;
|
||||
|
||||
endmodule
|
||||
|
||||
module b;
|
||||
|
||||
parameter A = 1, B = 2;
|
||||
localparam C = 3, D = 4;
|
||||
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a #(
|
||||
.A(10),
|
||||
.B(20),
|
||||
.C(30),
|
||||
.D(40),
|
||||
.E(50),
|
||||
.F(60),
|
||||
.G(70),
|
||||
.H(80),
|
||||
.I(90),
|
||||
.Z(99)
|
||||
) i_a();
|
||||
|
||||
defparam i_a.A = 100;
|
||||
defparam i_a.B = 200;
|
||||
defparam i_a.C = 300;
|
||||
defparam i_a.D = 400;
|
||||
defparam i_a.E = 500;
|
||||
defparam i_a.F = 600;
|
||||
defparam i_a.G = 700;
|
||||
defparam i_a.H = 800;
|
||||
defparam i_a.I = 900;
|
||||
defparam i_a.Z = 999;
|
||||
|
||||
b #(
|
||||
.A(10),
|
||||
.B(20),
|
||||
.C(30),
|
||||
.D(40),
|
||||
.Z(99)
|
||||
) i_b();
|
||||
|
||||
defparam i_b.A = 100;
|
||||
defparam i_b.B = 200;
|
||||
defparam i_b.C = 300;
|
||||
defparam i_b.D = 400;
|
||||
defparam i_b.Z = 999;
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
// Check that trying to override a parameter that does not exist results in an
|
||||
// error
|
||||
|
||||
module a #(
|
||||
parameter A = 1
|
||||
);
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a #(
|
||||
.Z(10) // Error
|
||||
) i_a();
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
// Check that trying to override a parameter that does not exist results in an
|
||||
// error
|
||||
|
||||
module a #(
|
||||
parameter A = 1
|
||||
);
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a #(
|
||||
.A(10)
|
||||
) i_a();
|
||||
|
||||
defparam i_a.Z = 10; // Error
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
// Check that localparam can not be overridden
|
||||
|
||||
module a;
|
||||
localparam A = 1;
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a #(
|
||||
.A(10) // Error
|
||||
) i_a();
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
// Check that localparam can not be overridden by defparam
|
||||
|
||||
module a;
|
||||
localparam A = 1;
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a i_a();
|
||||
|
||||
defparam i_a.A = 10; // Error
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
// Check that parameter declared in the module body can not be overridden if the
|
||||
// module has a parameter port list.
|
||||
|
||||
module a #(
|
||||
parameter A = 1
|
||||
);
|
||||
// This behaves like a localparam
|
||||
parameter B = 1;
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a #(
|
||||
.A(10),
|
||||
.B(20) // Error
|
||||
) i_a();
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
// Check that parameter declared in the module body can not be overridden by a
|
||||
// defparam if the module has a parameter port list.
|
||||
|
||||
module a #(parameter A = 1);
|
||||
// This behaves like a localparam
|
||||
parameter B = 2;
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a i_a();
|
||||
|
||||
defparam i_a.A = 10;
|
||||
defparam i_a.B = 20; // Error
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
// Check that localparam declared in parameter port list can not be overridden
|
||||
|
||||
module a #(
|
||||
localparam B = 2
|
||||
);
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a #(
|
||||
.A(10) // Error
|
||||
) i_a();
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
// Check that localparam declared in parameter port list can not be overridden
|
||||
// by defparam
|
||||
|
||||
module a #(
|
||||
localparam A = 1
|
||||
);
|
||||
|
||||
initial begin
|
||||
$display("FAILED");
|
||||
end
|
||||
endmodule
|
||||
|
||||
module test;
|
||||
|
||||
a i_a();
|
||||
|
||||
defparam i_a.A = 10; // Error
|
||||
|
||||
endmodule
|
||||
|
|
@ -317,11 +317,12 @@ named_fork_fail CE,-g2009 ivltests
|
|||
packeda normal,-g2009 ivltests
|
||||
packeda2 normal,-g2009 ivltests
|
||||
parameter_in_generate2 CE,-g2005-sv ivltests
|
||||
parameter_invalid_override CE,-g2005-sv ivltests gold=parameter_invalid_override.gold
|
||||
parameter_no_default CE,-g2005-sv ivltests
|
||||
parameter_no_default_fail1 CE ivltests
|
||||
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_type2 normal,-g2009 ivltests
|
||||
parpkg_test normal,-g2009 ivltests
|
||||
parpkg_test2 normal,-g2009 ivltests
|
||||
|
|
|
|||
|
|
@ -703,6 +703,12 @@ parameter_omit3 CE ivltests
|
|||
parameter_omit_invalid1 CE ivltests
|
||||
parameter_omit_invalid2 CE ivltests
|
||||
parameter_omit_invalid3 CE ivltests
|
||||
parameter_override_invalid1 CE ivltests
|
||||
parameter_override_invalid2 CE ivltests
|
||||
parameter_override_invalid3 CE ivltests
|
||||
parameter_override_invalid4 CE ivltests
|
||||
parameter_override_invalid5 CE ivltests
|
||||
parameter_override_invalid6 CE ivltests
|
||||
patch1268 normal ivltests
|
||||
pca1 normal ivltests # Procedural Continuous Assignment in a mux
|
||||
pic normal contrib pictest gold=pic.gold
|
||||
|
|
|
|||
Loading…
Reference in New Issue