diff --git a/ivtest/gold/br_gh827.gold b/ivtest/gold/br_gh827.gold new file mode 100644 index 000000000..30d8061ee --- /dev/null +++ b/ivtest/gold/br_gh827.gold @@ -0,0 +1,4 @@ +Const Positive yes +Const Negative NO +Var Positive yes +Var Negative NO diff --git a/ivtest/ivltests/br_gh827.v b/ivtest/ivltests/br_gh827.v new file mode 100644 index 000000000..927d666cf --- /dev/null +++ b/ivtest/ivltests/br_gh827.v @@ -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 diff --git a/ivtest/ivltests/string13.v b/ivtest/ivltests/string13.v new file mode 100644 index 000000000..3ade099ae --- /dev/null +++ b/ivtest/ivltests/string13.v @@ -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 diff --git a/ivtest/ivltests/string14.v b/ivtest/ivltests/string14.v new file mode 100644 index 000000000..882e9b707 --- /dev/null +++ b/ivtest/ivltests/string14.v @@ -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 diff --git a/ivtest/regress-vlg.list b/ivtest/regress-vlg.list index 977970c83..b4db8f2bc 100644 --- a/ivtest/regress-vlg.list +++ b/ivtest/regress-vlg.list @@ -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