verilog: add sv_maps iterators
[ghdl-vlg.git] / testsuite / synth / issue1101 / ent.vhdl
blob176bf7c9c33d5ff45c5b27c5e6ad997586bcdf8c
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
5 entity ent is
6         generic (
7                 INT : integer := -25;
8                 SL  : std_logic := '1'
9         );
10         port (
11                 a : in signed(7 downto 0);
12                 b : in signed(7 downto 0);
14                 const : out signed(7 downto 0);
15                 absolute1 : out unsigned(7 downto 0);
16                 absolute2 : out unsigned(7 downto 0);
17                 sum  : out signed(8 downto 0);
18                 diff : out signed(8 downto 0);
19                 inv_diff : out signed(8 downto 0);
20                 quarter : out signed(7 downto 0);
22                 int_sum  : out signed(8 downto 0);
23                 int_diff : out signed(8 downto 0);
25                 inv_int_sum  : out signed(8 downto 0);
26                 inv_int_diff : out signed(8 downto 0);
28                 sl_sum  : out signed(8 downto 0);
29                 sl_diff : out signed(8 downto 0);
31                 inv_sl_sum  : out signed(8 downto 0);
32                 inv_sl_diff : out signed(8 downto 0);
34                 lt : out boolean;
35                 le : out boolean;
36                 eq : out boolean;
37                 neq : out boolean;
38                 ge : out boolean;
39                 gt : out boolean;
41                 int_lt : out boolean;
42                 int_le : out boolean;
43                 int_eq : out boolean;
44                 int_neq : out boolean;
45                 int_ge : out boolean;
46                 int_gt : out boolean;
48                 inv_int_lt : out boolean;
49                 inv_int_le : out boolean;
50                 inv_int_eq : out boolean;
51                 inv_int_neq : out boolean;
52                 inv_int_ge : out boolean;
53                 inv_int_gt : out boolean
54         );
55 end;
57 architecture a of ent is
58         signal ra, rb : signed(8 downto 0);
59 begin
60         ra <= resize(a, 9);
61         rb <= resize(b, 9);
63         const <= to_signed(INT, const'length);
64         absolute1 <= to_unsigned(abs(INT), absolute1'length);
65         absolute2 <= unsigned(abs(a));
66         sum <= ra + rb;
67         diff <= ra + (-rb);
68         inv_diff <= rb - ra;
69         quarter <= a / 4;
71         int_sum <= ra + INT;
72         int_diff <= ra - INT;
74         inv_int_sum <= INT + ra;
75         inv_int_diff <= INT - ra;
77         sl_sum <= ra + SL;
78         sl_diff <= ra - SL;
80         inv_sl_sum <= SL + ra;
81         inv_sl_diff <= SL - ra;
83         lt  <= a < b;
84         le  <= a <= b;
85         eq  <= a = b;
86         neq <= a /= b;
87         ge  <= a >= b;
88         gt  <= a > b;
90         int_lt  <= a < INT;
91         int_le  <= a <= INT;
92         int_eq  <= a = INT;
93         int_neq <= a /= INT;
94         int_ge  <= a >= INT;
95         int_gt  <= a > INT;
97         inv_int_lt  <= INT < b;
98         inv_int_le  <= INT <= b;
99         inv_int_eq  <= INT = b;
100         inv_int_neq <= INT /= b;
101         inv_int_ge  <= INT >= b;
102         inv_int_gt  <= INT > b;
103 end;