/*
 * Copyright 2022 GlobalFoundries PDK Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

  cell(gf180mcu_fd_sc_mcu7t5v0__and3_4) {
    area : 43.904000 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&!A3" ;
      value : "0.0002457054" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&A3" ;
      value : "0.0002460132" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&!A3" ;
      value : "0.0002461914" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&A3" ;
      value : "0.0002484108" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&!A3" ;
      value : "0.0002534328" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&A3" ;
      value : "0.0002551662" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&!A3" ;
      value : "0.0002621808" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&A3" ;
      value : "0.000263493" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "0.000263493" ;
    }

    pg_pin(VDD) {
      voltage_name : VDD ;
      pg_type : primary_power ;
    }

    pg_pin(VSS) {
      voltage_name : VSS ;
      pg_type : primary_ground ;
    }

    pin(A1) {
      capacitance : 0.008186 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A2&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.007785, 0.007772, 0.007748, 0.007763, 0.00776, 0.00775, 0.007754, \
                  0.007753, 0.007314, 0.005549");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.005582, -0.005571, -0.00558, -0.005608, -0.005632, -0.005658, \
                  -0.005713, -0.005817, -0.005945, -0.005525");
        }
      }

      internal_power() {
        when : "!A2&A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.00778, 0.007774, 0.007751, 0.00776, 0.007754, 0.007762, 0.007754, \
                  0.007754, 0.007314, 0.005544");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.005544, -0.005541, -0.005541, -0.005573, -0.005595, -0.005624, \
                  -0.005675, -0.005781, -0.005919, -0.005498");
        }
      }

      internal_power() {
        when : "A2&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.00778, 0.007784, 0.007754, 0.007755, 0.007756, 0.007755, 0.007755, \
                  0.007752, 0.007312, 0.005544");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.0006462, -0.0006389, -0.000658, -0.0007055, -0.0007493, -0.0008214, \
                  -0.0009375, -0.001173, -0.001975, -0.00296");
        }
      }
    }

    pin(A2) {
      capacitance : 0.008662 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.007433, 0.007462, 0.007437, 0.007435, 0.007419, 0.007389, 0.007334, \
                  0.007229, 0.006552, 0.004592");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006783, -0.00677, -0.006771, -0.006788, -0.006781, -0.006778, \
                  -0.006778, -0.006776, -0.006563, -0.005696");
        }
      }

      internal_power() {
        when : "!A1&A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.007456, 0.007002, 0.006789, 0.006782, 0.006774, 0.006775, 0.006774, \
                  0.006769, 0.006372, 0.00476");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006767, -0.006764, -0.006769, -0.006782, -0.006781, -0.006781, \
                  -0.006781, -0.006779, -0.006562, -0.005697");
        }
      }

      internal_power() {
        when : "A1&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006917, 0.006919, 0.006905, 0.0069, 0.006885, 0.006867, 0.006834, \
                  0.00679, 0.006306, 0.004637");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.00678, -0.006781, -0.006789, -0.006804, -0.006808, -0.006809, \
                  -0.006818, -0.006822, -0.006604, -0.005737");
        }
      }
    }

    pin(A3) {
      capacitance : 0.009474 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1&!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006807, 0.006808, 0.006793, 0.006797, 0.006798, 0.006802, 0.006795, \
                  0.006796, 0.006395, 0.004786");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006778, -0.006769, -0.006759, -0.006779, -0.00678, -0.006776, \
                  -0.006772, -0.006774, -0.006561, -0.005696");
        }
      }

      internal_power() {
        when : "!A1&A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006809, 0.006798, 0.006792, 0.006796, 0.006791, 0.006796, 0.006792, \
                  0.006791, 0.00639, 0.004779");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006778, -0.006771, -0.006773, -0.006787, -0.006783, -0.006778, \
                  -0.006779, -0.006776, -0.006561, -0.005692");
        }
      }

      internal_power() {
        when : "A1&!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.00681, 0.006806, 0.006792, 0.006796, 0.006799, 0.006795, 0.006795, \
                  0.00679, 0.006389, 0.004778");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006777, -0.006775, -0.006774, -0.006785, -0.006781, -0.006777, \
                  -0.006778, -0.006777, -0.006556, -0.005691");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.7707 ;
      max_transition : 25 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "A1" ;
        when : "A2&A3" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.05718, 0.05761, 0.0585, 0.05922, 0.05963, 0.05987, 0.06001, 0.06009, 0.06014, 0.06013",\
                 "0.05731, 0.05774, 0.05867, 0.0594, 0.05981, 0.06004, 0.06018, 0.06025, 0.0603, 0.0603",\
                 "0.05685, 0.05727, 0.05819, 0.05895, 0.05937, 0.0596, 0.05973, 0.05981, 0.05987, 0.05983",\
                 "0.0561, 0.05647, 0.0573, 0.05805, 0.05855, 0.05886, 0.05901, 0.05911, 0.05916, 0.05914",\
                 "0.05542, 0.05572, 0.05643, 0.05721, 0.05778, 0.05815, 0.05837, 0.05851, 0.05859, 0.05853",\
                 "0.05504, 0.05529, 0.05589, 0.05663, 0.05723, 0.05766, 0.05793, 0.05811, 0.0582, 0.05796",\
                 "0.05491, 0.0551, 0.05563, 0.05628, 0.05689, 0.05738, 0.05769, 0.05787, 0.05782, 0.05703",\
                 "0.055, 0.05513, 0.05556, 0.05618, 0.05679, 0.05725, 0.05759, 0.05754, 0.05653, 0.05466",\
                 "0.05473, 0.05484, 0.05522, 0.05577, 0.0563, 0.05657, 0.05558, 0.0534, 0.05165, 0.05042",\
                 "0.04132, 0.04092, 0.03811, 0.0364, 0.03577, 0.03567, 0.03568, 0.03576, 0.03587, 0.03593");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.0267, 0.02694, 0.02755, 0.02841, 0.02922, 0.03005, 0.03176, 0.05644, 0.1763, 0.409",\
                 "0.02656, 0.0268, 0.0274, 0.02826, 0.02908, 0.02979, 0.03223, 0.05708, 0.18, 0.4129",\
                 "0.02623, 0.02648, 0.0271, 0.02795, 0.02877, 0.02956, 0.03186, 0.06094, 0.1914, 0.4265",\
                 "0.02581, 0.02606, 0.0266, 0.02738, 0.02817, 0.02904, 0.03243, 0.07004, 0.2171, 0.4515",\
                 "0.02542, 0.0256, 0.02607, 0.02675, 0.02746, 0.02834, 0.03433, 0.08829, 0.2602, 0.4846",\
                 "0.02513, 0.02528, 0.02573, 0.02636, 0.02707, 0.02805, 0.0405, 0.1272, 0.3186, 0.5146",\
                 "0.02506, 0.02518, 0.02552, 0.02598, 0.0268, 0.02875, 0.0594, 0.1911, 0.3761, 0.5247",\
                 "0.02512, 0.02524, 0.02553, 0.02596, 0.02658, 0.0365, 0.1143, 0.2695, 0.4015, 0.495",\
                 "0.02547, 0.02553, 0.02582, 0.02624, 0.03033, 0.0843, 0.2019, 0.2947, 0.3571, 0.4001",\
                 "0.02637, 0.02642, 0.02662, 0.03568, 0.09091, 0.14, 0.1696, 0.1881, 0.2003, 0.2083");
        }
      }

      internal_power() {
        related_pin : "A2" ;
        when : "A1&A3" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.06301, 0.06339, 0.06425, 0.065, 0.06545, 0.06573, 0.06589, 0.06599, 0.06605, 0.06606",\
                 "0.06291, 0.0633, 0.06416, 0.06492, 0.06538, 0.06565, 0.06582, 0.06591, 0.06595, 0.06597",\
                 "0.06247, 0.06286, 0.06373, 0.0645, 0.06498, 0.06526, 0.06541, 0.06549, 0.06555, 0.06556",\
                 "0.0619, 0.06226, 0.06304, 0.06381, 0.06434, 0.06465, 0.06483, 0.06493, 0.065, 0.06496",\
                 "0.06133, 0.06162, 0.06232, 0.06306, 0.06364, 0.06402, 0.06426, 0.06441, 0.06449, 0.06442",\
                 "0.06097, 0.0612, 0.06179, 0.06249, 0.06309, 0.06352, 0.06381, 0.064, 0.06407, 0.06385",\
                 "0.06079, 0.06097, 0.06148, 0.06215, 0.06275, 0.06321, 0.06353, 0.06374, 0.06364, 0.0628",\
                 "0.06081, 0.06095, 0.06137, 0.06195, 0.0625, 0.063, 0.06335, 0.06324, 0.06208, 0.06019",\
                 "0.06036, 0.06046, 0.06083, 0.06136, 0.06187, 0.062, 0.06065, 0.05846, 0.05684, 0.05567",\
                 "0.04092, 0.03942, 0.0375, 0.03677, 0.03672, 0.03692, 0.03712, 0.03733, 0.0375, 0.03764");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.027, 0.02727, 0.02786, 0.02868, 0.02952, 0.03018, 0.03239, 0.05776, 0.1812, 0.413",\
                 "0.02688, 0.02713, 0.02775, 0.02857, 0.02939, 0.0301, 0.03265, 0.05814, 0.1833, 0.4167",\
                 "0.02661, 0.02688, 0.02744, 0.02831, 0.02913, 0.02979, 0.0328, 0.06295, 0.1965, 0.4301",\
                 "0.02624, 0.02649, 0.02704, 0.02786, 0.02869, 0.02955, 0.03285, 0.07123, 0.2198, 0.4539",\
                 "0.02588, 0.0261, 0.02663, 0.02736, 0.02814, 0.0291, 0.03473, 0.08902, 0.2612, 0.4853",\
                 "0.02559, 0.02574, 0.02624, 0.02695, 0.02762, 0.02867, 0.0409, 0.1268, 0.3179, 0.5146",\
                 "0.02541, 0.02554, 0.02594, 0.02646, 0.02738, 0.02931, 0.0595, 0.1893, 0.3753, 0.5252",\
                 "0.02533, 0.02545, 0.02579, 0.02625, 0.02691, 0.03651, 0.113, 0.2684, 0.4019, 0.4965",\
                 "0.02546, 0.02557, 0.02585, 0.02628, 0.03009, 0.08327, 0.201, 0.2952, 0.3586, 0.4023",\
                 "0.02614, 0.0262, 0.02652, 0.03491, 0.09018, 0.1403, 0.1705, 0.1894, 0.2017, 0.21");
        }
      }

      internal_power() {
        related_pin : "A3" ;
        when : "A1&A2" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.06792, 0.06828, 0.06911, 0.06987, 0.07037, 0.07066, 0.07084, 0.07095, 0.07101, 0.07103",\
                 "0.06753, 0.06787, 0.0687, 0.06948, 0.06996, 0.07026, 0.07043, 0.07054, 0.07061, 0.07062",\
                 "0.06711, 0.06746, 0.06828, 0.06907, 0.06957, 0.06988, 0.07004, 0.07015, 0.07021, 0.07022",\
                 "0.06672, 0.06706, 0.06782, 0.06859, 0.06911, 0.06945, 0.06963, 0.06975, 0.06982, 0.06982",\
                 "0.06632, 0.06658, 0.06726, 0.06798, 0.06856, 0.06895, 0.0692, 0.06935, 0.06946, 0.0694",\
                 "0.06598, 0.06622, 0.0668, 0.06747, 0.06807, 0.0685, 0.06879, 0.069, 0.06908, 0.06883",\
                 "0.06579, 0.06598, 0.06647, 0.06712, 0.06771, 0.06818, 0.06851, 0.06873, 0.06862, 0.0677",\
                 "0.06572, 0.06588, 0.06629, 0.06685, 0.06741, 0.06791, 0.06824, 0.06807, 0.06681, 0.06492",\
                 "0.06517, 0.06527, 0.06561, 0.06612, 0.0666, 0.0666, 0.0649, 0.06273, 0.06122, 0.06016",\
                 "0.03921, 0.03833, 0.03746, 0.03738, 0.03763, 0.03801, 0.03831, 0.03857, 0.03878, 0.03895");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.03069, 0.03094, 0.03153, 0.03236, 0.03323, 0.03385, 0.03619, 0.06123, 0.1836, 0.4178",\
                 "0.0306, 0.03084, 0.03142, 0.03232, 0.0331, 0.03378, 0.03597, 0.06222, 0.1879, 0.4219",\
                 "0.03031, 0.03054, 0.03114, 0.03199, 0.03284, 0.03354, 0.03645, 0.06665, 0.2002, 0.4353",\
                 "0.02994, 0.03019, 0.03076, 0.03162, 0.03239, 0.03313, 0.0369, 0.07509, 0.2239, 0.4579",\
                 "0.02959, 0.02978, 0.03037, 0.03113, 0.03193, 0.0328, 0.03864, 0.0922, 0.2627, 0.4877",\
                 "0.02929, 0.02948, 0.02999, 0.03078, 0.03142, 0.03264, 0.04387, 0.1261, 0.317, 0.5167",\
                 "0.02911, 0.02929, 0.02964, 0.03029, 0.03126, 0.03289, 0.06044, 0.1857, 0.374, 0.5294",\
                 "0.02899, 0.02914, 0.02957, 0.03011, 0.03051, 0.03865, 0.1081, 0.2641, 0.4055, 0.5063",\
                 "0.02909, 0.0292, 0.02963, 0.02999, 0.03298, 0.07718, 0.1967, 0.3013, 0.3724, 0.4214",\
                 "0.02971, 0.02985, 0.03016, 0.03458, 0.08493, 0.149, 0.1891, 0.2143, 0.2306, 0.2417");
        }
      }

      timing() {
        related_pin : "A1" ;
        timing_sense : positive_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("1.423, 1.523, 1.78, 2.146, 2.627, 3.254, 4.057, 5.063, 6.289, 7.748",\
                 "1.508, 1.609, 1.867, 2.233, 2.714, 3.34, 4.144, 5.149, 6.375, 7.835",\
                 "1.787, 1.887, 2.145, 2.511, 2.993, 3.619, 4.423, 5.428, 6.653, 8.113",\
                 "2.325, 2.425, 2.683, 3.049, 3.53, 4.157, 4.961, 5.966, 7.192, 8.651",\
                 "3.158, 3.26, 3.521, 3.889, 4.373, 5, 5.803, 6.809, 8.036, 9.498",\
                 "4.186, 4.302, 4.586, 4.972, 5.464, 6.095, 6.899, 7.906, 9.131, 10.59",\
                 "5.317, 5.451, 5.768, 6.184, 6.696, 7.339, 8.147, 9.154, 10.38, 11.84",\
                 "6.545, 6.699, 7.058, 7.505, 8.037, 8.694, 9.51, 10.52, 11.75, 13.21",\
                 "7.866, 8.041, 8.442, 8.928, 9.488, 10.16, 10.98, 11.99, 13.22, 14.68",\
                 "9.283, 9.476, 9.922, 10.45, 11.04, 11.73, 12.56, 13.58, 14.81, 16.27");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("2.015, 2.192, 2.671, 3.422, 4.502, 5.988, 7.934, 10.38, 13.37, 16.93",\
                 "2.066, 2.242, 2.722, 3.473, 4.554, 6.039, 7.984, 10.43, 13.41, 16.97",\
                 "2.262, 2.438, 2.917, 3.668, 4.749, 6.235, 8.181, 10.63, 13.61, 17.16",\
                 "2.647, 2.822, 3.301, 4.051, 5.131, 6.617, 8.561, 11.01, 13.99, 17.55",\
                 "3.237, 3.414, 3.895, 4.644, 5.724, 7.21, 9.156, 11.6, 14.59, 18.14",\
                 "3.907, 4.092, 4.587, 5.348, 6.431, 7.917, 9.862, 12.31, 15.3, 18.86",\
                 "4.588, 4.785, 5.295, 6.064, 7.157, 8.649, 10.6, 13.04, 16.03, 19.58",\
                 "5.261, 5.472, 6.004, 6.786, 7.879, 9.373, 11.33, 13.78, 16.76, 20.32",\
                 "5.906, 6.136, 6.701, 7.496, 8.592, 10.08, 12.04, 14.5, 17.48, 21.04",\
                 "6.516, 6.767, 7.369, 8.185, 9.287, 10.78, 12.73, 15.19, 18.18, 21.74");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.375, 0.4614, 0.7168, 1.154, 1.83, 2.811, 4.144, 5.86, 7.96, 10.47",\
                 "0.3752, 0.4606, 0.7152, 1.154, 1.831, 2.815, 4.146, 5.859, 7.956, 10.47",\
                 "0.3752, 0.4618, 0.7148, 1.155, 1.83, 2.814, 4.144, 5.859, 7.963, 10.47",\
                 "0.3754, 0.4616, 0.7164, 1.154, 1.829, 2.812, 4.146, 5.861, 7.954, 10.47",\
                 "0.3926, 0.4766, 0.7272, 1.16, 1.831, 2.813, 4.151, 5.858, 7.956, 10.47",\
                 "0.471, 0.552, 0.7896, 1.205, 1.858, 2.826, 4.152, 5.862, 7.962, 10.45",\
                 "0.568, 0.652, 0.884, 1.29, 1.926, 2.87, 4.172, 5.87, 7.948, 10.46",\
                 "0.672, 0.764, 0.998, 1.386, 2.006, 2.922, 4.208, 5.884, 7.962, 10.46",\
                 "0.782, 0.882, 1.126, 1.502, 2.096, 2.988, 4.25, 5.912, 7.982, 10.47",\
                 "0.896, 1.004, 1.264, 1.634, 2.2, 3.066, 4.302, 5.946, 8.004, 10.49");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.6196, 0.7904, 1.339, 2.386, 4.096, 6.563, 9.821, 13.95, 18.97, 24.98",\
                 "0.62, 0.7906, 1.34, 2.385, 4.091, 6.557, 9.842, 13.95, 19, 24.99",\
                 "0.62, 0.7898, 1.339, 2.387, 4.096, 6.564, 9.821, 13.94, 18.97, 24.96",\
                 "0.6192, 0.79, 1.34, 2.386, 4.095, 6.561, 9.842, 13.96, 18.97, 24.95",\
                 "0.6308, 0.8004, 1.344, 2.387, 4.091, 6.564, 9.84, 13.94, 18.97, 24.96",\
                 "0.6782, 0.844, 1.384, 2.414, 4.103, 6.556, 9.838, 13.97, 18.98, 24.99",\
                 "0.744, 0.904, 1.428, 2.444, 4.138, 6.582, 9.834, 13.97, 18.97, 24.98",\
                 "0.83, 0.984, 1.482, 2.478, 4.154, 6.602, 9.852, 13.95, 18.99, 24.98",\
                 "0.93, 1.082, 1.554, 2.518, 4.168, 6.61, 9.87, 13.98, 19.01, 24.98",\
                 "1.04, 1.198, 1.648, 2.576, 4.186, 6.618, 9.87, 14, 19.01, 25.01");
        }
      }

      timing() {
        related_pin : "A2" ;
        timing_sense : positive_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("1.57, 1.671, 1.931, 2.3, 2.784, 3.413, 4.217, 5.225, 6.452, 7.914",\
                 "1.65, 1.751, 2.011, 2.381, 2.864, 3.493, 4.298, 5.304, 6.532, 7.993",\
                 "1.928, 2.03, 2.291, 2.66, 3.144, 3.773, 4.578, 5.585, 6.812, 8.272",\
                 "2.471, 2.572, 2.832, 3.201, 3.686, 4.315, 5.12, 6.127, 7.354, 8.815",\
                 "3.317, 3.419, 3.68, 4.05, 4.536, 5.164, 5.97, 6.978, 8.204, 9.666",\
                 "4.397, 4.509, 4.789, 5.172, 5.663, 6.294, 7.1, 8.108, 9.334, 10.8",\
                 "5.591, 5.72, 6.033, 6.441, 6.951, 7.592, 8.402, 9.41, 10.64, 12.1",\
                 "6.891, 7.038, 7.386, 7.825, 8.354, 9.008, 9.822, 10.83, 12.06, 13.52",\
                 "8.286, 8.453, 8.841, 9.317, 9.871, 10.54, 11.36, 12.37, 13.6, 15.07",\
                 "9.78, 9.967, 10.4, 10.91, 11.49, 12.18, 13.01, 14.03, 15.26, 16.72");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("2.146, 2.323, 2.802, 3.553, 4.634, 6.119, 8.064, 10.51, 13.51, 17.05",\
                 "2.203, 2.379, 2.859, 3.61, 4.69, 6.176, 8.121, 10.57, 13.55, 17.1",\
                 "2.395, 2.571, 3.051, 3.802, 4.882, 6.368, 8.313, 10.76, 13.75, 17.3",\
                 "2.734, 2.91, 3.39, 4.139, 5.22, 6.706, 8.652, 11.1, 14.09, 17.65",\
                 "3.246, 3.424, 3.905, 4.655, 5.735, 7.221, 9.168, 11.61, 14.6, 18.15",\
                 "3.855, 4.042, 4.538, 5.3, 6.384, 7.87, 9.816, 12.26, 15.26, 18.82",\
                 "4.51, 4.706, 5.22, 5.994, 7.086, 8.577, 10.52, 12.97, 15.96, 19.51",\
                 "5.181, 5.39, 5.926, 6.712, 7.808, 9.301, 11.25, 13.7, 16.69, 20.25",\
                 "5.842, 6.066, 6.628, 7.432, 8.534, 10.03, 11.98, 14.43, 17.42, 20.98",\
                 "6.476, 6.72, 7.316, 8.139, 9.248, 10.74, 12.69, 15.14, 18.14, 21.7");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.3824, 0.4696, 0.7246, 1.163, 1.839, 2.822, 4.157, 5.865, 7.965, 10.47",\
                 "0.3826, 0.4696, 0.7232, 1.162, 1.839, 2.822, 4.152, 5.866, 7.962, 10.48",\
                 "0.3828, 0.4696, 0.723, 1.165, 1.838, 2.82, 4.155, 5.869, 7.963, 10.48",\
                 "0.383, 0.4692, 0.7252, 1.163, 1.838, 2.818, 4.156, 5.869, 7.966, 10.45",\
                 "0.392, 0.4772, 0.7304, 1.165, 1.84, 2.822, 4.155, 5.869, 7.968, 10.46",\
                 "0.4556, 0.5386, 0.7766, 1.195, 1.857, 2.83, 4.16, 5.868, 7.968, 10.48",\
                 "0.548, 0.63, 0.864, 1.276, 1.916, 2.864, 4.174, 5.864, 7.97, 10.46",\
                 "0.644, 0.732, 0.968, 1.362, 1.988, 2.918, 4.204, 5.884, 7.972, 10.46",\
                 "0.746, 0.844, 1.088, 1.468, 2.072, 2.976, 4.242, 5.91, 7.986, 10.47",\
                 "0.856, 0.96, 1.212, 1.588, 2.168, 3.044, 4.29, 5.938, 8.008, 10.49");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.62, 0.7906, 1.338, 2.384, 4.092, 6.555, 9.841, 13.96, 19.04, 24.99",\
                 "0.6192, 0.7906, 1.342, 2.385, 4.092, 6.558, 9.842, 13.95, 19, 24.98",\
                 "0.62, 0.7894, 1.34, 2.383, 4.092, 6.556, 9.842, 13.97, 19.04, 24.95",\
                 "0.6198, 0.7902, 1.339, 2.384, 4.094, 6.563, 9.823, 13.98, 18.98, 24.96",\
                 "0.6306, 0.8018, 1.344, 2.387, 4.096, 6.564, 9.819, 13.95, 18.97, 24.95",\
                 "0.6736, 0.843, 1.381, 2.409, 4.101, 6.562, 9.84, 13.98, 18.98, 24.97",\
                 "0.724, 0.894, 1.428, 2.444, 4.128, 6.576, 9.836, 13.95, 18.96, 24.97",\
                 "0.79, 0.954, 1.478, 2.478, 4.15, 6.59, 9.842, 13.95, 18.99, 24.99",\
                 "0.868, 1.034, 1.544, 2.524, 4.17, 6.6, 9.86, 13.96, 18.99, 24.99",\
                 "0.96, 1.13, 1.624, 2.574, 4.192, 6.612, 9.858, 13.98, 18.99, 25");
        }
      }

      timing() {
        related_pin : "A3" ;
        timing_sense : positive_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("1.683, 1.786, 2.049, 2.422, 2.909, 3.54, 4.347, 5.356, 6.583, 8.045",\
                 "1.754, 1.857, 2.12, 2.493, 2.98, 3.611, 4.418, 5.427, 6.654, 8.116",\
                 "2.034, 2.137, 2.401, 2.773, 3.26, 3.891, 4.699, 5.708, 6.935, 8.398",\
                 "2.581, 2.684, 2.947, 3.319, 3.806, 4.438, 5.245, 6.254, 7.482, 8.946",\
                 "3.436, 3.539, 3.803, 4.175, 4.663, 5.295, 6.103, 7.111, 8.339, 9.802",\
                 "4.554, 4.666, 4.943, 5.323, 5.816, 6.449, 7.257, 8.265, 9.494, 10.96",\
                 "5.801, 5.929, 6.234, 6.641, 7.149, 7.79, 8.6, 9.61, 10.84, 12.3",\
                 "7.155, 7.3, 7.641, 8.075, 8.602, 9.255, 10.07, 11.08, 12.31, 13.77",\
                 "8.611, 8.775, 9.154, 9.622, 10.17, 10.84, 11.66, 12.67, 13.9, 15.37",\
                 "10.17, 10.35, 10.77, 11.28, 11.85, 12.53, 13.36, 14.38, 15.61, 17.07");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("2.188, 2.363, 2.843, 3.594, 4.675, 6.16, 8.105, 10.55, 13.55, 17.09",\
                 "2.257, 2.432, 2.912, 3.663, 4.744, 6.229, 8.175, 10.62, 13.61, 17.16",\
                 "2.445, 2.621, 3.101, 3.851, 4.932, 6.418, 8.363, 10.81, 13.8, 17.35",\
                 "2.743, 2.919, 3.398, 4.149, 5.229, 6.715, 8.661, 11.11, 14.09, 17.64",\
                 "3.168, 3.346, 3.828, 4.578, 5.659, 7.145, 9.091, 11.54, 14.53, 18.07",\
                 "3.669, 3.854, 4.351, 5.113, 6.196, 7.682, 9.629, 12.08, 15.06, 18.62",\
                 "4.214, 4.41, 4.923, 5.698, 6.79, 8.279, 10.22, 12.67, 15.66, 19.21",\
                 "4.791, 4.997, 5.53, 6.32, 7.417, 8.909, 10.86, 13.31, 16.29, 19.85",\
                 "5.383, 5.601, 6.157, 6.963, 8.068, 9.561, 11.51, 13.96, 16.95, 20.5",\
                 "5.966, 6.199, 6.78, 7.608, 8.722, 10.22, 12.17, 14.62, 17.61, 21.16");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.3914, 0.4782, 0.7326, 1.173, 1.849, 2.832, 4.161, 5.876, 7.974, 10.48",\
                 "0.3916, 0.4784, 0.7324, 1.174, 1.849, 2.831, 4.161, 5.876, 7.974, 10.48",\
                 "0.3914, 0.4786, 0.7324, 1.175, 1.849, 2.83, 4.162, 5.876, 7.974, 10.47",\
                 "0.3912, 0.4774, 0.7328, 1.174, 1.848, 2.831, 4.167, 5.872, 7.968, 10.47",\
                 "0.3958, 0.482, 0.7376, 1.174, 1.85, 2.828, 4.165, 5.872, 7.976, 10.48",\
                 "0.4482, 0.5306, 0.7708, 1.196, 1.859, 2.833, 4.166, 5.874, 7.974, 10.47",\
                 "0.534, 0.616, 0.854, 1.266, 1.912, 2.864, 4.176, 5.88, 7.974, 10.47",\
                 "0.626, 0.714, 0.95, 1.35, 1.982, 2.912, 4.208, 5.888, 7.968, 10.46",\
                 "0.728, 0.82, 1.062, 1.446, 2.06, 2.972, 4.244, 5.918, 7.986, 10.48",\
                 "0.826, 0.928, 1.182, 1.56, 2.146, 3.034, 4.284, 5.942, 8.004, 10.49");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006313, 0.02496, 0.06058, 0.1161, 0.1939, 0.2964, 0.4254, 0.583, 0.7707");
          values("0.62, 0.7902, 1.34, 2.385, 4.096, 6.558, 9.839, 13.94, 18.98, 24.99",\
                 "0.6194, 0.7904, 1.341, 2.386, 4.093, 6.554, 9.823, 13.95, 18.97, 24.99",\
                 "0.6198, 0.7904, 1.34, 2.385, 4.091, 6.558, 9.842, 13.95, 18.99, 24.97",\
                 "0.6188, 0.7898, 1.34, 2.386, 4.09, 6.557, 9.836, 13.96, 18.98, 24.96",\
                 "0.6298, 0.7994, 1.345, 2.388, 4.097, 6.564, 9.838, 13.94, 18.97, 24.95",\
                 "0.6676, 0.8394, 1.38, 2.407, 4.1, 6.562, 9.822, 13.96, 18.96, 24.98",\
                 "0.7106, 0.882, 1.428, 2.446, 4.12, 6.57, 9.836, 13.97, 18.96, 24.97",\
                 "0.756, 0.932, 1.476, 2.482, 4.148, 6.58, 9.828, 13.94, 18.98, 25.01",\
                 "0.812, 0.99, 1.528, 2.524, 4.166, 6.598, 9.852, 13.95, 18.99, 24.98",\
                 "0.886, 1.066, 1.596, 2.576, 4.194, 6.612, 9.848, 13.97, 18.98, 24.99");
        }
      }
    }
  }

