--========================================================== -- Design units : MATRIXstim -- (entity, architecture and configuration) -- -- File name : MATRIXstim.vhd -- -- Purpose : stimuli testpattern for 2 dim systolic array -- -- Limitations : none -- -- Library : WORK -- -- Dependencies : IEEE, MATRIXbehave, MATRIXstruc, MATRIXtestbench -- -- Author : Claus-Juergen Thomas, REFT -- -- Simulator : Synopsys V3.1a on SUN SPARCstation 10 -- ----------------------------------------------------------- -- Revision list -- Version Author Date Changes -- -- V1.0 cjt 08.08.95 new -- --========================================================= LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE work.MATRIXpack.ALL; USE work.ELEMpack.ALL; ENTITY MATRIXstim IS GENERIC (M : Positive := 4; -- bit length of input vector N : Positive := 8; -- bit length of output vector E : Positive := 4); -- E*E matrix elements, Bandwidth PORT (StrA : OUT std_logic_vector ((E*M)-1 DOWNTO 0) ; -- data stream matrix A StrB : OUT std_logic_vector ((E*M)-1 DOWNTO 0) ; -- data stream matrix B reset: OUT std_logic; -- asynchronuous reset on active low clk : OUT std_logic; -- clock out A : OUT INT_vector (E*E-1 DOWNTO 0); -- integer straem matrix A B : OUT INT_vector (E*E-1 DOWNTO 0)); -- integer straem matrix B END MATRIXstim; --============================ARCHITECTURE================== ARCHITECTURE Behavior OF MATRIXstim IS BEGIN ------------------------------------------------------ -- examlpe : matrix of length E=2 -------------------- ------------------------------------------------------ -- --StrA <= ("00000000") AFTER 0 Ns,-- 0 0 -- ("00000011") AFTER 100 Ns,-- 0 3 -- ("00000000" AFTER 150 Ns,-- 0 0 -- ("01000000") AFTER 200 Ns,-- 4 0 -- ("00000010") AFTER 250 Ns,-- 0 2 -- ("00000000") AFTER 300 Ns;-- 0 0 -- --StrB <= ("00000000") AFTER 0 Ns,-- 0 0 -- ("00000101") AFTER 100 Ns,-- 0 5 -- ("00000000" AFTER 150 Ns,-- 0 0 -- ("00100000") AFTER 200 Ns,-- 2 0 -- ("00000011") AFTER 250 Ns,-- 0 3 -- ("00000000") AFTER 300 Ns;-- 0 0 -- ------------------------------------------------------ -- example : matrix OF length E=3 -------------------- ------------------------------------------------------ -- -- --StrA <= ("000000000000") AFTER 0 NS,-- 0 0 0 -- ("000000010000") AFTER 100 Ns,-- 0 1 0 -- ("010100000000") AFTER 150 Ns,-- 5 0 0 -- ("000000001000") AFTER 200 Ns,-- 0 0 8 -- ("000001000000") AFTER 250 Ns,-- 0 4 0 -- ("001100000000") AFTER 300 Ns,-- 3 0 0 -- ("000000000110") AFTER 350 Ns,-- 0 0 6 -- ("000000100000") AFTER 400 Ns,-- 0 2 0 -- ("000000000000") AFTER 450 Ns;-- 0 0 0 -- --StrB <= ("000000000000") AFTER 0 NS,-- 0 0 0 -- ("000001000000") AFTER 100 Ns,-- 0 4 0 -- ("011000000000") AFTER 150 Ns,-- 6 0 0 -- ("000000000011") AFTER 200 Ns,-- 0 0 3 -- ("000001010000") AFTER 250 Ns,-- 0 5 0 -- ("001000000000") AFTER 300 Ns,-- 2 0 0 -- ("000000000001") AFTER 350 Ns,-- 0 0 1 -- ("000010010000") AFTER 400 Ns,-- 0 9 0 -- ("000000000000") AFTER 450 Ns;-- 0 0 0 -- ------------------------------------------------------ -- example : matrix OF length E=4 -------------------- ------------------------------------------------------ StrA <= ("0000000000000000") AFTER 0 Ns,-- 0 0 0 0 ("0000000000110000") AFTER 100 Ns,-- 0 0 3 0 ("0000010100000000") AFTER 150 Ns,-- 0 5 0 0 ("0111000000000010") AFTER 200 Ns,-- 7 0 0 2 ("0000000000010000") AFTER 250 Ns,-- 0 0 1 0 ("0000010000000000") AFTER 300 Ns,-- 0 4 0 0 ("0010000000000011") AFTER 350 Ns,-- 2 0 0 3 ("0000000000100000") AFTER 400 Ns,-- 0 0 2 0 ("0000000100000000") AFTER 450 Ns,-- 0 1 0 0 ("0000000000000101") AFTER 500 Ns,-- 0 0 0 5 ("0000000010000000") AFTER 550 Ns,-- 0 0 8 0 ("0000000000000000") AFTER 600 Ns;-- 0 0 0 0 StrB <= ("0000000000000000") AFTER 0 Ns,-- 0 0 0 0 ("0000000001000000") AFTER 100 Ns,-- 0 0 4 0 ("0000001000000000") AFTER 150 Ns,-- 0 2 0 0 ("0001000000000101") AFTER 200 Ns,-- 1 0 0 5 ("0000000000110000") AFTER 250 Ns,-- 0 0 3 0 ("0000000100000000") AFTER 300 Ns,-- 0 1 0 0 ("0010000000000110") AFTER 350 Ns,-- 2 0 0 6 ("0000000000100000") AFTER 400 Ns,-- 0 0 2 0 ("0000011100000000") AFTER 450 Ns,-- 0 7 0 0 ("0000000000000100") AFTER 500 Ns,-- 0 0 0 4 ("0000000001010000") AFTER 550 Ns,-- 0 0 5 0 ("0000000000000000") AFTER 600 Ns;-- 0 0 0 0 A <= (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) AFTER 0 Ns, (3,5,7,0,2,1,4,2,0,3,2,1,0,0,5,8) AFTER 50 Ns; B <= (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) AFTER 0 Ns, (4,5,0,0,2,3,6,0,1,1,2,4,0,2,7,5) AFTER 50 Ns; ------------------------------------------------------ -- example : matrix OF length E=5 -------------------- ------------------------------------------------------ -- --StrA <= ("00000000000000000000") AFTER 0 Ns,-- 0 0 0 0 0 -- ("00000000001000000000") AFTER 100 Ns,-- 0 0 2 0 0 -- ("00000101000000000000") AFTER 150 Ns,-- 0 5 0 0 0 -- ("01100000000001000000") AFTER 200 Ns,-- 6 0 0 4 0 -- ("00000000100000000000") AFTER 250 Ns,-- 0 0 8 0 0 -- ("00001001000000000011") AFTER 300 Ns,-- 0 9 0 0 3 -- ("01100000000000010000") AFTER 350 Ns,-- 6 0 0 1 0 -- ("00000000010000000000") AFTER 400 Ns,-- 0 0 4 0 0 -- ("00000011000000000101") AFTER 450 Ns,-- 0 3 0 0 5 -- ("00100000000000010000") AFTER 500 Ns,-- 2 0 0 1 0 -- ("00000000001000000000") AFTER 550 Ns,-- 0 0 2 0 0 -- ("00000110000000000011") AFTER 600 Ns,-- 0 6 0 0 3 -- ("00000000000001010000") AFTER 650 Ns,-- 0 0 0 5 0 -- ("00000000011100000000") AFTER 700 Ns,-- 0 0 7 0 0 -- ("00000000000000000000") AFTER 750 Ns;-- 0 0 0 0 0 -- --StrB <= ("00000000000000000000") AFTER 0 Ns,-- 0 0 0 0 0 -- ("00000000010000000000") AFTER 100 Ns,-- 0 0 4 0 0 -- ("00000011000000000000") AFTER 150 Ns,-- 0 3 0 0 0 -- ("01000000000000010000") AFTER 200 Ns,-- 4 0 0 1 0 -- ("00000000001000000000") AFTER 250 Ns,-- 0 0 2 0 0 -- ("00000101000000000101") AFTER 300 Ns,-- 0 5 0 0 5 -- ("00110000000001100000") AFTER 350 Ns,-- 3 0 0 6 0 -- ("00000000011100000000") AFTER 400 Ns,-- 0 0 7 0 0 -- ("00000101000000001000") AFTER 450 Ns,-- 0 5 0 0 8 -- ("00010000000010010000") AFTER 500 Ns,-- 1 0 0 9 0 -- ("00000000010000000000") AFTER 550 Ns,-- 0 0 4 0 0 -- ("00000111000000001000") AFTER 600 Ns,-- 0 7 0 0 8 -- ("00000000000000100000") AFTER 650 Ns,-- 0 0 0 2 0 -- ("00000000100000000000") AFTER 700 Ns,-- 0 0 8 0 0 -- ("00000000000000000000") AFTER 750 Ns;-- 0 0 0 0 0 -- ------------------------------------------------------ reset <= '0' AFTER 20 Ns, '1' AFTER 50 Ns; clk <= '1' AFTER 0 Ns, '0' AFTER 25 Ns, '1' AFTER 50 Ns, '0' AFTER 75 Ns, '1' AFTER 100 Ns, '0' AFTER 125 Ns, '1' AFTER 150 Ns, '0' AFTER 175 Ns, '1' AFTER 200 Ns, '0' AFTER 225 Ns, '1' AFTER 250 Ns, '0' AFTER 275 Ns, '1' AFTER 300 Ns, '0' AFTER 325 Ns, '1' AFTER 350 Ns, '0' AFTER 375 Ns, '1' AFTER 400 Ns, '0' AFTER 425 Ns, '1' AFTER 450 Ns, '0' AFTER 475 Ns, '1' AFTER 500 Ns, '0' AFTER 525 Ns, '1' AFTER 550 Ns, '0' AFTER 575 Ns, '1' AFTER 600 Ns, '0' AFTER 625 Ns, '1' AFTER 650 Ns, '0' AFTER 675 Ns, '1' AFTER 700 Ns, '0' AFTER 725 Ns, '1' AFTER 750 Ns, '0' AFTER 775 Ns, '1' AFTER 800 Ns, '0' AFTER 825 Ns, '1' AFTER 850 Ns, '0' AFTER 875 Ns, '1' AFTER 900 Ns, '0' AFTER 925 Ns, '1' AFTER 950 Ns, '0' AFTER 975 Ns, '1' AFTER 1000 Ns, '0' AFTER 1025 Ns, '1' AFTER 1050 Ns, '0' AFTER 1075 Ns, '1' AFTER 1100 Ns, '0' AFTER 1125 Ns, '1' AFTER 1150 Ns, '0' AFTER 1175 Ns, '1' AFTER 1200 Ns, '0' AFTER 1225 Ns, '1' AFTER 1250 Ns, '0' AFTER 1275 Ns, '1' AFTER 1300 Ns, '0' AFTER 1325 Ns, '1' AFTER 1350 Ns, '0' AFTER 1375 Ns, '1' AFTER 1400 Ns, '0' AFTER 1425 Ns, '1' AFTER 1450 Ns, '0' AFTER 1475 Ns, '1' AFTER 1500 Ns, '0' AFTER 1525 Ns, '1' AFTER 1550 Ns, '0' AFTER 1575 Ns, '1' AFTER 1600 Ns, '0' AFTER 1625 Ns, '1' AFTER 1650 Ns, '0' AFTER 1675 Ns, '1' AFTER 1700 Ns, '0' AFTER 1725 Ns, '1' AFTER 1750 Ns, '0' AFTER 1775 Ns, '1' AFTER 1800 Ns, '0' AFTER 1825 Ns, '1' AFTER 1850 Ns, '0' AFTER 1875 Ns, '1' AFTER 1900 Ns, '0' AFTER 1925 Ns, '1' AFTER 1950 Ns, '0' AFTER 1975 Ns, '1' AFTER 2000 Ns; END Behavior;