entity muxs is
   port (
      alu_out : in      bit_vector(3 downto 0);
      i       : in      bit_vector(2 downto 0);
      noe     : in      bit;
      oe      : out     bit;
      ra      : in      bit_vector(3 downto 0);
      shift_l : out     bit;
      shift_r : out     bit;
      vdd     : in      bit;
      vss     : in      bit;
      y       : out     mux_vector(3 downto 0) bus
 );
end muxs;

architecture structural of muxs is
Component o3_x2
   port (
      i0  : in      bit;
      i1  : in      bit;
      i2  : in      bit;
      q   : out     bit;
      vdd : in      bit;
      vss : in      bit
 );
end component;

Component inv_x2
   port (
      i   : in      bit;
      nq  : out     bit;
      vdd : in      bit;
      vss : in      bit
 );
end component;

Component an12_x1
   port (
      i0  : in      bit;
      i1  : in      bit;
      q   : out     bit;
      vdd : in      bit;
      vss : in      bit
 );
end component;

Component a2_x2
   port (
      i0  : in      bit;
      i1  : in      bit;
      q   : out     bit;
      vdd : in      bit;
      vss : in      bit
 );
end component;

Component buf_x2
   port (
      i   : in      bit;
      q   : out     bit;
      vdd : in      bit;
      vss : in      bit
 );
end component;

Component nmx2_x1
   port (
      cmd : in      bit;
      i0  : in      bit;
      i1  : in      bit;
      nq  : out     bit;
      vdd : in      bit;
      vss : in      bit
 );
end component;

Component nts_x1
   port (
      cmd : in      bit;
      i   : in      bit;
      nq  : out     mux_bit bus;
      vdd : in      bit;
      vss : in      bit
 );
end component;

signal not_noe       : bit;
signal not_aux1      : bit;
signal nmx2_x1_sig   : bit;
signal nmx2_x1_4_sig : bit;
signal nmx2_x1_3_sig : bit;
signal nmx2_x1_2_sig : bit;
signal inv_x2_sig    : bit;

begin

inv_x2_ins : inv_x2
   port map (
      i   => i(1),
      nq  => inv_x2_sig,
      vdd => vdd,
      vss => vss
   );

not_aux1_ins : o3_x2
   port map (
      i0  => i(0),
      i1  => i(2),
      i2  => inv_x2_sig,
      q   => not_aux1,
      vdd => vdd,
      vss => vss
   );

not_noe_ins : inv_x2
   port map (
      i   => noe,
      nq  => not_noe,
      vdd => vdd,
      vss => vss
   );

shift_r_ins : an12_x1
   port map (
      i0  => i(1),
      i1  => i(2),
      q   => shift_r,
      vdd => vdd,
      vss => vss
   );

shift_l_ins : a2_x2
   port map (
      i0  => i(2),
      i1  => i(1),
      q   => shift_l,
      vdd => vdd,
      vss => vss
   );

oe_ins : buf_x2
   port map (
      i   => not_noe,
      q   => oe,
      vdd => vdd,
      vss => vss
   );

nmx2_x1_ins : nmx2_x1
   port map (
      cmd => not_aux1,
      i0  => ra(0),
      i1  => alu_out(0),
      nq  => nmx2_x1_sig,
      vdd => vdd,
      vss => vss
   );

y_0_ins : nts_x1
   port map (
      cmd => not_noe,
      i   => nmx2_x1_sig,
      nq  => y(0),
      vdd => vdd,
      vss => vss
   );

nmx2_x1_2_ins : nmx2_x1
   port map (
      cmd => not_aux1,
      i0  => ra(1),
      i1  => alu_out(1),
      nq  => nmx2_x1_2_sig,
      vdd => vdd,
      vss => vss
   );

y_1_ins : nts_x1
   port map (
      cmd => not_noe,
      i   => nmx2_x1_2_sig,
      nq  => y(1),
      vdd => vdd,
      vss => vss
   );

nmx2_x1_3_ins : nmx2_x1
   port map (
      cmd => not_aux1,
      i0  => ra(2),
      i1  => alu_out(2),
      nq  => nmx2_x1_3_sig,
      vdd => vdd,
      vss => vss
   );

y_2_ins : nts_x1
   port map (
      cmd => not_noe,
      i   => nmx2_x1_3_sig,
      nq  => y(2),
      vdd => vdd,
      vss => vss
   );

nmx2_x1_4_ins : nmx2_x1
   port map (
      cmd => not_aux1,
      i0  => ra(3),
      i1  => alu_out(3),
      nq  => nmx2_x1_4_sig,
      vdd => vdd,
      vss => vss
   );

y_3_ins : nts_x1
   port map (
      cmd => not_noe,
      i   => nmx2_x1_4_sig,
      nq  => y(3),
      vdd => vdd,
      vss => vss
   );


end structural;
