`celldefine
`suppress_faults
`enable_portfaults

`ifdef TETRAMAX
`define functional
`endif

`ifdef functional
 `timescale 1ns / 1ps
`ifndef dont_change_delay_mode // See CDT 66389 for detail on dont_change_delay_mode
 `delay_mode_distributed
`endif
`ifndef dont_change_delay_mode // See CDT 66389 for detail on dont_change_delay_mode
 `delay_mode_unit
`endif
`else
 `timescale 1ns / 1ps
`ifndef dont_change_delay_mode // See CDT 66389 for detail on dont_change_delay_mode
 `delay_mode_path
`endif
`endif 

module scs8hs_o22a_1 ( X ,  A1 , A2 , B1 , B2 , vpwr , vgnd );
input vpwr, vgnd;
output  X ;
input  A1 , A2 , B1 , B2 ;

wire	X , A1 , A2 , B1 ;
wire	B2 , csi_opt_294, csi_opt_292 ;

`ifdef functional
`else
reg csi_notifier;

	specify
    if ((!A2&!B1&B2)) (A1 +=> X) = (0:0:0,0:0:0);
    if ((!A2&B1&!B2)) (A1 +=> X) = (0:0:0,0:0:0);
    if ((!A2&B1&B2)) (A1 +=> X) = (0:0:0,0:0:0);
    if ((!A1&!B1&B2)) (A2 +=> X) = (0:0:0,0:0:0);
    if ((!A1&B1&!B2)) (A2 +=> X) = (0:0:0,0:0:0);
    if ((!A1&B1&B2)) (A2 +=> X) = (0:0:0,0:0:0);
    if ((!A1&A2&!B2)) (B1 +=> X) = (0:0:0,0:0:0);
    if ((A1&!A2&!B2)) (B1 +=> X) = (0:0:0,0:0:0);
    if ((A1&A2&!B2)) (B1 +=> X) = (0:0:0,0:0:0);
    if ((!A1&A2&!B1)) (B2 +=> X) = (0:0:0,0:0:0);
    if ((A1&!A2&!B1)) (B2 +=> X) = (0:0:0,0:0:0);
    if ((A1&A2&!B1)) (B2 +=> X) = (0:0:0,0:0:0);
	endspecify
`endif

  or ( csi_opt_294 , A2 , A1 ) ;
  or ( csi_opt_292 , B2 , B1 ) ;
  and  ( UDP_IN_X , csi_opt_294 , csi_opt_292 ) ;
  U_VPWR_VGND (UDP_OUT_X, UDP_IN_X, vpwr, vgnd) ;
  buf  (X, UDP_OUT_X) ;
endmodule
`endcelldefine
`disable_portfaults
`nosuppress_faults

