diff options
author | Tristan Gingold <tgingold@free.fr> | 2020-01-24 05:44:49 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2020-01-24 05:44:49 +0100 |
commit | 383aa041762b77aea45c12d10c8d4178597b0fb8 (patch) | |
tree | 5509c28eda6bbe87e9763378aabfe010bf400d0f /testsuite/synth/issue1109 | |
parent | 92819a2603f20025b055cb57af997bbdef60c92c (diff) | |
download | ghdl-383aa041762b77aea45c12d10c8d4178597b0fb8.tar.gz ghdl-383aa041762b77aea45c12d10c8d4178597b0fb8.tar.bz2 ghdl-383aa041762b77aea45c12d10c8d4178597b0fb8.zip |
testsuite/synth: add a test for #1109
Diffstat (limited to 'testsuite/synth/issue1109')
-rw-r--r-- | testsuite/synth/issue1109/ent-orig.vhdl | 130 | ||||
-rw-r--r-- | testsuite/synth/issue1109/ent.vhdl | 130 | ||||
-rwxr-xr-x | testsuite/synth/issue1109/testsuite.sh | 10 |
3 files changed, 270 insertions, 0 deletions
diff --git a/testsuite/synth/issue1109/ent-orig.vhdl b/testsuite/synth/issue1109/ent-orig.vhdl new file mode 100644 index 000000000..d8e64e133 --- /dev/null +++ b/testsuite/synth/issue1109/ent-orig.vhdl @@ -0,0 +1,130 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity ent is + generic ( + INT : integer := -42; + NAT : natural := 21 + ); + port ( + slv_a : in std_logic_vector(7 downto 0); + slv_b : in std_logic_vector(7 downto 0); + + slv_eq : out std_logic; + slv_ne : out std_logic; + + sl_a : out std_logic; + sl_b : out std_logic; + + sl_lt : out std_logic; + sl_le : out std_logic; + sl_eq : out std_logic; + sl_ne : out std_logic; + sl_ge : out std_logic; + sl_gt : out std_logic; + + uns_a : in unsigned(7 downto 0); + uns_b : in unsigned(7 downto 0); + + uns_lt : out std_logic; + uns_le : out std_logic; + uns_eq : out std_logic; + uns_ne : out std_logic; + uns_ge : out std_logic; + uns_gt : out std_logic; + + uns_int_lt : out std_logic; + uns_int_le : out std_logic; + uns_int_eq : out std_logic; + uns_int_ne : out std_logic; + uns_int_ge : out std_logic; + uns_int_gt : out std_logic; + + int_uns_lt : out std_logic; + int_uns_le : out std_logic; + int_uns_eq : out std_logic; + int_uns_ne : out std_logic; + int_uns_ge : out std_logic; + int_uns_gt : out std_logic; + + sgn_a : in signed(7 downto 0); + sgn_b : in signed(7 downto 0); + + sgn_lt : out std_logic; + sgn_le : out std_logic; + sgn_eq : out std_logic; + sgn_ne : out std_logic; + sgn_ge : out std_logic; + sgn_gt : out std_logic; + + sgn_nat_lt : out std_logic; + sgn_nat_le : out std_logic; + sgn_nat_eq : out std_logic; + sgn_nat_ne : out std_logic; + sgn_nat_ge : out std_logic; + sgn_nat_gt : out std_logic; + + nat_sgn_lt : out std_logic; + nat_sgn_le : out std_logic; + nat_sgn_eq : out std_logic; + nat_sgn_ne : out std_logic; + nat_sgn_ge : out std_logic; + nat_sgn_gt : out std_logic + ); +end; + +architecture a of ent is +begin + slv_eq <= slv_a ?= slv_b; + slv_ne <= slv_a ?/= slv_b; + + sl_lt <= sl_a ?< sl_b; + sl_le <= sl_a ?<= sl_b; + sl_eq <= sl_a ?= sl_b; + sl_ne <= sl_a ?/= sl_b; + sl_ge <= sl_a ?>= sl_b; + sl_gt <= sl_a ?> sl_b; + + uns_lt <= uns_a ?< uns_b; + uns_le <= uns_a ?<= uns_b; + uns_eq <= uns_a ?= uns_b; + uns_ne <= uns_a ?/= uns_b; + uns_ge <= uns_a ?>= uns_b; + uns_gt <= uns_a ?> uns_b; + + uns_int_lt <= uns_a ?< INT; + uns_int_le <= uns_a ?<= INT; + uns_int_eq <= uns_a ?= INT; + uns_int_ne <= uns_a ?/= INT; + uns_int_ge <= uns_a ?>= INT; + uns_int_gt <= uns_a ?> INT; + + int_uns_lt <= INT ?< uns_b; + int_uns_le <= INT ?<= uns_b; + int_uns_eq <= INT ?= uns_b; + int_uns_ne <= INT ?/= uns_b; + int_uns_ge <= INT ?>= uns_b; + int_uns_gt <= INT ?> uns_b; + + sgn_lt <= sgn_a ?< sgn_b; + sgn_le <= sgn_a ?<= sgn_b; + sgn_eq <= sgn_a ?= sgn_b; + sgn_ne <= sgn_a ?/= sgn_b; + sgn_ge <= sgn_a ?>= sgn_b; + sgn_gt <= sgn_a ?> sgn_b; + + sgn_nat_lt <= sgn_a ?< NAT; + sgn_nat_le <= sgn_a ?<= NAT; + sgn_nat_eq <= sgn_a ?= NAT; + sgn_nat_ne <= sgn_a ?/= NAT; + sgn_nat_ge <= sgn_a ?>= NAT; + sgn_nat_gt <= sgn_a ?> NAT; + + nat_sgn_lt <= NAT ?< sgn_b; + nat_sgn_le <= NAT ?<= sgn_b; + nat_sgn_eq <= NAT ?= sgn_b; + nat_sgn_ne <= NAT ?/= sgn_b; + nat_sgn_ge <= NAT ?>= sgn_b; + nat_sgn_gt <= NAT ?> sgn_b; +end; diff --git a/testsuite/synth/issue1109/ent.vhdl b/testsuite/synth/issue1109/ent.vhdl new file mode 100644 index 000000000..e4f8ef216 --- /dev/null +++ b/testsuite/synth/issue1109/ent.vhdl @@ -0,0 +1,130 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity ent is + generic ( + INT : integer := -42; + NAT : natural := 21 + ); + port ( + slv_a : in std_logic_vector(7 downto 0); + slv_b : in std_logic_vector(7 downto 0); + + slv_eq : out std_logic; + slv_ne : out std_logic; + + sl_a : in std_logic; + sl_b : in std_logic; + + sl_lt : out std_logic; + sl_le : out std_logic; + sl_eq : out std_logic; + sl_ne : out std_logic; + sl_ge : out std_logic; + sl_gt : out std_logic; + + uns_a : in unsigned(7 downto 0); + uns_b : in unsigned(7 downto 0); + + uns_lt : out std_logic; + uns_le : out std_logic; + uns_eq : out std_logic; + uns_ne : out std_logic; + uns_ge : out std_logic; + uns_gt : out std_logic; + + uns_int_lt : out std_logic; + uns_int_le : out std_logic; + uns_int_eq : out std_logic; + uns_int_ne : out std_logic; + uns_int_ge : out std_logic; + uns_int_gt : out std_logic; + + int_uns_lt : out std_logic; + int_uns_le : out std_logic; + int_uns_eq : out std_logic; + int_uns_ne : out std_logic; + int_uns_ge : out std_logic; + int_uns_gt : out std_logic; + + sgn_a : in signed(7 downto 0); + sgn_b : in signed(7 downto 0); + + sgn_lt : out std_logic; + sgn_le : out std_logic; + sgn_eq : out std_logic; + sgn_ne : out std_logic; + sgn_ge : out std_logic; + sgn_gt : out std_logic; + + sgn_nat_lt : out std_logic; + sgn_nat_le : out std_logic; + sgn_nat_eq : out std_logic; + sgn_nat_ne : out std_logic; + sgn_nat_ge : out std_logic; + sgn_nat_gt : out std_logic; + + nat_sgn_lt : out std_logic; + nat_sgn_le : out std_logic; + nat_sgn_eq : out std_logic; + nat_sgn_ne : out std_logic; + nat_sgn_ge : out std_logic; + nat_sgn_gt : out std_logic + ); +end; + +architecture a of ent is +begin + slv_eq <= slv_a ?= slv_b; + slv_ne <= slv_a ?/= slv_b; + + sl_lt <= sl_a ?< sl_b; + sl_le <= sl_a ?<= sl_b; + sl_eq <= sl_a ?= sl_b; + sl_ne <= sl_a ?/= sl_b; + sl_ge <= sl_a ?>= sl_b; + sl_gt <= sl_a ?> sl_b; + + uns_lt <= uns_a ?< uns_b; + uns_le <= uns_a ?<= uns_b; + uns_eq <= uns_a ?= uns_b; + uns_ne <= uns_a ?/= uns_b; + uns_ge <= uns_a ?>= uns_b; + uns_gt <= uns_a ?> uns_b; + + uns_int_lt <= uns_a ?< NAT; + uns_int_le <= uns_a ?<= NAT; + uns_int_eq <= uns_a ?= NAT; + uns_int_ne <= uns_a ?/= NAT; + uns_int_ge <= uns_a ?>= NAT; + uns_int_gt <= uns_a ?> NAT; + + int_uns_lt <= NAT ?< uns_b; + int_uns_le <= NAT ?<= uns_b; + int_uns_eq <= NAT ?= uns_b; + int_uns_ne <= NAT ?/= uns_b; + int_uns_ge <= NAT ?>= uns_b; + int_uns_gt <= NAT ?> uns_b; + + sgn_lt <= sgn_a ?< sgn_b; + sgn_le <= sgn_a ?<= sgn_b; + sgn_eq <= sgn_a ?= sgn_b; + sgn_ne <= sgn_a ?/= sgn_b; + sgn_ge <= sgn_a ?>= sgn_b; + sgn_gt <= sgn_a ?> sgn_b; + + sgn_nat_lt <= sgn_a ?< INT; + sgn_nat_le <= sgn_a ?<= INT; + sgn_nat_eq <= sgn_a ?= INT; + sgn_nat_ne <= sgn_a ?/= INT; + sgn_nat_ge <= sgn_a ?>= INT; + sgn_nat_gt <= sgn_a ?> INT; + + nat_sgn_lt <= INT ?< sgn_b; + nat_sgn_le <= INT ?<= sgn_b; + nat_sgn_eq <= INT ?= sgn_b; + nat_sgn_ne <= INT ?/= sgn_b; + nat_sgn_ge <= INT ?>= sgn_b; + nat_sgn_gt <= INT ?> sgn_b; +end; diff --git a/testsuite/synth/issue1109/testsuite.sh b/testsuite/synth/issue1109/testsuite.sh new file mode 100755 index 000000000..7a5fb5397 --- /dev/null +++ b/testsuite/synth/issue1109/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +GHDL_STD_FLAGS=--std=08 +synth ent.vhdl -e > syn_ent.vhdl +analyze syn_ent.vhdl +clean + +echo "Test successful" |