ENTITY tfa IS END tfa; ARCHITECTURE one OF tfa IS -- declare component to be tested COMPONENT fa8 IS PORT(a,b : IN BIT_VECTOR(7 downto 0); cin : IN BIT; sum : OUT BIT_VECTOR(7 downto 0); cout : OUT BIT); END COMPONENT; FOR rip : fa8 USE ENTITY work.fa8(one); FOR cs : fa8 USE ENTITY work.fa8(two); SIGNAL a,b,sumrip,sumcs : BIT_VECTOR(7 downto 0); SIGNAL cin,coutrip,coutcs : BIT; BEGIN rip : fa8 PORT MAP (a,b,cin,sumrip,coutrip); cs : fa8 PORT MAP (a,b,cin,sumcs,coutcs); PROCESS --apply stimulus to the adders BEGIN cin <= '0'; -- start a and b input sequence for cin of '0' a <= "00000000"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "11111111"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "01010101"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "10101010"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "11101110"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "01110111"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; -- then repeat for cin of '1' cin <= '1'; a <= "00000000"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "11111111"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "01010101"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "10101010"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "11101110"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; --move to next a a <= "01110111"; b <= "00000000"; WAIT FOR 25 ns; b <= "11111111"; WAIT FOR 25 ns; b <= "01010101"; WAIT FOR 25 ns; b <= "10101010"; WAIT FOR 25 ns; b <= "01110111"; WAIT FOR 25 ns; b <= "10001000"; WAIT FOR 25 ns; WAIT; END PROCESS; END one;