entity testminmax is end entity testminmax; library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.minmax.all; architecture testbench of testminmax is begin -- architecture testbench -- purpose: Test routines for the minmax packages testblock : process is variable x, y, z, a, b, c : integer; -- integers variable as, bs, cs : signed (7 downto 0); -- signed variable au, bu, cu : unsigned (7 downto 0); -- unsigned variable asr, bsr, csr : signed (0 to 7); -- reverse signed begin -- process x := 1; y := 2; z := maximum (x,y); assert (z = 2) report "Max miscompare, 2" severity error; z := maximum (y,x); assert (z = 2) report "Max miscompare, r2" severity error; z := minimum (x, y); assert (z = 1) report "Min miscompare, 1" severity error; z := minimum (y, x); assert (z = 1) report "Min miscompare, r1" severity error; as := "10000001"; bs := "00000010"; cs := maximum (as, bs); assert (cs = "00000010") report "Max miscompare 02x" severity error; cs := maximum (bs, cs); assert (cs = "00000010") report "Max miscompare 02xr" severity error; cs := minimum(as, bs); assert (cs = "10000001") report "Min miscompare 81x" severity error; cs := minimum(bs, as); assert (cs = "10000001") report "Min miscompare 81xr" severity error; au := "10000010"; bu := "00000100"; cu := maximum (au, bu); assert (cu = "10000010") report "Max miscompare 82x" severity error; cu := maximum (bu, cu); assert (cu = "10000010") report "Max miscompare 82xr" severity error; cu := minimum(au, bu); assert (cu = "00000100") report "Min miscompare 04x" severity error; cu := minimum(bu, au); assert (cu = "00000100") report "Min miscompare 04xr" severity error; au := "00100001"; x := find_lsb (au, '1'); assert (x = 0) report "find_lsb error 0" severity error; x := find_lsb (au, '0'); assert (x = 1) report "find_lsb error 1" severity error; x := find_lsb (au, 'Z'); assert (x = -1) report "find_lsb error -1" severity error; x := find_msb (au, '1'); assert (x = 5) report "find_msb error 1" severity error; x := find_msb (au, '0'); assert (x = 7) report "find_msb error 7" severity error; x := find_msb (au, 'Z'); assert (x = -1) report "find_msb error -1" severity error; assert (false) report "Testing Complete" severity note; wait; end process; end architecture testbench;