`timescale 1ns/1ns

module data_sel(
   input             S0     ,
   input             S1     ,
   input             D0     ,
   input             D1     ,
   input             D2     ,
   input             D3     ,
   
   output wire        Y    
);

assign Y = ~S1 & (~S0&D0 | S0&D1) | S1&(~S0&D2 | S0&D3);
     
endmodule

module sel_exp(
   input             A     ,
   input             B     ,
   input             C     ,
   
   output wire       L            
);



data_sel    u0
(
   .S0     (A),
   .S1     (B),

   .D0     (1'b0),
   .D1     (~C),
   .D2     (C),
   .D3     (1'b1),
   
   .Y    (L)
);













endmodule