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

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

`celldefine
// This is the vcc and vss cell.
`timescale 1ns / 1ps
module scs8lp_conb_0  (
output HI,
output LO

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

);

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


  `ifdef SC_USE_PG_PIN
    pullup (UDP_IN_HI);
    scs8lpa_U_VPWR_VGND (HI, UDP_IN_HI, vpwr, vgnd) ;
    pulldown (UDP_IN_LO);
    scs8lpa_U_VPWR_VGND (LO, UDP_IN_LO, vpwr, vgnd) ;
  `else
    pullup(HI);
    pulldown(LO);
  `endif

endmodule
`endcelldefine
