-------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 01:57:53 10/11/12 -- Design Name: -- Module Name: test - Behavioral -- Project Name: -- Target Device: -- Tool versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- -------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity Router is port(free1,free2,free3,free4,free5:in std_logic:='1'; buffer_E1,buffer_E2,buffer_E3,buffer_E4,buffer_E5:out std_logic:='0'; buffer_busy1,buffer_busy2,buffer_busy3,buffer_busy4,buffer_busy5:in std_logic:='0'; req_rout1,req_rout2,req_rout3,req_rout4,req_rout5:in std_logic; ack_rout1,ack_rout2,ack_rout3,ack_rout4,ack_rout5:out std_logic; ID,incoming1,incoming2,incoming3,incoming4,incoming5:in std_logic_vector(3 downto 0); select_port1,select_port2,select_port3,select_port4,select_port5:out std_logic_vector(2 downto 0); deadlock1,deadlock2,deadlock3,deadlock4,deadlock5:out std_logic; buffer_select1,buffer_select2,buffer_select3:out std_logic_vector(1 downto 0); buffer_select4,buffer_select5:out std_logic_vector(1 downto 0); load:out std_logic); end Router; architecture Router of Router is signal a1,a2,a3,a4,a5:std_logic_vector(1 downto 0); --signal save5to1,save5to2,save5to3,save5to4,save5to5,save4to1:std_logic; begin process(req_rout1) begin if(req_rout1='1')then if(incoming1(3 downto 2)>ID(3 downto 2))then if(free3='1')then select_port1<="010"; ack_rout1<='1'; elsif(free3='0')then if(incoming1(1 downto 0)>ID(1 downto 0))then if(buffer_busy1='0')then select_port1<="100"; a1<="10"; ack_rout1<='1'; elsif(buffer_busy1='1')then -- if(free2='1')then select_port1<="001"; ack_rout1<='1'; elsif(free4='1')then select_port1<="011"; ack_rout1<='1'; else deadlock1<='1'; end if;--end of free2 and free4 end if;--end of buffer_busy1 elsif(incoming1(1 downto 0)ID(1 downto 0))then if(buffer_busy1='0')then select_port1<="100"; buffer_select1<="11"; ack_rout1<='1'; a1<="11"; elsif(buffer_busy1='1')then if(free2='1')then select_port1<="001"; ack_rout1<='1'; elsif(free3='1')then select_port1<="010"; ack_rout1<='1'; else deadlock1<='1'; end if;--end of free2 and free3 end if;--end of buffer_busy1 elsif(incoming1(1 downto 0)ID(1 downto 0))then if(buffer_busy1='0')then select_port1<="100"; ack_rout1<='1'; buffer_select1<="00"; a1<="00"; elsif(buffer_busy1='1')then select_port1<="010"; ack_rout1<='1'; else deadlock1<='1'; end if;--end of buffer_busy elsif(incoming1(1 downto 0)ID(3 downto 2))then if(free3='1')then select_port2<="010"; ack_rout2<='1'; elsif(free3='0')then if(incoming2(1 downto 0)>ID(1 downto 0))then if(free1='1')then select_port2<="000"; ack_rout2<='1'; elsif(free1='0')then if(buffer_busy2='0')then select_port2<="100"; ack_rout2<='1'; buffer_select2<="10"; a2<="10"; elsif(buffer_busy2='1')then if(free4='1')then select_port2<="011"; ack_rout2<='1'; elsif(free2='1')then select_port2<="001"; ack_rout2<='1'; else deadlock2<='1'; end if;--end of free4 and free2 end if;--end of bufer_busy2 end if;--end of free1 elsif(incoming2(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port2<="000"; ack_rout2<='1'; elsif(free1='0')then if(buffer_busy2='0')then select_port2<="100"; ack_rout2<='1'; buffer_select2<="11"; a2<="11"; elsif(buffer_busy2='1')then elsif(free4='1')then select_port2<="011"; ack_rout2<='1'; elsif(free2='1')then ack_rout2<='1'; select_port2<="001"; ack_rout2<='1'; else deadlock2<='1'; end if;--end of free4 and free2 end if;--end of buffer_busy2 elsif(incoming2(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port2<="000"; ack_rout2<='1'; elsif(free1='0')then if(buffer_busy2='0')then select_port2<="100"; ack_rout2<='1'; buffer_select2<="00"; a2<="00"; elsif(buffer_busy2='1')then select_port2<="001"; ack_rout2<='1'; else deadlock2<='1'; end if;--end of buffer_busy2 end if;--end of free1 elsif(incoming2(1 downto 0)ID(3 downto 2))then -- if(buffer_busy3='0')then -- -- select_port3<="010"; -- ack_rout3<='1'; -- -- elsif(buffer_busy3='1')then -- if(incoming3(1 downto 0)>ID(1 downto 0))then if(free1='1')then select_port3<="000"; ack_rout3<='1'; elsif(free1='0')then if(buffer_busy3='0')then select_port3<="100"; ack_rout3<='1'; buffer_select3<="00"; a3<="00"; elsif(buffer_busy3='1')then if(free2='1')then select_port3<="001"; ack_rout3<='1'; elsif(free4='1')then select_port3<="011"; ack_rout3<='1'; else deadlock3<='1'; end if;--end of free2 and free4 end if;--end of buffer_busy3 end if;--end of free1 elsif(incoming3(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port3<="000"; ack_rout3<='1'; elsif(free1='0')then if(buffer_busy3='0')then select_port3<="100"; ack_rout3<='1'; buffer_select3<="11"; a3<="11"; end if; elsif(buffer_busy3='1')then if(free2='1')then select_port3<="001"; ack_rout3<='1'; else deadlock3<='1'; end if;--end of free2 end if;--end of buffer_busy3 elsif(incoming3(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port3<="000"; ack_rout3<='1'; elsif(free1='0')then if(buffer_busy3='0')then select_port3<="100"; ack_rout3<='1'; buffer_select3<="00"; a3<="00"; elsif(buffer_busy3='1')then select_port3<="001"; ack_rout3<='1'; else deadlock3<='1'; end if;--end of buffer_busy3 end if;--end of free1 elsif(incoming3(1 downto 0)ID(3 downto 2))then if(free3='1')then select_port4<="010"; ack_rout4<='1'; elsif(free3='0')then if(incoming4(1 downto 0)>ID(1 downto 0))then if(free1='1')then select_port4<="000"; ack_rout4<='1'; elsif(free1='0')then if(buffer_busy4='0')then select_port4<="100"; ack_rout4<='1'; buffer_select4<="10"; a4<="10"; elsif(buffer_busy4='1')then if(free2='1')then select_port4<="001"; ack_rout4<='1'; elsif(free4='1')then select_port4<="011"; ack_rout4<='1'; else deadlock4<='1'; end if;--end of free2 and free4 end if;--end of buffer_busy4 end if;--end free1 elsif(incoming4(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port4<="000"; ack_rout4<='1'; elsif(free1='0')then if(buffer_busy4='0')then select_port4<="100"; buffer_select4<="00"; a4<="00"; elsif(buffer_busy4='1')then if(free2='1')then select_port4<="001"; ack_rout4<='1'; elsif(free4='1')then select_port4<="011"; ack_rout4<='1'; else deadlock4<='1'; end if;--end of free2 and free4 end if;--end of buffer-busy4 end if;--end of free1 elsif(incoming4(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port4<="000"; ack_rout4<='1'; elsif(free1='0')then if(buffer_busy4='0')then select_port4<="100"; ack_rout4<='1'; buffer_select4<="00"; a4<="00"; elsif(buffer_busy4='1')then select_port4<="001"; ack_rout4<='1'; else deadlock4<='1'; end if;--end of buffer_busy4 end if;--end of free1 elsif(incoming4(1 downto 0)ID(3 downto 2))then if(free3='1')then select_port5<="010"; ack_rout5<='1'; elsif(free3='0')then if(incoming5(1 downto 0)>ID(1 downto 0))then--== if(free1='1')then select_port5<="000"; ack_rout5<='1'; elsif(free1='0')then if(buffer_busy5='0')then select_port5<="100"; buffer_select5<="10"; a5<="10"; elsif(buffer_busy5='1')then if(free2='1')then select_port5<="001"; ack_rout5<='1'; elsif(free4='1')then select_port5<="011"; ack_rout5<='1'; else deadlock5<='1'; end if;--end of free2 and free4 end if;-- end of buffer_busy5 end if;--end of free1 elsif(incoming5(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port5<="000"; ack_rout5<='1'; elsif(free1='0')then if(buffer_busy5='0')then select_port5<="100"; ack_rout5<='1'; buffer_select5<="11"; a5<="11"; end if; elsif(buffer_busy5='1')then if(free2='1')then select_port5<="001"; ack_rout5<='1'; elsif(free4='1')then select_port5<="011"; ack_rout5<='1'; else deadlock5<='1'; end if;--end of free2 and free4 end if;--end of buffer_busy5 end if;--end free1 elsif(incoming5(1 downto 0)ID(1 downto 0))then if(free1='1')then select_port5<="000"; ack_rout5<='1'; elsif(free1='0')then if(buffer_busy5='0')then select_port5<="100"; ack_rout5<='1'; buffer_select5<="00"; a5<="00"; elsif(buffer_busy5='1')then if(free3='1')then select_port5<="010"; ack_rout5<='1'; elsif(free4='1')then select_port5<="011"; ack_rout5<='1'; elsif(free2='1')then select_port5<="001"; ack_rout5<='1'; else deadlock5<='1'; end if;--end of free3 and free4 and free2 end if;--end of buffer_busy5 end if;--end of free1 elsif(incoming5(1 downto 0)