library (ls05_stdcells) {
  capacitive_load_unit (1.0, pf);
  current_unit: "1uA";
  default_operating_conditions: typical;
  delay_model: table_lookup;
  in_place_swap_mode: match_footprint;
  input_threshold_pct_fall: 50.0;
  input_threshold_pct_rise: 50.0;
  leakage_power_unit: "1nW";
  nom_process: 1.0;
  nom_temperature: 25.0;
  nom_voltage: 5.0;
  output_threshold_pct_fall: 50.0;
  output_threshold_pct_rise: 50.0;
  pulling_resistance_unit: "1kohm";
  slew_lower_threshold_pct_fall: 20.0;
  slew_lower_threshold_pct_rise: 20.0;
  slew_upper_threshold_pct_fall: 80.0;
  slew_upper_threshold_pct_rise: 80.0;
  time_unit: "1ns";
  voltage_unit: "1V";
  operating_conditions (typical) {
    process: 1.0;
    temperature: 25.0;
    voltage: 5.0;
  }
  lu_table_template (delay_template_5x1) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    variable_1: input_net_transition;
  }
  lu_table_template (delay_template_5x5) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    variable_1: total_output_net_capacitance;
    variable_2: input_net_transition;
  }
  lu_table_template (delay_template_5x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: total_output_net_capacitance;
    variable_2: input_net_transition;
  }
  lu_table_template (delay_template_6x1) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: input_net_transition;
  }
  lu_table_template (delay_template_6x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: total_output_net_capacitance;
    variable_2: input_net_transition;
  }
  power_lut_template (energy_template_5x5) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    variable_1: total_output_net_capacitance;
    variable_2: input_transition_time;
  }
  power_lut_template (energy_template_5x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: total_output_net_capacitance;
    variable_2: input_transition_time;
  }
  power_lut_template (energy_template_6x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: total_output_net_capacitance;
    variable_2: input_transition_time;
  }
  lu_table_template (hold_template_3x5) {
    index_1 (
      "1000.0, 1001.0, 1002.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  lu_table_template (hold_template_3x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  power_lut_template (passive_energy_template_5x1) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    variable_1: input_transition_time;
  }
  power_lut_template (passive_energy_template_6x1) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: input_transition_time;
  }
  lu_table_template (recovery_template_3x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  lu_table_template (recovery_template_6x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  lu_table_template (removal_template_3x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  lu_table_template (setup_template_3x5) {
    index_1 (
      "1000.0, 1001.0, 1002.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  lu_table_template (setup_template_3x6) {
    index_1 (
      "1000.0, 1001.0, 1002.0"
    );
    index_2 (
      "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0"
    );
    variable_1: related_pin_transition;
    variable_2: constrained_pin_transition;
  }
  cell (INVX4) {
    area: 164592.0;
    cell_leakage_power: 0.1173;
    pin (A) {
      capacitance: 0.013438478664617209;
      direction: input;
      fall_capacitance: 0.014499779614899311;
      rise_capacitance: 0.012377177714335106;
    }
    pin (Y) {
      direction: output;
      function: "(!A)";
      timing () {
        related_pin: "A";
        timing_sense: negative_unate;
        cell_rise (delay_template_5x5) {
          index_1 (
            "0.000500, 0.050000, 0.100000, 0.200000, 1.000000"
          );
          index_2 (
            "0.010000, 0.050000, 0.100000, 0.200000, 1.500000"
          );
          values (
            "0.004836, 0.004170, 0.002946, -0.001907, -0.066292", \
            "0.023946, 0.025031, 0.028842, 0.029915, -0.004484", \
            "0.044976, 0.042290, 0.047609, 0.052305, 0.040052", \
            "0.088868, 0.082479, 0.082214, 0.089172, 0.111518", \
            "0.440751, 0.428400, 0.415953, 0.398459, 0.482872"
          );
        }
        cell_fall (delay_template_5x5) {
          index_1 (
            "0.000500, 0.050000, 0.100000, 0.200000, 1.000000"
          );
          index_2 (
            "0.010000, 0.050000, 0.100000, 0.200000, 1.500000"
          );
          values (
            "0.005423, 0.008336, 0.011970, 0.017170, 0.086980", \
            "0.025140, 0.028622, 0.035186, 0.044099, 0.141159", \
            "0.046446, 0.047702, 0.053516, 0.064252, 0.179451", \
            "0.090922, 0.089928, 0.091895, 0.103197, 0.242872", \
            "0.447493, 0.444138, 0.440746, 0.435821, 0.578747"
          );
        }
        rise_transition (delay_template_5x5) {
          index_1 (
            "0.000500, 0.050000, 0.100000, 0.200000, 1.000000"
          );
          index_2 (
            "0.010000, 0.050000, 0.100000, 0.200000, 1.500000"
          );
          values (
            "0.007775, 0.028100, 0.055227, 0.108927, 0.869985", \
            "0.039255, 0.049723, 0.072334, 0.124573, 0.866617", \
            "0.075493, 0.083261, 0.096610, 0.140261, 0.863292", \
            "0.146557, 0.148054, 0.158526, 0.188166, 0.862332", \
            "0.712012, 0.711126, 0.711929, 0.712879, 1.131106"
          );
        }
        fall_transition (delay_template_5x5) {
          index_1 (
            "0.000500, 0.050000, 0.100000, 0.200000, 1.000000"
          );
          index_2 (
            "0.010000, 0.050000, 0.100000, 0.200000, 1.500000"
          );
          values (
            "0.008278, 0.030935, 0.057869, 0.115738, 0.868418", \
            "0.047073, 0.058001, 0.079823, 0.131936, 0.871905", \
            "0.090912, 0.096720, 0.111536, 0.155787, 0.875627", \
            "0.176967, 0.177851, 0.188412, 0.219917, 0.899333", \
            "0.863260, 0.862553, 0.864134, 0.865563, 1.291606"
          );
        }
      }
    }
  }
}