// Automatically modified by replacePGwithIfDef.pl
// iptguser	Thu Aug 18 13:10:18 EDT 2011

// Automatically edited by removePhraseFromMultipleFiles.pl
// iptguser	Mon Aug  8 14:40:02 EDT 2011
// \`suppress_faults;^\n
// \`ifdef TETRAMAX;^\n
// \`ifdef functional;\`else
// \`delay_mode_path;^\n
// \`disable_portfaults;\`nosuppress_faults

`celldefine
`timescale 1ns / 1ps
module scs8lp_lsbuf_lp  (
output X,
input A

`ifdef SC_USE_PG_PIN
, input destpwr
, input vpwr
, input vgnd
, input destvpb
, input vpb
, input vnb
`endif

);

`ifdef functional
`else
`ifdef SC_USE_PG_PIN
`else
supply1 destpwr;
supply1 vpwr;
supply0 vgnd;
supply1 destvpb;
supply1 vpb;
supply0 vnb;
`endif
`endif


`ifdef functional
`else
reg csi_notifier;

	specify
    (A +=> X) = (0:0:0,0:0:0);
	endspecify
`endif
  `ifdef SC_USE_PG_PIN


  scs8lpa_U_VPWR_VGND (UDP_OUT_A, A, vpwr, vgnd) ;
  buf  (UDP_OUT_X, UDP_OUT_A) ;
  `else
    buf ( UDP_OUT_X , A ) ;
  `endif
  scs8lpa_U_VPWR_VGND  (X, UDP_OUT_X, destpwr, vgnd) ;
endmodule
`endcelldefine
