/*
 * 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 : "0.0001297296" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "I" ;
      value : "0.0001383264" ;
    }

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

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

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

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

    pin(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 3.494 ;
      max_transition : 4.4 ;
      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.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.02511, 0.1097, 0.2714, 0.5232, 0.8765, 1.341, 1.927, 2.642, 3.494");
          values("-0.0717, -0.0603, -0.04922, -0.04462, -0.04293, -0.04218, -0.04159, -0.04131, -0.04122, -0.04099",\
                 "-0.07658, -0.0681, -0.05516, -0.04855, -0.04496, -0.04369, -0.04284, -0.04213, -0.04174, -0.04175",\
                 "-0.03196, -0.03949, -0.04371, -0.04348, -0.04312, -0.04193, -0.04207, -0.04181, -0.04161, -0.04162",\
                 "0.1072, 0.08014, 0.03641, 0.007756, -0.009105, -0.01927, -0.02579, -0.02984, -0.03264, -0.03452",\
                 "0.3494, 0.3048, 0.2175, 0.1425, 0.0895, 0.05346, 0.02889, 0.01156, -0.0003636, -0.008864",\
                 "0.7006, 0.6439, 0.514, 0.3846, 0.282, 0.2044, 0.1472, 0.1058, 0.07471, 0.05226",\
                 "1.17, 1.102, 0.9384, 0.7519, 0.5883, 0.4572, 0.3554, 0.2763, 0.2156, 0.1684",\
                 "1.766, 1.689, 1.496, 1.255, 1.027, 0.8323, 0.6748, 0.5462, 0.4438, 0.3615",\
                 "2.497, 2.41, 2.192, 1.904, 1.611, 1.348, 1.122, 0.9341, 0.779, 0.6506",\
                 "3.368, 3.276, 3.034, 2.706, 2.348, 2.014, 1.713, 1.456, 1.239, 1.055");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.02511, 0.1097, 0.2714, 0.5232, 0.8765, 1.341, 1.927, 2.642, 3.494");
          values("0.4063, 0.4172, 0.4268, 0.4373, 0.4356, 0.4428, 0.4541, 0.4639, 0.4818, 0.4955",\
                 "0.4128, 0.416, 0.4248, 0.4337, 0.4352, 0.4482, 0.452, 0.4614, 0.485, 0.4883",\
                 "0.483, 0.4673, 0.4503, 0.4438, 0.4428, 0.4478, 0.4599, 0.4628, 0.4843, 0.4847",\
                 "0.6467, 0.6115, 0.555, 0.5129, 0.4888, 0.4741, 0.4754, 0.4772, 0.4994, 0.5135",\
                 "0.9153, 0.8666, 0.7631, 0.681, 0.6145, 0.5699, 0.5474, 0.5384, 0.5264, 0.5279",\
                 "1.299, 1.241, 1.101, 0.9525, 0.8449, 0.7535, 0.6903, 0.6475, 0.6229, 0.5999",\
                 "1.807, 1.74, 1.568, 1.365, 1.191, 1.057, 0.9391, 0.8459, 0.787, 0.7475",\
                 "2.451, 2.376, 2.182, 1.925, 1.678, 1.48, 1.315, 1.171, 1.051, 0.9743",\
                 "3.239, 3.157, 2.938, 2.642, 2.33, 2.05, 1.827, 1.623, 1.456, 1.316",\
                 "4.18, 4.092, 3.855, 3.523, 3.148, 2.793, 2.484, 2.24, 1.993, 1.802");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.02511, 0.1097, 0.2714, 0.5232, 0.8765, 1.341, 1.927, 2.642, 3.494");
          values("0.02866, 0.0457, 0.1027, 0.2099, 0.3765, 0.6106, 0.9181, 1.306, 1.777, 2.341",\
                 "0.03375, 0.05143, 0.1087, 0.216, 0.3832, 0.6169, 0.9245, 1.31, 1.785, 2.348",\
                 "0.04112, 0.06695, 0.1325, 0.2394, 0.4058, 0.639, 0.9472, 1.334, 1.807, 2.369",\
                 "0.04609, 0.08113, 0.1667, 0.2876, 0.4525, 0.6847, 0.9909, 1.379, 1.85, 2.415",\
                 "0.04637, 0.09138, 0.1979, 0.3457, 0.5292, 0.7595, 1.064, 1.45, 1.921, 2.482",\
                 "0.04129, 0.09634, 0.2252, 0.3993, 0.6153, 0.8683, 1.171, 1.553, 2.023, 2.582",\
                 "0.0302, 0.095, 0.2476, 0.4501, 0.6957, 0.986, 1.315, 1.695, 2.161, 2.72",\
                 "0.0127, 0.0873, 0.2628, 0.4948, 0.7725, 1.096, 1.467, 1.876, 2.341, 2.896",\
                 "-0.012, 0.0727, 0.271, 0.5333, 0.8447, 1.202, 1.609, 2.066, 2.562, 3.117",\
                 "-0.0443, 0.05, 0.2711, 0.5645, 0.9098, 1.305, 1.748, 2.245, 2.791, 3.381");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.02511, 0.1097, 0.2714, 0.5232, 0.8765, 1.341, 1.927, 2.642, 3.494");
          values("0.02419, 0.04204, 0.102, 0.2149, 0.3896, 0.6362, 0.9596, 1.367, 1.865, 2.456",\
                 "0.03176, 0.04997, 0.1097, 0.2226, 0.3977, 0.6433, 0.9664, 1.376, 1.871, 2.465",\
                 "0.04961, 0.07536, 0.1404, 0.2523, 0.4268, 0.6719, 0.9958, 1.403, 1.9, 2.494",\
                 "0.07304, 0.1086, 0.1929, 0.313, 0.4856, 0.7296, 1.052, 1.458, 1.955, 2.547",\
                 "0.1011, 0.147, 0.254, 0.3995, 0.5818, 0.8223, 1.142, 1.548, 2.044, 2.636",\
                 "0.1338, 0.1905, 0.3221, 0.4949, 0.7075, 0.9588, 1.275, 1.677, 2.17, 2.759",\
                 "0.1715, 0.2396, 0.3952, 0.5988, 0.8419, 1.128, 1.455, 1.853, 2.343, 2.929",\
                 "0.214, 0.2935, 0.4746, 0.7107, 0.9876, 1.306, 1.672, 2.08, 2.564, 3.146",\
                 "0.2622, 0.3533, 0.5603, 0.8288, 1.141, 1.496, 1.898, 2.348, 2.844, 3.421",\
                 "0.3161, 0.4187, 0.6524, 0.9536, 1.304, 1.698, 2.136, 2.626, 3.165, 3.753");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.02511, 0.1097, 0.2714, 0.5232, 0.8765, 1.341, 1.927, 2.642, 3.494");
          values("0.02121, 0.04787, 0.1409, 0.3178, 0.5938, 0.9802, 1.493, 2.135, 2.916, 3.857",\
                 "0.02586, 0.04806, 0.1411, 0.318, 0.5965, 0.9802, 1.49, 2.133, 2.916, 3.848",\
                 "0.04312, 0.0713, 0.1469, 0.319, 0.5961, 0.9862, 1.49, 2.131, 2.914, 3.85",\
                 "0.07042, 0.1063, 0.1972, 0.337, 0.5953, 0.9843, 1.493, 2.131, 2.92, 3.849",\
                 "0.1054, 0.1521, 0.2598, 0.4195, 0.6327, 0.9855, 1.494, 2.142, 2.916, 3.857",\
                 "0.1454, 0.2064, 0.3371, 0.515, 0.7506, 1.047, 1.5, 2.139, 2.923, 3.854",\
                 "0.1938, 0.2672, 0.4244, 0.6266, 0.8876, 1.204, 1.594, 2.158, 2.921, 3.864",\
                 "0.2474, 0.3344, 0.5228, 0.7548, 1.036, 1.385, 1.788, 2.282, 2.961, 3.86",\
                 "0.3068, 0.4074, 0.6276, 0.899, 1.205, 1.577, 2.02, 2.516, 3.12, 3.927",\
                 "0.3758, 0.4918, 0.7432, 1.048, 1.391, 1.789, 2.259, 2.806, 3.399, 4.121");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.02511, 0.1097, 0.2714, 0.5232, 0.8765, 1.341, 1.927, 2.642, 3.494");
          values("0.0256, 0.05482, 0.1567, 0.3527, 0.6561, 1.083, 1.648, 2.357, 3.216, 4.247",\
                 "0.03169, 0.05522, 0.1571, 0.3528, 0.6563, 1.083, 1.648, 2.356, 3.217, 4.255",\
                 "0.04958, 0.07722, 0.161, 0.3523, 0.6565, 1.083, 1.645, 2.356, 3.216, 4.254",\
                 "0.07754, 0.1135, 0.2061, 0.3636, 0.6555, 1.083, 1.645, 2.354, 3.215, 4.245",\
                 "0.1118, 0.1596, 0.2692, 0.4336, 0.6775, 1.083, 1.643, 2.356, 3.215, 4.246",\
                 "0.1531, 0.2142, 0.3469, 0.5274, 0.7732, 1.119, 1.644, 2.353, 3.22, 4.248",\
                 "0.2012, 0.2724, 0.4338, 0.6412, 0.9074, 1.242, 1.701, 2.356, 3.217, 4.242",\
                 "0.2564, 0.34, 0.5296, 0.77, 1.054, 1.415, 1.85, 2.435, 3.227, 4.24",\
                 "0.3174, 0.4158, 0.6338, 0.9094, 1.227, 1.605, 2.065, 2.612, 3.331, 4.263",\
                 "0.3888, 0.4998, 0.7454, 1.06, 1.413, 1.815, 2.303, 2.87, 3.534, 4.398");
        }
      }
    }
  }

