From 818dfa55f342d116b2c58f7ee2fe0c1b51657b30 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Tue, 12 Apr 2022 22:42:54 +0200 Subject: [PATCH] Add regression tests for nested dynamic arrays and queues SystemVerilog allows to declare signals of nested unpacked types. E.g. a queue of dynamic arrays. This is currently not supported by Icarus. Add regression test nevertheless to check that this is reported as a non-supported construct and does not result in random crashes. Signed-off-by: Lars-Peter Clausen --- ivtest/ivltests/sv_darray_nest1.v | 8 ++++++++ ivtest/ivltests/sv_darray_nest2.v | 8 ++++++++ ivtest/ivltests/sv_darray_nest3.v | 8 ++++++++ ivtest/ivltests/sv_darray_nest4.v | 8 ++++++++ ivtest/ivltests/sv_queue_nest1.v | 8 ++++++++ ivtest/ivltests/sv_queue_nest2.v | 8 ++++++++ ivtest/ivltests/sv_queue_nest3.v | 8 ++++++++ ivtest/ivltests/sv_queue_nest4.v | 8 ++++++++ ivtest/regress-fsv.list | 8 ++++++++ 9 files changed, 72 insertions(+) create mode 100644 ivtest/ivltests/sv_darray_nest1.v create mode 100644 ivtest/ivltests/sv_darray_nest2.v create mode 100644 ivtest/ivltests/sv_darray_nest3.v create mode 100644 ivtest/ivltests/sv_darray_nest4.v create mode 100644 ivtest/ivltests/sv_queue_nest1.v create mode 100644 ivtest/ivltests/sv_queue_nest2.v create mode 100644 ivtest/ivltests/sv_queue_nest3.v create mode 100644 ivtest/ivltests/sv_queue_nest4.v diff --git a/ivtest/ivltests/sv_darray_nest1.v b/ivtest/ivltests/sv_darray_nest1.v new file mode 100644 index 000000000..9b18556ca --- /dev/null +++ b/ivtest/ivltests/sv_darray_nest1.v @@ -0,0 +1,8 @@ +// Check that declarations for dynamic arrays of queues are supported. + +module test; + + // Dynamic array of queues + int q[$][]; + +endmodule diff --git a/ivtest/ivltests/sv_darray_nest2.v b/ivtest/ivltests/sv_darray_nest2.v new file mode 100644 index 000000000..a1fd298a6 --- /dev/null +++ b/ivtest/ivltests/sv_darray_nest2.v @@ -0,0 +1,8 @@ +// Check that declarations for dynamic arrays of dynamic arrays are supported. + +module test; + + // Dynamic array of dynamic arrays + int q[][]; + +endmodule diff --git a/ivtest/ivltests/sv_darray_nest3.v b/ivtest/ivltests/sv_darray_nest3.v new file mode 100644 index 000000000..f93b6f6f2 --- /dev/null +++ b/ivtest/ivltests/sv_darray_nest3.v @@ -0,0 +1,8 @@ +// Check that declarations for dynamic arrays of unpacked arrays are supported. + +module test; + + // Dynamic array of unpacked arrays + int q[10][]; + +endmodule diff --git a/ivtest/ivltests/sv_darray_nest4.v b/ivtest/ivltests/sv_darray_nest4.v new file mode 100644 index 000000000..08fb229a8 --- /dev/null +++ b/ivtest/ivltests/sv_darray_nest4.v @@ -0,0 +1,8 @@ +// Check that declarations for unpacked arrays of dynamic arrays are supported. + +module test; + + // Unpacked array of dynamic arrays + int q[][10]; + +endmodule diff --git a/ivtest/ivltests/sv_queue_nest1.v b/ivtest/ivltests/sv_queue_nest1.v new file mode 100644 index 000000000..aa199740b --- /dev/null +++ b/ivtest/ivltests/sv_queue_nest1.v @@ -0,0 +1,8 @@ +// Check that declarations for queues of queues are supported. + +module test; + + // Queue of queues + int q[$][$]; + +endmodule diff --git a/ivtest/ivltests/sv_queue_nest2.v b/ivtest/ivltests/sv_queue_nest2.v new file mode 100644 index 000000000..1b6fa7654 --- /dev/null +++ b/ivtest/ivltests/sv_queue_nest2.v @@ -0,0 +1,8 @@ +// Check that declarations for queues of dynamic arrays are supported. + +module test; + + // Queue of dynamic arrays + int q[][$]; + +endmodule diff --git a/ivtest/ivltests/sv_queue_nest3.v b/ivtest/ivltests/sv_queue_nest3.v new file mode 100644 index 000000000..958a93c87 --- /dev/null +++ b/ivtest/ivltests/sv_queue_nest3.v @@ -0,0 +1,8 @@ +// Check that declarations for queues of unpacked arrays are supported. + +module test; + + // Queue of unpacked arrays + int q[10][$]; + +endmodule diff --git a/ivtest/ivltests/sv_queue_nest4.v b/ivtest/ivltests/sv_queue_nest4.v new file mode 100644 index 000000000..212d15f7b --- /dev/null +++ b/ivtest/ivltests/sv_queue_nest4.v @@ -0,0 +1,8 @@ +// Check that declarations for unpacked arrays of queues are supported. + +module test; + + // Unpacked array of queues + int q[$][10]; + +endmodule diff --git a/ivtest/regress-fsv.list b/ivtest/regress-fsv.list index d990342fc..2bcbcd4aa 100644 --- a/ivtest/regress-fsv.list +++ b/ivtest/regress-fsv.list @@ -125,7 +125,15 @@ br971 normal ivltests br1005 normal ivltests br1015b normal ivltests br_ml20150315b normal ivltests +sv_darray_nest1 normal ivltests +sv_darray_nest2 normal ivltests +sv_darray_nest3 normal ivltests +sv_darray_nest4 normal ivltests sv_deferred_assert1 normal ivltests sv_deferred_assert2 normal ivltests sv_deferred_assume1 normal ivltests sv_deferred_assume2 normal ivltests +sv_queue_nest1 normal ivltests +sv_queue_nest2 normal ivltests +sv_queue_nest3 normal ivltests +sv_queue_nest4 normal ivltests