diff options
25 files changed, 427 insertions, 0 deletions
diff --git a/testsuite/synth/dispout01/pkg_rec01.vhdl b/testsuite/synth/dispout01/pkg_rec01.vhdl new file mode 100644 index 000000000..c2048c3ea --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec01.vhdl @@ -0,0 +1,9 @@ +library ieee; +use ieee.std_logic_1164.all; + +package rec01_pkg is + type myrec is record + a : std_logic; + b : std_logic; + end record; +end rec01_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec02.vhdl b/testsuite/synth/dispout01/pkg_rec02.vhdl new file mode 100644 index 000000000..5b5b78850 --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec02.vhdl @@ -0,0 +1,9 @@ +library ieee; +use ieee.std_logic_1164.all; + +package rec02_pkg is + type myrec is record + a : natural range 0 to 5; + b : std_logic; + end record; +end rec02_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec03.vhdl b/testsuite/synth/dispout01/pkg_rec03.vhdl new file mode 100644 index 000000000..2c6204201 --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec03.vhdl @@ -0,0 +1,11 @@ +library ieee; +use ieee.std_logic_1164.all; + +package rec03_pkg is + type myenum is (s0, s1, s2, s3); + + type myrec is record + a : myenum; + b : std_logic; + end record; +end rec03_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec04.vhdl b/testsuite/synth/dispout01/pkg_rec04.vhdl new file mode 100644 index 000000000..01cb4da3f --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec04.vhdl @@ -0,0 +1,9 @@ +library ieee; +use ieee.std_logic_1164.all; + +package rec04_pkg is + type myrec is record + a : std_logic_vector (3 downto 0); + b : std_logic; + end record; +end rec04_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec05.vhdl b/testsuite/synth/dispout01/pkg_rec05.vhdl new file mode 100644 index 000000000..c73c67f05 --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec05.vhdl @@ -0,0 +1,10 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package rec05_pkg is + type myrec is record + a : unsigned (3 downto 0); + b : std_logic; + end record; +end rec05_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec06.vhdl b/testsuite/synth/dispout01/pkg_rec06.vhdl new file mode 100644 index 000000000..5e9a16186 --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec06.vhdl @@ -0,0 +1,15 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package rec06_pkg is + type myrec2 is record + c : natural range 0 to 3; + d : unsigned (3 downto 0); + end record; + + type myrec is record + a : myrec2; + b : std_logic; + end record; +end rec06_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec07.vhdl b/testsuite/synth/dispout01/pkg_rec07.vhdl new file mode 100644 index 000000000..7c5775b5c --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec07.vhdl @@ -0,0 +1,9 @@ +library ieee; +use ieee.std_logic_1164.all; + +package rec07_pkg is + type myrec is record + a : bit_vector (3 downto 0); + b : std_logic; + end record; +end rec07_pkg; diff --git a/testsuite/synth/dispout01/pkg_rec08.vhdl b/testsuite/synth/dispout01/pkg_rec08.vhdl new file mode 100644 index 000000000..cebafe904 --- /dev/null +++ b/testsuite/synth/dispout01/pkg_rec08.vhdl @@ -0,0 +1,9 @@ +library ieee; +use ieee.std_logic_1164.all; + +package rec08_pkg is + type myrec is record + a : bit_vector (0 downto 0); + b : std_logic; + end record; +end rec08_pkg; diff --git a/testsuite/synth/dispout01/rec01.vhdl b/testsuite/synth/dispout01/rec01.vhdl new file mode 100644 index 000000000..eee090ec2 --- /dev/null +++ b/testsuite/synth/dispout01/rec01.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec01_pkg.all; + +entity rec01 is + port (inp : std_logic; + o : out myrec); +end rec01; + +architecture behav of rec01 is +begin + o.a <= inp; + o.b <= not inp; +end behav; diff --git a/testsuite/synth/dispout01/rec02.vhdl b/testsuite/synth/dispout01/rec02.vhdl new file mode 100644 index 000000000..a93bc9f30 --- /dev/null +++ b/testsuite/synth/dispout01/rec02.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec02_pkg.all; + +entity rec02 is + port (inp : std_logic; + o : out myrec); +end rec02; + +architecture behav of rec02 is +begin + o.b <= not inp; + o.a <= 3 when inp = '1' else 5; +end behav; diff --git a/testsuite/synth/dispout01/rec03.vhdl b/testsuite/synth/dispout01/rec03.vhdl new file mode 100644 index 000000000..763f83a72 --- /dev/null +++ b/testsuite/synth/dispout01/rec03.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec03_pkg.all; + +entity rec03 is + port (inp : std_logic; + o : out myrec); +end rec03; + +architecture behav of rec03 is +begin + o.b <= not inp; + o.a <= s3 when inp = '0' else s0; +end behav; diff --git a/testsuite/synth/dispout01/rec04.vhdl b/testsuite/synth/dispout01/rec04.vhdl new file mode 100644 index 000000000..15fab1f6e --- /dev/null +++ b/testsuite/synth/dispout01/rec04.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec04_pkg.all; + +entity rec04 is + port (inp : std_logic; + o : out myrec); +end rec04; + +architecture behav of rec04 is +begin + o.b <= not inp; + o.a <= "0001" when inp = '1' else "1000"; +end behav; diff --git a/testsuite/synth/dispout01/rec05.vhdl b/testsuite/synth/dispout01/rec05.vhdl new file mode 100644 index 000000000..1d5623dce --- /dev/null +++ b/testsuite/synth/dispout01/rec05.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec05_pkg.all; + +entity rec05 is + port (inp : std_logic; + o : out myrec); +end rec05; + +architecture behav of rec05 is +begin + o.b <= not inp; + o.a <= "0101" when inp = '0' else "1010"; +end behav; diff --git a/testsuite/synth/dispout01/rec06.vhdl b/testsuite/synth/dispout01/rec06.vhdl new file mode 100644 index 000000000..8cebf82b8 --- /dev/null +++ b/testsuite/synth/dispout01/rec06.vhdl @@ -0,0 +1,16 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.rec06_pkg.all; + +entity rec06 is + port (inp : std_logic; + o : out myrec); +end rec06; + +architecture behav of rec06 is +begin + o.b <= not inp; + o.a.c <= 2 when inp = '1' else 3; + o.a.d <= "0000" when inp = '0' else "1000"; +end behav; diff --git a/testsuite/synth/dispout01/rec07.vhdl b/testsuite/synth/dispout01/rec07.vhdl new file mode 100644 index 000000000..f34c00483 --- /dev/null +++ b/testsuite/synth/dispout01/rec07.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec07_pkg.all; + +entity rec07 is + port (inp : std_logic; + o : out myrec); +end rec07; + +architecture behav of rec07 is +begin + o.b <= not inp; + o.a <= "0001" when inp = '1' else "1000"; +end behav; diff --git a/testsuite/synth/dispout01/rec08.vhdl b/testsuite/synth/dispout01/rec08.vhdl new file mode 100644 index 000000000..cb56af4a1 --- /dev/null +++ b/testsuite/synth/dispout01/rec08.vhdl @@ -0,0 +1,14 @@ +library ieee; +use ieee.std_logic_1164.all; +use work.rec08_pkg.all; + +entity rec08 is + port (inp : std_logic; + o : out myrec); +end rec08; + +architecture behav of rec08 is +begin + o.b <= not inp; + o.a <= "1" when inp = '1' else "0"; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec01.vhdl b/testsuite/synth/dispout01/tb_rec01.vhdl new file mode 100644 index 000000000..7ec57d949 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec01.vhdl @@ -0,0 +1,27 @@ +entity tb_rec01 is +end tb_rec01; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec01_pkg.all; + +architecture behav of tb_rec01 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec01 + port map (inp => inp, o => r); + + process + begin + inp <= '0'; + wait for 1 ns; + assert r = (a => '0', b => '1') severity failure; + + inp <= '1'; + wait for 1 ns; + assert r = (a => '1', b => '0') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec02.vhdl b/testsuite/synth/dispout01/tb_rec02.vhdl new file mode 100644 index 000000000..6bfb1ea80 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec02.vhdl @@ -0,0 +1,27 @@ +entity tb_rec02 is +end tb_rec02; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec02_pkg.all; + +architecture behav of tb_rec02 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec02 + port map (inp => inp, o => r); + + process + begin + inp <= '0'; + wait for 1 ns; + assert r = (b => '1', a => 5) severity failure; + + inp <= '1'; + wait for 1 ns; + assert r = (b => '0', a => 3) severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec03.vhdl b/testsuite/synth/dispout01/tb_rec03.vhdl new file mode 100644 index 000000000..982c8d7e6 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec03.vhdl @@ -0,0 +1,27 @@ +entity tb_rec03 is +end tb_rec03; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec03_pkg.all; + +architecture behav of tb_rec03 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec03 + port map (inp => inp, o => r); + + process + begin + inp <= '1'; + wait for 1 ns; + assert r = (a => s0, b => '0') severity failure; + + inp <= '0'; + wait for 1 ns; + assert r = (a => s3, b => '1') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec04.vhdl b/testsuite/synth/dispout01/tb_rec04.vhdl new file mode 100644 index 000000000..fd91b32c8 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec04.vhdl @@ -0,0 +1,27 @@ +entity tb_rec04 is +end tb_rec04; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec04_pkg.all; + +architecture behav of tb_rec04 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec04 + port map (inp => inp, o => r); + + process + begin + inp <= '1'; + wait for 1 ns; + assert r = (a => "0001", b => '0') severity failure; + + inp <= '0'; + wait for 1 ns; + assert r = (a => "1000", b => '1') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec05.vhdl b/testsuite/synth/dispout01/tb_rec05.vhdl new file mode 100644 index 000000000..40139d156 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec05.vhdl @@ -0,0 +1,27 @@ +entity tb_rec05 is +end tb_rec05; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec05_pkg.all; + +architecture behav of tb_rec05 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec05 + port map (inp => inp, o => r); + + process + begin + inp <= '1'; + wait for 1 ns; + assert r = (a => "1010", b => '0') severity failure; + + inp <= '0'; + wait for 1 ns; + assert r = (a => "0101", b => '1') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec06.vhdl b/testsuite/synth/dispout01/tb_rec06.vhdl new file mode 100644 index 000000000..9da1579bc --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec06.vhdl @@ -0,0 +1,27 @@ +entity tb_rec06 is +end tb_rec06; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec06_pkg.all; + +architecture behav of tb_rec06 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec06 + port map (inp => inp, o => r); + + process + begin + inp <= '1'; + wait for 1 ns; + assert r = (a => (c => 2, d => "1000"), b => '0') severity failure; + + inp <= '0'; + wait for 1 ns; + assert r = (a => (c => 3, d => "0000"), b => '1') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec07.vhdl b/testsuite/synth/dispout01/tb_rec07.vhdl new file mode 100644 index 000000000..75cb59de2 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec07.vhdl @@ -0,0 +1,27 @@ +entity tb_rec07 is +end tb_rec07; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec07_pkg.all; + +architecture behav of tb_rec07 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec07 + port map (inp => inp, o => r); + + process + begin + inp <= '1'; + wait for 1 ns; + assert r = (a => "0001", b => '0') severity failure; + + inp <= '0'; + wait for 1 ns; + assert r = (a => "1000", b => '1') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/tb_rec08.vhdl b/testsuite/synth/dispout01/tb_rec08.vhdl new file mode 100644 index 000000000..8224c4b14 --- /dev/null +++ b/testsuite/synth/dispout01/tb_rec08.vhdl @@ -0,0 +1,27 @@ +entity tb_rec08 is +end tb_rec08; + +library ieee; +use ieee.std_logic_1164.all; +use work.rec08_pkg.all; + +architecture behav of tb_rec08 is + signal inp : std_logic; + signal r : myrec; +begin + dut: entity work.rec08 + port map (inp => inp, o => r); + + process + begin + inp <= '1'; + wait for 1 ns; + assert r = (a => "1", b => '0') severity failure; + + inp <= '0'; + wait for 1 ns; + assert r = (a => "0", b => '1') severity failure; + + wait; + end process; +end behav; diff --git a/testsuite/synth/dispout01/testsuite.sh b/testsuite/synth/dispout01/testsuite.sh new file mode 100755 index 000000000..94d07f0e2 --- /dev/null +++ b/testsuite/synth/dispout01/testsuite.sh @@ -0,0 +1,16 @@ +#! /bin/sh + +. ../../testenv.sh + +for t in rec01 rec02 rec03 rec04 rec05 rec06 rec07 rec08; do + analyze pkg_$t.vhdl $t.vhdl tb_$t.vhdl + elab_simulate tb_$t + clean + + synth pkg_$t.vhdl $t.vhdl -e $t > syn_$t.vhdl + analyze pkg_$t.vhdl syn_$t.vhdl tb_$t.vhdl + elab_simulate tb_$t --ieee-asserts=disable-at-0 + clean +done + +echo "Test successful" |