From 93f305c448d2b789f3da085e9d4f3ee29c2dd572 Mon Sep 17 00:00:00 2001 From: damc Date: Thu, 21 Jul 2022 10:52:43 +0200 Subject: [PATCH] ppTests Add tests from LRM, but don't run them yet. --- .../IEEE18002017_macro_argument_expansion.sv | 10 ++++++++ .../IEEE18002017_macro_delimit_tokens.sv | 7 ++++++ .../IEEE18002017_macro_mix_quotes.sv | 10 ++++++++ .../IEEE18002017_macro_noexpand_string | 13 ++++++++++ .../IEEE18002017_macro_with_defaults.sv | 25 +++++++++++++++++++ .../IEEE18002017_macro_without_defaults.sv | 15 +++++++++++ .../IEEE18002017_macro_argument_expansion.sv | 10 ++++++++ .../IEEE18002017_macro_delimit_tokens.sv | 7 ++++++ .../expected/IEEE18002017_macro_mix_quotes.sv | 10 ++++++++ .../IEEE18002017_macro_noexpand_string.sv | 13 ++++++++++ .../IEEE18002017_macro_with_defaults.sv | 25 +++++++++++++++++++ .../IEEE18002017_macro_without_defaults.sv | 15 +++++++++++ 12 files changed, 160 insertions(+) create mode 100644 sv-parser-pp/testcases/IEEE18002017_macro_argument_expansion.sv create mode 100644 sv-parser-pp/testcases/IEEE18002017_macro_delimit_tokens.sv create mode 100644 sv-parser-pp/testcases/IEEE18002017_macro_mix_quotes.sv create mode 100644 sv-parser-pp/testcases/IEEE18002017_macro_noexpand_string create mode 100644 sv-parser-pp/testcases/IEEE18002017_macro_with_defaults.sv create mode 100644 sv-parser-pp/testcases/IEEE18002017_macro_without_defaults.sv create mode 100644 sv-parser-pp/testcases/expected/IEEE18002017_macro_argument_expansion.sv create mode 100644 sv-parser-pp/testcases/expected/IEEE18002017_macro_delimit_tokens.sv create mode 100644 sv-parser-pp/testcases/expected/IEEE18002017_macro_mix_quotes.sv create mode 100644 sv-parser-pp/testcases/expected/IEEE18002017_macro_noexpand_string.sv create mode 100644 sv-parser-pp/testcases/expected/IEEE18002017_macro_with_defaults.sv create mode 100644 sv-parser-pp/testcases/expected/IEEE18002017_macro_without_defaults.sv diff --git a/sv-parser-pp/testcases/IEEE18002017_macro_argument_expansion.sv b/sv-parser-pp/testcases/IEEE18002017_macro_argument_expansion.sv new file mode 100644 index 0000000..9c1f62c --- /dev/null +++ b/sv-parser-pp/testcases/IEEE18002017_macro_argument_expansion.sv @@ -0,0 +1,10 @@ +/* IEEE1800-2017 Clause 22.5.1 page 679 +*/ + +`define max(a,b)((a) > (b) ? (a) : (b)) +`define TOP(a,b) a + b + +module m; +assign n = `max(p+q, r+s) ; +assign z = `TOP( `TOP(b,1), `TOP(42,a) ); +endmodule diff --git a/sv-parser-pp/testcases/IEEE18002017_macro_delimit_tokens.sv b/sv-parser-pp/testcases/IEEE18002017_macro_delimit_tokens.sv new file mode 100644 index 0000000..9c60efb --- /dev/null +++ b/sv-parser-pp/testcases/IEEE18002017_macro_delimit_tokens.sv @@ -0,0 +1,7 @@ +/* IEEE1800-2017 Clause 22.5.1 page 680 +*/ + +`define append(f) f``_master + +module `append(clock); +endmodule diff --git a/sv-parser-pp/testcases/IEEE18002017_macro_mix_quotes.sv b/sv-parser-pp/testcases/IEEE18002017_macro_mix_quotes.sv new file mode 100644 index 0000000..0f6e6a0 --- /dev/null +++ b/sv-parser-pp/testcases/IEEE18002017_macro_mix_quotes.sv @@ -0,0 +1,10 @@ +/* IEEE1800-2017 Clause 22.5.1 page 680 +*/ + +`define msg(x,y) `"x: `\`"y`\`"`" + +module a; +initial begin +$display(`msg(left side,right side)); +end +endmodule diff --git a/sv-parser-pp/testcases/IEEE18002017_macro_noexpand_string b/sv-parser-pp/testcases/IEEE18002017_macro_noexpand_string new file mode 100644 index 0000000..bcc6ee3 --- /dev/null +++ b/sv-parser-pp/testcases/IEEE18002017_macro_noexpand_string @@ -0,0 +1,13 @@ +/* IEEE1800-2017 Clause 22.5.1 page 679 +*/ + +module main; +`define HI Hello +`define LO "`HI, world" +`define H(x) "Hello, x" +initial begin + $display("`HI, world"); + $display(`LO); + $display(`H(world)); +end +endmodule diff --git a/sv-parser-pp/testcases/IEEE18002017_macro_with_defaults.sv b/sv-parser-pp/testcases/IEEE18002017_macro_with_defaults.sv new file mode 100644 index 0000000..2a9b2a3 --- /dev/null +++ b/sv-parser-pp/testcases/IEEE18002017_macro_with_defaults.sv @@ -0,0 +1,25 @@ +/* IEEE1800-2017 Clause 22.5.1 page 678 +* NOTE: Illegal cases are not included in this testcase. +* NOTE: Use of EMPTY is suggested on page 679 +*/ + +`define MACRO1(a=5,b="B",c) $display(a,,b,,c); +`define MACRO2(a=5, b, c="C") $display(a,,b,,c); +`define MACRO3(a=5, b=0, c="C") $display(a,,b,,c); + +`define EMPTY + +module m; +initial begin + `MACRO1 ( , 2, 3 ) + `MACRO1 ( 1 , , 3 ) + `MACRO1 ( , 2, ) + `MACRO2 (1, , 3) + `MACRO2 (, 2, ) + `MACRO2 (, 2) + `MACRO3 ( 1 ) + `MACRO3 ( ) + + `MACRO3 (`EMPTY,`EMPTY,`EMPTY) +end +endmodule diff --git a/sv-parser-pp/testcases/IEEE18002017_macro_without_defaults.sv b/sv-parser-pp/testcases/IEEE18002017_macro_without_defaults.sv new file mode 100644 index 0000000..ac42b01 --- /dev/null +++ b/sv-parser-pp/testcases/IEEE18002017_macro_without_defaults.sv @@ -0,0 +1,15 @@ +/* IEEE1800-2017 Clause 22.5.1 page 677 +* NOTE: Illegal cases are not included in this testcase. +*/ + +`define D(x,y) initial $display("start", x , y, "end"); + +module m; +initial begin + `D( "msg1" , "msg2" ) + `D( " msg1", ) + `D(, "msg2 ") + `D(,) + `D( , ) +end +endmodule diff --git a/sv-parser-pp/testcases/expected/IEEE18002017_macro_argument_expansion.sv b/sv-parser-pp/testcases/expected/IEEE18002017_macro_argument_expansion.sv new file mode 100644 index 0000000..2688806 --- /dev/null +++ b/sv-parser-pp/testcases/expected/IEEE18002017_macro_argument_expansion.sv @@ -0,0 +1,10 @@ +/* IEEE1800-2017 Clause 22.5.1 page 679 +*/ + +`define max(a,b)((a) > (b) ? (a) : (b)) +`define TOP(a,b) a + b + +module m; +assign n = ((p+q) > (r+s) ? (p+q) : (r+s)) ; +assign z = b + 1 + 42 + a; +endmodule diff --git a/sv-parser-pp/testcases/expected/IEEE18002017_macro_delimit_tokens.sv b/sv-parser-pp/testcases/expected/IEEE18002017_macro_delimit_tokens.sv new file mode 100644 index 0000000..abdd98c --- /dev/null +++ b/sv-parser-pp/testcases/expected/IEEE18002017_macro_delimit_tokens.sv @@ -0,0 +1,7 @@ +/* IEEE1800-2017 Clause 22.5.1 page 680 +*/ + +`define append(f) f``_master + +module clock_master; +endmodule diff --git a/sv-parser-pp/testcases/expected/IEEE18002017_macro_mix_quotes.sv b/sv-parser-pp/testcases/expected/IEEE18002017_macro_mix_quotes.sv new file mode 100644 index 0000000..6c7dd6d --- /dev/null +++ b/sv-parser-pp/testcases/expected/IEEE18002017_macro_mix_quotes.sv @@ -0,0 +1,10 @@ +/* IEEE1800-2017 Clause 22.5.1 page 680 +*/ + +`define msg(x,y) `"x: `\`"y`\`"`" + +module a; +initial begin +$display("left side: \"right side\""); +end +endmodule diff --git a/sv-parser-pp/testcases/expected/IEEE18002017_macro_noexpand_string.sv b/sv-parser-pp/testcases/expected/IEEE18002017_macro_noexpand_string.sv new file mode 100644 index 0000000..27ec41d --- /dev/null +++ b/sv-parser-pp/testcases/expected/IEEE18002017_macro_noexpand_string.sv @@ -0,0 +1,13 @@ +/* IEEE1800-2017 Clause 22.5.1 page 679 +*/ + +module main; +`define HI Hello +`define LO "`HI, world" +`define H(x) "Hello, x" +initial begin + $display("`HI, world"); + $display("`HI, world"); + $display("Hello, x"); +end +endmodule diff --git a/sv-parser-pp/testcases/expected/IEEE18002017_macro_with_defaults.sv b/sv-parser-pp/testcases/expected/IEEE18002017_macro_with_defaults.sv new file mode 100644 index 0000000..3090454 --- /dev/null +++ b/sv-parser-pp/testcases/expected/IEEE18002017_macro_with_defaults.sv @@ -0,0 +1,25 @@ +/* IEEE1800-2017 Clause 22.5.1 page 678 +* NOTE: Illegal cases are not included in this testcase. +* NOTE: Use of EMPTY is suggested on page 679 +*/ + +`define MACRO1(a=5,b="B",c) $display(a,,b,,c); +`define MACRO2(a=5, b, c="C") $display(a,,b,,c); +`define MACRO3(a=5, b=0, c="C") $display(a,,b,,c); + +`define EMPTY + +module m; +initial begin + $display(5,,2,,3); + $display(1,,"B",,3); + $display(5,,2,,); + $display(1,,,,3); + $display(5,,2,,"C"); + $display(5,,2,,"C"); + $display(1,,0,,"C"); + $display(5,,0,,"C"); + + $display(,,,,); +end +endmodule diff --git a/sv-parser-pp/testcases/expected/IEEE18002017_macro_without_defaults.sv b/sv-parser-pp/testcases/expected/IEEE18002017_macro_without_defaults.sv new file mode 100644 index 0000000..87c3ea3 --- /dev/null +++ b/sv-parser-pp/testcases/expected/IEEE18002017_macro_without_defaults.sv @@ -0,0 +1,15 @@ +/* IEEE1800-2017 Clause 22.5.1 page 677 +* NOTE: Illegal cases are not included in this testcase. +*/ + +`define D(x,y) initial $display("start", x , y, "end"); + +module m; +initial begin + $display("start", "msg1" , "msg2", "end"); + $display("start", " msg1" , , "end"); + $display("start", , "msg2 ", "end"); + $display("start", , , "end"); + $display("start", , , "end"); +end +endmodule