aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-04-20 07:34:31 +0200
committerTristan Gingold <tgingold@free.fr>2020-04-20 07:34:31 +0200
commitbb3c706a8e91e3466983fc48e9473127c75f5970 (patch)
tree920aa905401aca164272fcbaa393eedbe1e49185
parent1c081e799d51ce644d33910ff801dc0479ab4a06 (diff)
downloadghdl-bb3c706a8e91e3466983fc48e9473127c75f5970.tar.gz
ghdl-bb3c706a8e91e3466983fc48e9473127c75f5970.tar.bz2
ghdl-bb3c706a8e91e3466983fc48e9473127c75f5970.zip
testsuite/synth: add test for #1250
-rw-r--r--testsuite/synth/issue1250/tb_theunit.vhdl20
-rwxr-xr-xtestsuite/synth/issue1250/testsuite.sh7
-rw-r--r--testsuite/synth/issue1250/theunit.vhdl28
3 files changed, 55 insertions, 0 deletions
diff --git a/testsuite/synth/issue1250/tb_theunit.vhdl b/testsuite/synth/issue1250/tb_theunit.vhdl
new file mode 100644
index 000000000..d3defd621
--- /dev/null
+++ b/testsuite/synth/issue1250/tb_theunit.vhdl
@@ -0,0 +1,20 @@
+entity tb_theunit is
+end tb_theunit;
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+architecture behav of tb_theunit is
+ signal d : std_logic;
+begin
+ dut: entity work.theunit
+ port map (d);
+
+ process
+ begin
+ wait for 1 ns;
+ assert d = '1' severity failure;
+
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/synth/issue1250/testsuite.sh b/testsuite/synth/issue1250/testsuite.sh
new file mode 100755
index 000000000..cae69f6f6
--- /dev/null
+++ b/testsuite/synth/issue1250/testsuite.sh
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+synth_tb theunit
+
+echo "Test successful"
diff --git a/testsuite/synth/issue1250/theunit.vhdl b/testsuite/synth/issue1250/theunit.vhdl
new file mode 100644
index 000000000..177c57507
--- /dev/null
+++ b/testsuite/synth/issue1250/theunit.vhdl
@@ -0,0 +1,28 @@
+library ieee;
+use ieee.std_logic_1164.all;
+entity theunit is
+ port (dout : out std_ulogic);
+end;
+
+architecture rtl of theunit is
+ subtype thenum_t is integer range 0 to 1;
+ type rec_t is record
+ -- NOTE: changing order of these members prevents crash
+ data0 : std_ulogic;
+ bankm : std_ulogic_vector(thenum_t);
+ end record;
+ signal r : rec_t;
+begin
+ thecomb : process(r)
+ variable v : rec_t;
+ variable thenum : thenum_t := 1;
+ begin
+ v.data0 := '1';
+ v.bankm := (others => '1');
+ -- NOTE: removing any of the lines below prevents crash
+ v.bankm(thenum) := '0';
+ r <= v;
+ dout <= r.data0;
+ end process;
+end;
+