--------------------------------------------------------------------------- -- -- Radix-512 Divider Benchmark -- -- Test Vectors -- -- VHDL file generated by make_tv from test_vectors.bit -- date : Apr 8, 1994 time : 13:59:30 -- --------------------------------------------------------------------------- Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; Entity E is generic( simulation_delay : time := 10 ns ; division_delay : time := 70 ns ); end; architecture A of E is component radix512 port( x,d: in std_logic_vector (52 downto 0); q: out std_logic_vector (52 downto 0)); end component; signal x,d: std_logic_vector(52 downto 0); signal q: std_logic_vector(52 downto 0); for all : radix512 use entity work.radix512(radix512) ; begin INST1 : radix512 port map( x, d, q ); process begin wait for simulation_delay ; --------------------------------------------------------------------------- -- TEST VECTORS --------------------------------------------------------------------------- -- x = 0.75000000000000000000000000000000000000000000000000000 -- d = 0.87500000000000000000000000000000000000000000000000000 -- q = 0.85714285714285709527615608749329112470149993896484375 x <= "11000000000000000000000000000000000000000000000000000" ; d <= "11100000000000000000000000000000000000000000000000000" ; wait for division_delay; assert q = "11011011011011011011011011011011011011011011011011011" report "q does not match in pattern 1" severity error; --------------------------------------------------------------------------- -- x = 0.65625000000000000000000000000000000000000000000000000 -- d = 0.87500000000000000000000000000000000000000000000000000 -- q = 0.75000000000000000000000000000000000000000000000000000 x <= "10101000000000000000000000000000000000000000000000000" ; d <= "11100000000000000000000000000000000000000000000000000" ; wait for division_delay; assert q = "11000000000000000000000000000000000000000000000000000" report "q does not match in pattern 2" severity error; --------------------------------------------------------------------------- -- x = 0.50000000000000000000000000000000000000000000000000000 -- d = 0.60000002384185791015625000000000000000000000000000000 -- q = 0.83333330021964313605309371268958784639835357666015625 x <= "10000000000000000000000000000000000000000000000000000" ; d <= "10011001100110011001101000000000000000000000000000000" ; wait for division_delay; assert q = "11010101010101010101010011000111000111000111001000101" report "q does not match in pattern 3" severity error; --------------------------------------------------------------------------- -- x = 0.50000000000000000000000000000000000000000000000000000 -- d = 0.99999999999999988897769753748434595763683319091796875 -- q = 0.50000000000000011102230246251565404236316680908203125 x <= "10000000000000000000000000000000000000000000000000000" ; d <= "11111111111111111111111111111111111111111111111111111" ; wait for division_delay; assert q = "10000000000000000000000000000000000000000000000000001" report "q does not match in pattern 4" severity error; --------------------------------------------------------------------------- -- x = 0.25000000000000000000000000000000000000000000000000000 -- d = 0.50000000000000000000000000000000000000000000000000000 -- q = 0.50000000000000000000000000000000000000000000000000000 x <= "01000000000000000000000000000000000000000000000000000" ; d <= "10000000000000000000000000000000000000000000000000000" ; wait for division_delay; assert q = "10000000000000000000000000000000000000000000000000000" report "q does not match in pattern 5" severity error; --------------------------------------------------------------------------- -- x = 0.25000000000000000000000000000000000000000000000000000 -- d = 0.99999999999999988897769753748434595763683319091796875 -- q = 0.25000000000000005551115123125782702118158340454101562 x <= "01000000000000000000000000000000000000000000000000000" ; d <= "11111111111111111111111111111111111111111111111111111" ; wait for division_delay; assert q = "01000000000000000000000000000000000000000000000000000" report "q does not match in pattern 6" severity error; --------------------------------------------------------------------------- -- x = 0.99999999999999977795539507496869191527366638183593750 -- d = 0.99999999999999988897769753748434595763683319091796875 -- q = 0.99999999999999988897769753748434595763683319091796875 x <= "11111111111111111111111111111111111111111111111111110" ; d <= "11111111111111111111111111111111111111111111111111111" ; wait for division_delay; assert q = "11111111111111111111111111111111111111111111111111111" report "q does not match in pattern 7" severity error; --------------------------------------------------------------------------- -- x = 0.50000000000000000000000000000000000000000000000000000 -- d = 0.50000000000000011102230246251565404236316680908203125 -- q = 0.99999999999999977795539507496869191527366638183593750 x <= "10000000000000000000000000000000000000000000000000000" ; d <= "10000000000000000000000000000000000000000000000000001" ; wait for division_delay; assert q = "11111111111111111111111111111111111111111111111111110" report "q does not match in pattern 8" severity error; --------------------------------------------------------------------------- -- x = 0.49999999999999988897769753748434595763683319091796875 -- d = 0.50000000000000000000000000000000000000000000000000000 -- q = 0.99999999999999977795539507496869191527366638183593750 x <= "01111111111111111111111111111111111111111111111111111" ; d <= "10000000000000000000000000000000000000000000000000000" ; wait for division_delay; assert q = "11111111111111111111111111111111111111111111111111110" report "q does not match in pattern 9" severity error; --------------------------------------------------------------------------- -- x = 0.49999999999999988897769753748434595763683319091796875 -- d = 0.74999999999999988897769753748434595763683319091796875 -- q = 0.66666666666666662965923251249478198587894439697265625 x <= "01111111111111111111111111111111111111111111111111111" ; d <= "10111111111111111111111111111111111111111111111111111" ; wait for division_delay; assert q = "10101010101010101010101010101010101010101010101010101" report "q does not match in pattern 10" severity error; --------------------------------------------------------------------------- end process; end;