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 (INVX1) {
    area: 109728.0;
    cell_leakage_power: 0.1173;
    pin (A) {
      capacitance: 0.007547126607243736;
      direction: input;
      fall_capacitance: 0.008904762554228705;
      rise_capacitance: 0.0061894906602587675;
    }
    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.005045, 0.004666, 0.003429, -0.000859, -0.065505", \
            "0.044989, 0.042725, 0.047543, 0.051692, 0.040256", \
            "0.088909, 0.082182, 0.082392, 0.089237, 0.111465", \
            "0.176860, 0.166922, 0.160768, 0.159204, 0.223911", \
            "0.881893, 0.869050, 0.853857, 0.827782, 0.824694"
          );
        }
        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.005563, 0.008612, 0.012339, 0.017358, 0.087849", \
            "0.046446, 0.047702, 0.053516, 0.064252, 0.179451", \
            "0.090922, 0.089928, 0.091895, 0.103197, 0.242872", \
            "0.179772, 0.177219, 0.176091, 0.179128, 0.343479", \
            "0.895275, 0.891758, 0.887322, 0.880070, 0.928854"
          );
        }
        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.008037, 0.028704, 0.054668, 0.109521, 0.869966", \
            "0.076055, 0.081921, 0.097573, 0.140257, 0.863906", \
            "0.147843, 0.149496, 0.158979, 0.188238, 0.862306", \
            "0.288563, 0.287255, 0.290237, 0.307382, 0.902900", \
            "1.419778, 1.420153, 1.419732, 1.419717, 1.673889"
          );
        }
        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.008767, 0.031084, 0.058052, 0.115960, 0.868417", \
            "0.090912, 0.096720, 0.111536, 0.155787, 0.875627", \
            "0.176967, 0.177851, 0.188412, 0.219917, 0.899333", \
            "0.347603, 0.347624, 0.351003, 0.368838, 0.971602", \
            "1.725267, 1.725008, 1.725609, 1.725893, 1.975591"
          );
        }
      }
    }
  }
}