aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/synth/ghdlsynth_gates.h1
-rw-r--r--testsuite/synth/issue1166/ent.vhdl24
-rw-r--r--testsuite/synth/issue1166/tb_ent.vhdl45
-rwxr-xr-xtestsuite/synth/issue1166/testsuite.sh9
4 files changed, 79 insertions, 0 deletions
diff --git a/src/synth/ghdlsynth_gates.h b/src/synth/ghdlsynth_gates.h
index 77c8c3a69..90ea283e8 100644
--- a/src/synth/ghdlsynth_gates.h
+++ b/src/synth/ghdlsynth_gates.h
@@ -56,6 +56,7 @@ enum Module_Id {
Id_Output = 50,
Id_Ioutput = 51,
Id_Port = 52,
+ Id_Inout = 53,
Id_Dff = 56,
Id_Adff = 57,
Id_Idff = 58,
diff --git a/testsuite/synth/issue1166/ent.vhdl b/testsuite/synth/issue1166/ent.vhdl
new file mode 100644
index 000000000..8f2f1b514
--- /dev/null
+++ b/testsuite/synth/issue1166/ent.vhdl
@@ -0,0 +1,24 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity ent is
+ port (
+ a : inout std_logic;
+ enable : in std_logic;
+ d_in : in std_logic;
+ d_out : out std_logic
+ );
+end;
+
+architecture a of ent is
+begin
+ process(all)
+ begin
+ if enable then
+ a <= d_in;
+ else
+ a <= 'Z';
+ end if;
+ end process;
+ d_out <= a;
+end;
diff --git a/testsuite/synth/issue1166/tb_ent.vhdl b/testsuite/synth/issue1166/tb_ent.vhdl
new file mode 100644
index 000000000..016f6b685
--- /dev/null
+++ b/testsuite/synth/issue1166/tb_ent.vhdl
@@ -0,0 +1,45 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity tb_ent is
+end;
+
+architecture a of tb_ent is
+ signal a, enable, d_in, d_out : std_logic;
+begin
+ uut: entity work.ent
+ port map (
+ a => a,
+ enable => enable,
+ d_in => d_in,
+ d_out => d_out
+ );
+
+ process
+ begin
+ a <= '0';
+ enable <= '0';
+
+ wait for 10 ns;
+ assert d_out = '0';
+
+ a <= '1';
+
+ wait for 10 ns;
+ assert d_out = '1' severity failure;
+
+ enable <= '1';
+ a <= 'Z';
+ d_in <= '0';
+
+ wait for 10 ns;
+ assert a = '0' severity failure;
+
+ d_in <= '1';
+
+ wait for 10 ns;
+ assert a = '1' severity failure;
+
+ wait;
+ end process;
+end;
diff --git a/testsuite/synth/issue1166/testsuite.sh b/testsuite/synth/issue1166/testsuite.sh
new file mode 100755
index 000000000..047bcf9bb
--- /dev/null
+++ b/testsuite/synth/issue1166/testsuite.sh
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+GHDL_STD_FLAGS=--std=08
+
+synth_tb ent
+
+echo "Test successful"