/*
 * 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_mcu9t5v0__clkinv_8) {
    area : 50.803200 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!I" ;
      value : "3.92436e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "I" ;
      value : "4.170078e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "4.170078e-05" ;
    }

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

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

    pin(I) {
      capacitance : 0.03892 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 6 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;
    }

    pin(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 2.496 ;
      max_transition : 6 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "I" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.01822, 0.07867, 0.1941, 0.374, 0.6263, 0.9584, 1.377, 1.887, 2.496");
          values("-0.01205, -0.01014, -0.008471, -0.007885, -0.00772, -0.007629, -0.007607, -0.007542, -0.007541, -0.007495",\
                 "-0.01629, -0.01368, -0.01036, -0.008822, -0.008274, -0.007998, -0.007856, -0.007769, -0.007668, -0.00762",\
                 "-0.02063, -0.01854, -0.01444, -0.01138, -0.009835, -0.009029, -0.00854, -0.008252, -0.008062, -0.00793",\
                 "-0.0197, -0.0191, -0.01684, -0.01388, -0.01175, -0.01034, -0.009511, -0.008958, -0.008659, -0.008368",\
                 "-0.01317, -0.01433, -0.01524, -0.01418, -0.01236, -0.01121, -0.01011, -0.009527, -0.009066, -0.00872",\
                 "-0.0009625, -0.003768, -0.008292, -0.01045, -0.0108, -0.01049, -0.009936, -0.00942, -0.009063, -0.008742",\
                 "0.01693, 0.0124, 0.004195, -0.002113, -0.005556, -0.006858, -0.007664, -0.007869, -0.007884, -0.00793",\
                 "0.04083, 0.03468, 0.02263, 0.01197, 0.004761, 0.0001813, -0.002324, -0.003857, -0.005057, -0.005613",\
                 "0.07082, 0.06322, 0.04731, 0.03201, 0.02017, 0.01226, 0.006459, 0.002808, 0.0004012, -0.001137",\
                 "0.1073, 0.09851, 0.07887, 0.05876, 0.04187, 0.02941, 0.02046, 0.01369, 0.009391, 0.005814");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.01822, 0.07867, 0.1941, 0.374, 0.6263, 0.9584, 1.377, 1.887, 2.496");
          values("0.1172, 0.12, 0.1229, 0.1246, 0.125, 0.1267, 0.1291, 0.1329, 0.1322, 0.1345",\
                 "0.1133, 0.1164, 0.1204, 0.1234, 0.124, 0.1259, 0.1289, 0.1329, 0.1322, 0.1408",\
                 "0.1117, 0.1129, 0.1164, 0.1198, 0.122, 0.1247, 0.1279, 0.1303, 0.1334, 0.1341",\
                 "0.1153, 0.1148, 0.1158, 0.1176, 0.1207, 0.1233, 0.1252, 0.1293, 0.133, 0.1341",\
                 "0.124, 0.1214, 0.119, 0.1185, 0.1189, 0.1216, 0.1242, 0.1281, 0.1312, 0.1319",\
                 "0.1378, 0.1337, 0.1272, 0.1231, 0.1225, 0.1227, 0.1258, 0.1285, 0.1282, 0.1341",\
                 "0.1577, 0.1514, 0.1409, 0.1332, 0.1293, 0.1279, 0.1271, 0.1283, 0.1298, 0.1325",\
                 "0.1841, 0.1757, 0.1608, 0.1488, 0.1396, 0.1368, 0.1333, 0.1315, 0.1354, 0.1359",\
                 "0.2174, 0.2069, 0.187, 0.17, 0.1572, 0.1487, 0.1446, 0.1408, 0.1367, 0.1375",\
                 "0.2579, 0.2455, 0.2204, 0.1976, 0.1795, 0.1651, 0.1596, 0.1519, 0.1464, 0.1452");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : negative_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.01822, 0.07867, 0.1941, 0.374, 0.6263, 0.9584, 1.377, 1.887, 2.496");
          values("0.04489, 0.06417, 0.1289, 0.2512, 0.4408, 0.7067, 1.057, 1.497, 2.038, 2.68",\
                 "0.05587, 0.07544, 0.1411, 0.2634, 0.4532, 0.7197, 1.07, 1.511, 2.051, 2.693",\
                 "0.07801, 0.1095, 0.1849, 0.3078, 0.4982, 0.765, 1.115, 1.557, 2.096, 2.736",\
                 "0.08882, 0.1359, 0.2495, 0.3944, 0.5852, 0.852, 1.202, 1.644, 2.183, 2.826",\
                 "0.08851, 0.1499, 0.3023, 0.4992, 0.7208, 0.9881, 1.339, 1.78, 2.319, 2.959",\
                 "0.07669, 0.1517, 0.3408, 0.5905, 0.8731, 1.179, 1.531, 1.972, 2.509, 3.152",\
                 "0.0514, 0.1411, 0.3644, 0.6654, 1.01, 1.385, 1.781, 2.225, 2.763, 3.403",\
                 "0.0127, 0.1161, 0.3739, 0.7234, 1.13, 1.575, 2.045, 2.541, 3.083, 3.723",\
                 "-0.0425, 0.0758, 0.3674, 0.7647, 1.232, 1.747, 2.294, 2.868, 3.468, 4.116",\
                 "-0.1147, 0.0193, 0.3469, 0.7907, 1.315, 1.898, 2.522, 3.179, 3.863, 4.571");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.01822, 0.07867, 0.1941, 0.374, 0.6263, 0.9584, 1.377, 1.887, 2.496");
          values("0.04687, 0.07223, 0.1565, 0.3152, 0.5621, 0.9079, 1.363, 1.937, 2.636, 3.47",\
                 "0.06063, 0.08605, 0.1716, 0.3307, 0.5774, 0.9239, 1.378, 1.953, 2.651, 3.483",\
                 "0.1029, 0.1378, 0.2262, 0.3861, 0.6334, 0.9794, 1.435, 2.007, 2.71, 3.543",\
                 "0.1547, 0.2063, 0.3291, 0.4942, 0.7421, 1.088, 1.543, 2.118, 2.818, 3.649",\
                 "0.217, 0.2839, 0.449, 0.6599, 0.9121, 1.259, 1.714, 2.288, 2.988, 3.823",\
                 "0.2911, 0.3732, 0.5786, 0.8473, 1.148, 1.498, 1.954, 2.527, 3.225, 4.057",\
                 "0.3782, 0.4757, 0.7191, 1.045, 1.415, 1.812, 2.27, 2.842, 3.542, 4.376",\
                 "0.4791, 0.5917, 0.8735, 1.253, 1.692, 2.167, 2.667, 3.242, 3.94, 4.771",\
                 "0.5952, 0.7234, 1.043, 1.475, 1.981, 2.533, 3.116, 3.729, 4.429, 5.263",\
                 "0.726, 0.8705, 1.229, 1.711, 2.282, 2.91, 3.579, 4.277, 5.011, 5.844");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.01822, 0.07867, 0.1941, 0.374, 0.6263, 0.9584, 1.377, 1.887, 2.496");
          values("0.03611, 0.0672, 0.1757, 0.3816, 0.7035, 1.157, 1.749, 2.499, 3.412, 4.501",\
                 "0.03669, 0.0667, 0.1751, 0.3827, 0.7037, 1.155, 1.749, 2.498, 3.412, 4.501",\
                 "0.06902, 0.09806, 0.1801, 0.3812, 0.7035, 1.156, 1.752, 2.497, 3.414, 4.503",\
                 "0.1094, 0.1539, 0.256, 0.4051, 0.7036, 1.156, 1.751, 2.502, 3.417, 4.507",\
                 "0.1525, 0.2134, 0.355, 0.5306, 0.756, 1.158, 1.749, 2.501, 3.416, 4.504",\
                 "0.202, 0.2762, 0.4584, 0.6844, 0.9358, 1.249, 1.761, 2.495, 3.412, 4.507",\
                 "0.2578, 0.3446, 0.5642, 0.8462, 1.155, 1.487, 1.898, 2.531, 3.407, 4.501",\
                 "0.3206, 0.4206, 0.6754, 1.012, 1.382, 1.776, 2.195, 2.715, 3.476, 4.507",\
                 "0.392, 0.5056, 0.791, 1.179, 1.617, 2.078, 2.565, 3.075, 3.715, 4.608",\
                 "0.4696, 0.5974, 0.9158, 1.349, 1.854, 2.391, 2.944, 3.527, 4.138, 4.905");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.01822, 0.07867, 0.1941, 0.374, 0.6263, 0.9584, 1.377, 1.887, 2.496");
          values("0.0483, 0.08884, 0.232, 0.5049, 0.9297, 1.528, 2.313, 3.307, 4.512, 5.951",\
                 "0.04867, 0.08912, 0.232, 0.505, 0.9288, 1.528, 2.312, 3.306, 4.509, 5.941",\
                 "0.0808, 0.1118, 0.2321, 0.5047, 0.9288, 1.524, 2.312, 3.297, 4.514, 5.95",\
                 "0.1241, 0.1711, 0.281, 0.5065, 0.9295, 1.526, 2.308, 3.304, 4.515, 5.94",\
                 "0.1702, 0.2346, 0.3864, 0.5806, 0.9352, 1.523, 2.308, 3.302, 4.513, 5.953",\
                 "0.2228, 0.301, 0.4972, 0.7376, 1.03, 1.537, 2.308, 3.3, 4.499, 5.94",\
                 "0.2822, 0.3744, 0.6098, 0.911, 1.24, 1.652, 2.327, 3.298, 4.502, 5.936",\
                 "0.3482, 0.455, 0.724, 1.089, 1.483, 1.904, 2.467, 3.327, 4.503, 5.946",\
                 "0.4226, 0.5424, 0.8474, 1.266, 1.735, 2.225, 2.755, 3.483, 4.543, 5.944",\
                 "0.5066, 0.6394, 0.9788, 1.448, 1.988, 2.557, 3.155, 3.81, 4.729, 5.991");
        }
      }
    }
  }

