Add regression tests for string formatting of null-bytes through VPI
Check that null-bytes get removed when reading a value through the VPI API as a vpiStringVal. Also check that null-bytes are not removed from string literals when string literals are read through the VPI API as a non vpiStringVal. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
56efec8ed1
commit
71bb011597
|
|
@ -0,0 +1,4 @@
|
||||||
|
Const Positive yes
|
||||||
|
Const Negative NO
|
||||||
|
Var Positive yes
|
||||||
|
Var Negative NO
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
module test;
|
||||||
|
reg expected = 1;
|
||||||
|
initial begin
|
||||||
|
$display("Const Positive %s", 1 ? "yes" : "NO");
|
||||||
|
$display("Const Negative %s", !1 ? "yes" : "NO");
|
||||||
|
$display("Var Positive %s", expected ? "yes" : "NO");
|
||||||
|
$display("Var Negative %s", !expected ? "yes" : "NO");
|
||||||
|
end
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
// Check that null-bytes are handled consistently between string literals,
|
||||||
|
// number literals and signals of all kinds, especially when formatting as a
|
||||||
|
// string.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
reg failed = 1'b0;
|
||||||
|
|
||||||
|
`define check(val, exp) \
|
||||||
|
if (val != exp) begin \
|
||||||
|
$display("FAILED(%0d): Expected '%0s', got '%0s'.", `__LINE__, exp, val); \
|
||||||
|
failed = 1'b1; \
|
||||||
|
end
|
||||||
|
|
||||||
|
reg [255:0] s;
|
||||||
|
reg [31:0] x;
|
||||||
|
reg [31:0] y[1:0];
|
||||||
|
wire [31:0] z;
|
||||||
|
wire [31:0] w;
|
||||||
|
|
||||||
|
assign z = "\000a\000b";
|
||||||
|
assign w = 32'h00610062;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", "\000a\000b", "\000a\000b", "\000a\000b", "\000a\000b");
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", 32'h00610062, 32'h00610062, 32'h00610062, 32'h00610062);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
x = "\000a\000b";
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", x, x, x, x);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
x = 32'h00610062;
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", x, x, x, x);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
y[0] = "\000a\000b";
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", y[0], y[0], y[0], y[0]);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
y[1] = 32'h00610062;
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", y[1], y[1], y[1], y[1]);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", z, z, z, z);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
$sformat(s, ":%x:%0x:%s:%0s:", w, w, w, w);
|
||||||
|
`check(s, ":00610062:610062: a b:a b:")
|
||||||
|
|
||||||
|
|
||||||
|
if (!failed) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
// Check that the empty string "" is equivalent to 8'h00
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
reg failed = 1'b0;
|
||||||
|
|
||||||
|
`define check(val, exp) \
|
||||||
|
if (val != exp) begin \
|
||||||
|
$display("FAILED(%0d): Expected '%0s', got '%0s'.", `__LINE__, exp, val); \
|
||||||
|
failed = 1'b1; \
|
||||||
|
end
|
||||||
|
|
||||||
|
reg [47:0] s;
|
||||||
|
reg [7:0] x;
|
||||||
|
wire [7:0] y;
|
||||||
|
|
||||||
|
assign y = "";
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
`check("", 8'h00);
|
||||||
|
`check($bits(""), 8);
|
||||||
|
|
||||||
|
$sformat(s, ":%s:%0s:", "", "");
|
||||||
|
`check(s, ": ::");
|
||||||
|
|
||||||
|
x = 8'h00;
|
||||||
|
$sformat(s, ":%s:%0s:", x, x);
|
||||||
|
`check(s, ": ::");
|
||||||
|
|
||||||
|
$sformat(s, ":%s:%0s:", y, y);
|
||||||
|
`check(s, ": ::");
|
||||||
|
|
||||||
|
if (!failed) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -355,6 +355,7 @@ br_gh782e normal ivltests
|
||||||
br_gh782f normal ivltests
|
br_gh782f normal ivltests
|
||||||
br_gh788 normal,-gno-io-range-error,-Wno-anachronisms ivltests gold=br_gh788.gold
|
br_gh788 normal,-gno-io-range-error,-Wno-anachronisms ivltests gold=br_gh788.gold
|
||||||
br_gh793 normal ivltests
|
br_gh793 normal ivltests
|
||||||
|
br_gh827 normal ivltests gold=br_gh827.gold
|
||||||
br_ml20150315 normal ivltests gold=br_ml_20150315.gold
|
br_ml20150315 normal ivltests gold=br_ml_20150315.gold
|
||||||
br_ml20150321 CE ivltests
|
br_ml20150321 CE ivltests
|
||||||
br_mw20171108 normal ivltests
|
br_mw20171108 normal ivltests
|
||||||
|
|
@ -1646,6 +1647,8 @@ string9 normal ivltests gold=string9.gold
|
||||||
string10 normal ivltests gold=string10.gold
|
string10 normal ivltests gold=string10.gold
|
||||||
string11 normal ivltests gold=string11.gold
|
string11 normal ivltests gold=string11.gold
|
||||||
string12 normal ivltests
|
string12 normal ivltests
|
||||||
|
string13 normal ivltests
|
||||||
|
string14 normal ivltests
|
||||||
supply1 normal ivltests
|
supply1 normal ivltests
|
||||||
supply2 normal ivltests
|
supply2 normal ivltests
|
||||||
switch_primitives normal ivltests gold=switch_primitives.gold
|
switch_primitives normal ivltests gold=switch_primitives.gold
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue