diff options
author | Tristan Gingold <tgingold@free.fr> | 2020-12-31 10:05:28 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2020-12-31 10:57:27 +0100 |
commit | 373a991d17fd3cab3188ce23d43baae5d474f89c (patch) | |
tree | 8eaa59de4871c60ac978694006527462911595d3 /testsuite/gna/issue1549 | |
parent | 9d4c4ecb3aa855501cdafb482e0c9974e42ed75a (diff) | |
download | ghdl-373a991d17fd3cab3188ce23d43baae5d474f89c.tar.gz ghdl-373a991d17fd3cab3188ce23d43baae5d474f89c.tar.bz2 ghdl-373a991d17fd3cab3188ce23d43baae5d474f89c.zip |
testsuite/gna: add more tests for #1549
Diffstat (limited to 'testsuite/gna/issue1549')
-rw-r--r-- | testsuite/gna/issue1549/ent7.vhdl | 31 | ||||
-rw-r--r-- | testsuite/gna/issue1549/ent8.vhdl | 35 | ||||
-rwxr-xr-x | testsuite/gna/issue1549/testsuite.sh | 20 |
3 files changed, 70 insertions, 16 deletions
diff --git a/testsuite/gna/issue1549/ent7.vhdl b/testsuite/gna/issue1549/ent7.vhdl new file mode 100644 index 000000000..b855b6b25 --- /dev/null +++ b/testsuite/gna/issue1549/ent7.vhdl @@ -0,0 +1,31 @@ +entity ent7 is + generic ( + WIDTH : natural := 1); +end; + +architecture ent of ent7 is + type data_t is record + t : bit_vector; + end record; + type bv_array_t is array (natural range <>) of data_t; + subtype bv_array2_t is bv_array_t(open)(t(WIDTH - 1 downto 0)); + + procedure write_data (constant c : bv_array2_t) is + begin + for i in c'range loop + report integer'image(i) & " =>" & to_string(c(i).t); + end loop; + + assert c(1).t(0) = '1'; -- <<<<<====== This should not fail + end procedure; + +begin + process + variable data2 : bv_array2_t(0 to 1); + begin + data2(0).t := "0"; + data2(1).t := "1"; + write_data(data2); + wait; + end process; +end ent; diff --git a/testsuite/gna/issue1549/ent8.vhdl b/testsuite/gna/issue1549/ent8.vhdl new file mode 100644 index 000000000..b8b72b83c --- /dev/null +++ b/testsuite/gna/issue1549/ent8.vhdl @@ -0,0 +1,35 @@ +entity ent8 is + generic ( + WIDTH : natural := 1); +end; + +architecture ent of ent8 is + type data_t is record + t1 : bit_vector; + t2 : bit_vector; + end record; + type bv_array_t is array (natural range <>) of data_t; + subtype bv_array1_t is bv_array_t(open)(t1(WIDTH - 1 downto 0)); + subtype bv_array2_t is bv_array1_t(open)(t2(WIDTH - 1 downto 0)); + + procedure write_data (constant c : bv_array2_t) is + begin + for i in c'range loop + report integer'image(i) & " =>" & to_string(c(i).t1); + end loop; + + assert c(1).t1(0) = '1'; -- <<<<<====== This should not fail + end procedure; + +begin + process + variable data2 : bv_array2_t(0 to 1); + begin + data2(0).t1 := "0"; + data2(0).t2 := "1"; + data2(1).t1 := "1"; + data2(1).t2 := "0"; + write_data(data2); + wait; + end process; +end ent; diff --git a/testsuite/gna/issue1549/testsuite.sh b/testsuite/gna/issue1549/testsuite.sh index 28abdf604..77a9ac688 100755 --- a/testsuite/gna/issue1549/testsuite.sh +++ b/testsuite/gna/issue1549/testsuite.sh @@ -3,23 +3,11 @@ . ../../testenv.sh export GHDL_STD_FLAGS=--std=08 -analyze ent.vhdl -elab_simulate ent -analyze ent2.vhdl -elab_simulate ent2 - -analyze ent3.vhdl -elab_simulate ent3 - -analyze ent4.vhdl -elab_simulate ent4 - -analyze ent5.vhdl -elab_simulate ent5 - -analyze ent6.vhdl -elab_simulate ent6 +for f in ent ent2 ent3 ent4 ent5 ent6 ent7 ent8; do + analyze $f.vhdl + elab_simulate $f +done clean |