From 185840b837766c5cbb6082e3f71b2c122541b8ea Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 15 Nov 2017 06:38:05 +0100 Subject: Add reproducer for #458 --- testsuite/gna/issue458/e.vhdl | 40 +++++++++++++++++++++++++++++++++++++ testsuite/gna/issue458/repro.vhdl | 20 +++++++++++++++++++ testsuite/gna/issue458/repro2.vhdl | 22 ++++++++++++++++++++ testsuite/gna/issue458/testsuite.sh | 10 ++++++++++ 4 files changed, 92 insertions(+) create mode 100644 testsuite/gna/issue458/e.vhdl create mode 100644 testsuite/gna/issue458/repro.vhdl create mode 100644 testsuite/gna/issue458/repro2.vhdl create mode 100755 testsuite/gna/issue458/testsuite.sh (limited to 'testsuite') diff --git a/testsuite/gna/issue458/e.vhdl b/testsuite/gna/issue458/e.vhdl new file mode 100644 index 000000000..2b07ef763 --- /dev/null +++ b/testsuite/gna/issue458/e.vhdl @@ -0,0 +1,40 @@ +entity E is +end entity; + +architecture A of E is + signal S1 : bit := '0'; + signal S2_inertial : bit; + signal S2_transport : bit; + signal S2_delayed : bit; + + constant LEVEL : severity_level := FAILURE; +begin + S1 <= '1' after 10 ns, '0' after 20 ns; + + S2_inertial <= inertial S1 after 100 ns; + S2_transport <= transport S1 after 100 ns; + S2_delayed <= S1'delayed(100 ns); + + CheckInertial: process + begin + wait until S2_inertial = '1' for 200 ns; + assert (S2_inertial = '0') report "Pulse was not rejected!" severity LEVEL; + wait; + end process; + + CheckTransport: process + begin + wait until S2_transport = '1' for 115 ns; + assert (S2_transport = '1') report "Pulse was not transport delayed!" severity LEVEL; + assert (now = 110 ns) report "Transport delayed pulse was not received at 110 ns!" severity LEVEL; + wait; + end process; + + CheckDelayed: process + begin + wait until S2_delayed = '1' for 115 ns; + assert (S2_delayed = '1') report "Pulse was not delayed!" severity LEVEL; + assert (now = 110 ns) report "Delayed pulse was not received at 110 ns!" severity LEVEL; + wait; + end process; +end architecture; diff --git a/testsuite/gna/issue458/repro.vhdl b/testsuite/gna/issue458/repro.vhdl new file mode 100644 index 000000000..2e061ad6b --- /dev/null +++ b/testsuite/gna/issue458/repro.vhdl @@ -0,0 +1,20 @@ +entity repro is +end entity; + +architecture A of repro is + signal S1 : bit := '0'; + alias S1_delayed : bit is S1'delayed(100 ns); +begin + S1 <= '1' after 10 ns, '0' after 20 ns; + + process (S1) is + begin + assert false report "S1 = " & bit'image(S1) severity note; + end process; + + process (S1_delayed) is + begin + assert false report "S1'delayed = " & bit'image(S1_delayed) + severity note; + end process; +end architecture; diff --git a/testsuite/gna/issue458/repro2.vhdl b/testsuite/gna/issue458/repro2.vhdl new file mode 100644 index 000000000..8882aa376 --- /dev/null +++ b/testsuite/gna/issue458/repro2.vhdl @@ -0,0 +1,22 @@ +entity repro is +end entity; + +architecture A of repro is + signal S1 : bit := '0'; + signal S2_transport : bit; + signal S2_delayed : bit; +begin + S1 <= '1' after 10 ns, '0' after 20 ns; + S2_transport <= transport S1 after 100 ns; + S2_delayed <= S1'delayed(100 ns); + + process (S1) is + begin + assert false report "S1 = " & bit'image(S1) severity note; + end process; + + process (S2_delayed) is + begin + assert false report "S1'delayed = " & bit'image(S2_delayed) severity note; + end process; +end architecture; diff --git a/testsuite/gna/issue458/testsuite.sh b/testsuite/gna/issue458/testsuite.sh new file mode 100755 index 000000000..57536e34f --- /dev/null +++ b/testsuite/gna/issue458/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze e.vhdl +elab_simulate e + +clean + +echo "Test successful" -- cgit v1.2.3