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_gh788 normal,-gno-io-range-error,-Wno-anachronisms ivltests gold=br_gh788.gold
|
||||
br_gh793 normal ivltests
|
||||
br_gh827 normal ivltests gold=br_gh827.gold
|
||||
br_ml20150315 normal ivltests gold=br_ml_20150315.gold
|
||||
br_ml20150321 CE ivltests
|
||||
br_mw20171108 normal ivltests
|
||||
|
|
@ -1646,6 +1647,8 @@ string9 normal ivltests gold=string9.gold
|
|||
string10 normal ivltests gold=string10.gold
|
||||
string11 normal ivltests gold=string11.gold
|
||||
string12 normal ivltests
|
||||
string13 normal ivltests
|
||||
string14 normal ivltests
|
||||
supply1 normal ivltests
|
||||
supply2 normal ivltests
|
||||
switch_primitives normal ivltests gold=switch_primitives.gold
|
||||
|
|
|
|||
Loading…
Reference in New Issue