aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/aggr01
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-07-20 10:22:07 +0200
committerTristan Gingold <tgingold@free.fr>2019-07-20 10:22:07 +0200
commit817670af605bad21b3a872cb14b8d04b85b2d466 (patch)
tree56fbdc45c2bc784272daa0119abb60fde7189373 /testsuite/synth/aggr01
parentec253b52f8b49815221c03cf55cc7a991d981c61 (diff)
downloadghdl-817670af605bad21b3a872cb14b8d04b85b2d466.tar.gz
ghdl-817670af605bad21b3a872cb14b8d04b85b2d466.tar.bz2
ghdl-817670af605bad21b3a872cb14b8d04b85b2d466.zip
synth: add a test for previous commit (aggr).
Diffstat (limited to 'testsuite/synth/aggr01')
-rw-r--r--testsuite/synth/aggr01/aggr01.vhdl15
-rw-r--r--testsuite/synth/aggr01/aggr02.vhdl20
-rw-r--r--testsuite/synth/aggr01/tb_aggr01.vhdl25
-rw-r--r--testsuite/synth/aggr01/tb_aggr02.vhdl25
-rwxr-xr-xtestsuite/synth/aggr01/testsuite.sh16
5 files changed, 101 insertions, 0 deletions
diff --git a/testsuite/synth/aggr01/aggr01.vhdl b/testsuite/synth/aggr01/aggr01.vhdl
new file mode 100644
index 000000000..30c64c791
--- /dev/null
+++ b/testsuite/synth/aggr01/aggr01.vhdl
@@ -0,0 +1,15 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity aggr01 is
+ port (a : std_logic_vector (7 downto 0);
+ b : out std_logic_vector (7 downto 0));
+end aggr01;
+
+architecture behav of aggr01 is
+ constant mask : std_logic_vector (7 downto 0) :=
+ (0 => '1', others => '0');
+begin
+ b <= a and mask;
+end behav;
+
diff --git a/testsuite/synth/aggr01/aggr02.vhdl b/testsuite/synth/aggr01/aggr02.vhdl
new file mode 100644
index 000000000..82e83ff9c
--- /dev/null
+++ b/testsuite/synth/aggr01/aggr02.vhdl
@@ -0,0 +1,20 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity aggr02 is
+ port (a : std_logic_vector (7 downto 0);
+ b : out std_logic_vector (7 downto 0));
+end aggr02;
+
+architecture behav of aggr02 is
+ function gen_mask (len : natural) return std_logic_vector is
+ variable res : std_logic_vector (len - 1 downto 0);
+ begin
+ res := (0 => '0', others => '1');
+ return res;
+ end gen_mask;
+
+begin
+ b <= a and gen_mask (8);
+end behav;
+
diff --git a/testsuite/synth/aggr01/tb_aggr01.vhdl b/testsuite/synth/aggr01/tb_aggr01.vhdl
new file mode 100644
index 000000000..429117cc9
--- /dev/null
+++ b/testsuite/synth/aggr01/tb_aggr01.vhdl
@@ -0,0 +1,25 @@
+entity tb_aggr01 is
+end tb_aggr01;
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+architecture behav of tb_aggr01 is
+ signal a, b : std_logic_vector(7 downto 0);
+begin
+ dut: entity work.aggr01
+ port map (a, b);
+
+ process
+ begin
+ a <= x"ff";
+ wait for 1 ns;
+ assert b = x"01" severity failure;
+
+ a <= x"ee";
+ wait for 1 ns;
+ assert b = x"00" severity failure;
+
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/synth/aggr01/tb_aggr02.vhdl b/testsuite/synth/aggr01/tb_aggr02.vhdl
new file mode 100644
index 000000000..39570d788
--- /dev/null
+++ b/testsuite/synth/aggr01/tb_aggr02.vhdl
@@ -0,0 +1,25 @@
+entity tb_aggr02 is
+end tb_aggr02;
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+architecture behav of tb_aggr02 is
+ signal a, b : std_logic_vector(7 downto 0);
+begin
+ dut: entity work.aggr02
+ port map (a, b);
+
+ process
+ begin
+ a <= x"ff";
+ wait for 1 ns;
+ assert b = x"fe" severity failure;
+
+ a <= x"ee";
+ wait for 1 ns;
+ assert b = x"ee" severity failure;
+
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/synth/aggr01/testsuite.sh b/testsuite/synth/aggr01/testsuite.sh
new file mode 100755
index 000000000..6086ad422
--- /dev/null
+++ b/testsuite/synth/aggr01/testsuite.sh
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+for t in aggr01 aggr02; do
+ analyze $t.vhdl tb_$t.vhdl
+ elab_simulate tb_$t
+ clean
+
+ synth $t.vhdl -e $t > syn_$t.vhdl
+ analyze syn_$t.vhdl tb_$t.vhdl
+ elab_simulate tb_$t
+ clean
+done
+
+echo "Test successful"