1// DESCRIPTION: Verilator: Verilog Test module
2//
3// This file ONLY is placed under the Creative Commons Public Domain, for
4// any use, without warranty, 2014 by Wilson Snyder.
5// SPDX-License-Identifier: CC0-1.0
6//
7// Special cases of "string parameters" :
8// This table compares obtain results from big-3 simulators to Verilator
9// expected behavior. Base specified integer literals are also included as
10// string detection may impact results for such cases.
11//
12// | In the options file       | simulator 1 | simulator 2 | simulator 3 | verilator   |
13// |----------------------- ---|-------------|-------------|-------------|-------------|
14// | +define+C0='"AB CD"'      | AB CD       | UNSUPPORTED | AB CD       | AB CD       |
15// | +define+C1=\"AB\ CD\"     | AB CD       | UNSUPPORTED | AB CD       | AB CD       |
16// | +define+C2="\"AB CD\""    | AB CD       | AB CD       | UNSUPPORTED | AB CD       |
17// | +define+C3="\"AB\ CD\""   | AB CD       | AB CD       | UNSUPPORTED | AB CD       |
18// | +define+C4=32'h600D600D   | UNSUPPORTED | 32'h600D600D| 32'h600D600D| 32'h600D600D|
19// | +define+C5=32\'h600D600D  | 32'h600D600D| UNSUPPORTED | UNSUPPORTED | 32'h600D600D|
20// | +define+C6="32'h600D600D" | 32'h600D600D| 32'h600D600D| 32'h600D600D| 32'h600D600D|
21// | +define+C7='AB CD'        | AB CD       | UNSUPPORTED | UNSUPPORTED | UNSUPPORTED |
22
23`define STRINGIFY(x) `"x`"
24
25module t;
26   initial begin
27`ifdef D1A
28      if (`STRINGIFY(`D4B) !== "") $stop;
29`else
30      $write("%%Error: Missing define\n"); $stop;
31`endif
32
33`ifdef D2A
34      if (`STRINGIFY(`D2A) !== "VALA") $stop;
35`else
36      $write("%%Error: Missing define\n"); $stop;
37`endif
38
39`ifdef D3A
40      if (`STRINGIFY(`D4B) !== "") $stop;
41`else
42      $write("%%Error: Missing define\n"); $stop;
43`endif
44
45`ifdef D3B
46      if (`STRINGIFY(`D4B) !== "") $stop;
47`else
48      $write("%%Error: Missing define\n"); $stop;
49`endif
50
51`ifdef D4A
52      if (`STRINGIFY(`D4A) !== "VALA") $stop;
53`else
54      $write("%%Error: Missing define\n"); $stop;
55`endif
56
57`ifdef D4B
58      if (`STRINGIFY(`D4B) !== "") $stop;
59`else
60      $write("%%Error: Missing define\n"); $stop;
61`endif
62
63`ifdef D5A
64      if (`STRINGIFY(`D5A) !== "VALA") $stop;
65`else
66      $write("%%Error: Missing define\n"); $stop;
67`endif
68
69`ifdef D5A
70      if (`STRINGIFY(`D5B) !== "VALB") $stop;
71`else
72      $write("%%Error: Missing define\n"); $stop;
73`endif
74
75`ifdef STRING1
76      if (`STRING1 !== "New String") $stop;
77`else
78      $write("%%Error: Missing define\n"); $stop;
79`endif
80
81`ifdef STRING2
82      if (`STRING2 !== "New String") $stop;
83`else
84      $write("%%Error: Missing define\n"); $stop;
85`endif
86
87`ifdef STRING3
88      if (`STRING3 !== "New String") $stop;
89`else
90      $write("%%Error: Missing define\n"); $stop;
91`endif
92
93`ifdef LIT1
94      if (`STRINGIFY(`LIT1) !== "32'h600D600D") $stop;
95`else
96      $write("%%Error: Missing define\n"); $stop;
97`endif
98
99`ifdef LIT2
100      if (`STRINGIFY(`LIT2) !== "32'h600D600D") $stop;
101`else
102      $write("%%Error: Missing define\n"); $stop;
103`endif
104
105`ifdef LIT3
106      if (`STRINGIFY(`LIT3) !== "32'h600D600D") $stop;
107`else
108      $write("%%Error: Missing define\n"); $stop;
109`endif
110
111`ifndef CMD_DEF
112      $write("%%Error: Missing define\n"); $stop;
113`endif
114`ifndef CMD_DEF2
115      $write("%%Error: Missing define\n"); $stop;
116`endif
117`ifdef CMD_UNDEF
118      $write("%%Error: Extra define\n"); $stop;
119`endif
120
121      $write("*-* All Finished *-*\n");
122      $finish;
123   end
124endmodule
125