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