/*
 * 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__clkinv_8) {
    area : 39.513600 ;

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "2.71917e-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.02556 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 21 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;
    }

    pin(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 1.327 ;
      max_transition : 21 ;
      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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.01015, 0.04228, 0.1036, 0.1992, 0.3334, 0.5099, 0.7322, 1.004, 1.327");
          values("-0.002287, -0.002182, -0.002146, -0.00211, -0.002064, -0.002064, -0.002082, -0.002083, -0.002083, -0.002089",\
                 "-0.003407, -0.002998, -0.002517, -0.00229, -0.002187, -0.00215, -0.002122, -0.002106, -0.002092, -0.002077",\
                 "-0.005407, -0.004678, -0.003585, -0.002907, -0.00255, -0.002412, -0.002281, -0.002241, -0.00218, -0.002156",\
                 "-0.006729, -0.006103, -0.004858, -0.003815, -0.003192, -0.002807, -0.002618, -0.002463, -0.002364, -0.002335",\
                 "-0.007569, -0.007022, -0.005914, -0.004755, -0.003895, -0.003336, -0.002968, -0.002736, -0.002597, -0.002494",\
                 "-0.00801, -0.007616, -0.006679, -0.005602, -0.004631, -0.003939, -0.003434, -0.003104, -0.00286, -0.002797",\
                 "-0.008352, -0.007996, -0.007189, -0.006231, -0.005325, -0.004546, -0.00396, -0.003537, -0.003268, -0.003343",\
                 "-0.008582, -0.008275, -0.007593, -0.006776, -0.005899, -0.005148, -0.004486, -0.004019, -0.003923, -0.00484",\
                 "-0.008756, -0.008524, -0.007893, -0.007152, -0.006365, -0.005638, -0.005037, -0.005207, -0.006809, -0.008576",\
                 "-0.007122, -0.00692, -0.006376, -0.005687, -0.00503, -0.005563, -0.008077, -0.009872, -0.01099, -0.01173");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.01015, 0.04228, 0.1036, 0.1992, 0.3334, 0.5099, 0.7322, 1.004, 1.327");
          values("0.05587, 0.05609, 0.05631, 0.05648, 0.05679, 0.05736, 0.0579, 0.06015, 0.09646, 0.349",\
                 "0.05396, 0.05474, 0.05567, 0.05613, 0.05661, 0.05708, 0.05722, 0.05844, 0.09883, 0.3589",\
                 "0.05229, 0.05281, 0.05405, 0.05512, 0.05566, 0.05647, 0.05696, 0.06011, 0.1065, 0.3937",\
                 "0.05158, 0.05198, 0.05297, 0.05409, 0.05496, 0.05585, 0.0565, 0.06076, 0.1262, 0.4601",\
                 "0.05125, 0.05148, 0.05229, 0.05334, 0.05394, 0.05493, 0.05584, 0.06424, 0.174, 0.5764",\
                 "0.05105, 0.05131, 0.05183, 0.05274, 0.05382, 0.05431, 0.0558, 0.07849, 0.2816, 0.7296",\
                 "0.05091, 0.05116, 0.05156, 0.05219, 0.05295, 0.05439, 0.05842, 0.1423, 0.4889, 0.8679",\
                 "0.05078, 0.05101, 0.05151, 0.05203, 0.05303, 0.05472, 0.09843, 0.3635, 0.675, 0.9028",\
                 "0.05068, 0.05087, 0.05143, 0.0519, 0.05389, 0.1262, 0.3468, 0.5148, 0.6273, 0.705",\
                 "0.0463, 0.04648, 0.04712, 0.09253, 0.1575, 0.1944, 0.2156, 0.2291, 0.2374, 0.243");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.01015, 0.04228, 0.1036, 0.1992, 0.3334, 0.5099, 0.7322, 1.004, 1.327");
          values("0.1408, 0.1871, 0.3487, 0.6551, 1.135, 1.806, 2.687, 3.803, 5.158, 6.772",\
                 "0.2035, 0.2512, 0.414, 0.7214, 1.2, 1.872, 2.756, 3.869, 5.229, 6.848",\
                 "0.406, 0.4717, 0.6451, 0.9547, 1.434, 2.105, 2.991, 4.104, 5.461, 7.083",\
                 "0.6688, 0.7786, 1.05, 1.4, 1.879, 2.552, 3.433, 4.55, 5.911, 7.527",\
                 "0.9751, 1.137, 1.531, 2.026, 2.575, 3.25, 4.131, 5.244, 6.604, 8.226",\
                 "1.32, 1.54, 2.072, 2.733, 3.458, 4.223, 5.114, 6.228, 7.588, 9.204",\
                 "1.696, 1.986, 2.67, 3.515, 4.432, 5.394, 6.391, 7.518, 8.877, 10.5",\
                 "2.099, 2.466, 3.319, 4.364, 5.486, 6.663, 7.876, 9.124, 10.5, 12.12",\
                 "2.524, 2.972, 4.019, 5.278, 6.626, 8.019, 9.469, 10.95, 12.46, 14.11",\
                 "2.967, 3.507, 4.76, 6.252, 7.841, 9.481, 11.17, 12.89, 14.64, 16.44");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.01015, 0.04228, 0.1036, 0.1992, 0.3334, 0.5099, 0.7322, 1.004, 1.327");
          values("0.2272, 0.3143, 0.6161, 1.19, 2.083, 3.334, 4.986, 7.061, 9.582, 12.62",\
                 "0.2965, 0.3865, 0.6931, 1.268, 2.162, 3.416, 5.063, 7.145, 9.678, 12.68",\
                 "0.5719, 0.6619, 0.9702, 1.548, 2.446, 3.698, 5.352, 7.424, 9.967, 12.98",\
                 "1.059, 1.184, 1.511, 2.091, 2.986, 4.244, 5.895, 7.976, 10.51, 13.53",\
                 "1.702, 1.888, 2.335, 2.94, 3.837, 5.097, 6.743, 8.821, 11.35, 14.38",\
                 "2.502, 2.759, 3.372, 4.116, 5.033, 6.29, 7.943, 10.02, 12.56, 15.59",\
                 "3.464, 3.804, 4.599, 5.56, 6.595, 7.866, 9.514, 11.59, 14.14, 17.16",\
                 "4.591, 5.023, 6.024, 7.221, 8.489, 9.845, 11.5, 13.58, 16.12, 19.13",\
                 "5.893, 6.424, 7.651, 9.105, 10.64, 12.21, 13.93, 16.01, 18.54, 21.56",\
                 "7.36, 8.007, 9.477, 11.21, 13.03, 14.88, 16.77, 18.9, 21.44, 24.47");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.01015, 0.04228, 0.1036, 0.1992, 0.3334, 0.5099, 0.7322, 1.004, 1.327");
          values("0.1404, 0.2175, 0.4885, 1.003, 1.813, 2.945, 4.422, 6.296, 8.574, 11.3",\
                 "0.1405, 0.2181, 0.4877, 1.004, 1.808, 2.936, 4.421, 6.291, 8.586, 11.34",\
                 "0.2172, 0.2723, 0.4932, 1.005, 1.813, 2.937, 4.426, 6.296, 8.613, 11.33",\
                 "0.3752, 0.4616, 0.6806, 1.048, 1.811, 2.947, 4.437, 6.29, 8.589, 11.3",\
                 "0.5696, 0.6906, 0.9902, 1.381, 1.931, 2.952, 4.43, 6.309, 8.602, 11.31",\
                 "0.7994, 0.9562, 1.345, 1.848, 2.413, 3.178, 4.464, 6.299, 8.589, 11.33",\
                 "1.071, 1.261, 1.742, 2.369, 3.064, 3.813, 4.812, 6.392, 8.596, 11.31",\
                 "1.378, 1.615, 2.187, 2.936, 3.764, 4.66, 5.612, 6.882, 8.77, 11.35",\
                 "1.728, 2.008, 2.684, 3.55, 4.526, 5.574, 6.678, 7.846, 9.4, 11.61",\
                 "2.128, 2.438, 3.228, 4.216, 5.346, 6.546, 7.816, 9.16, 10.54, 12.43");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.01015, 0.04228, 0.1036, 0.1992, 0.3334, 0.5099, 0.7322, 1.004, 1.327");
          values("0.2599, 0.4029, 0.905, 1.862, 3.356, 5.454, 8.203, 11.7, 15.94, 20.96",\
                 "0.2597, 0.4037, 0.9049, 1.864, 3.359, 5.459, 8.216, 11.67, 15.95, 21",\
                 "0.273, 0.4053, 0.9062, 1.864, 3.355, 5.456, 8.201, 11.69, 15.91, 21",\
                 "0.431, 0.5236, 0.919, 1.868, 3.358, 5.451, 8.209, 11.7, 15.91, 20.95",\
                 "0.652, 0.784, 1.115, 1.891, 3.357, 5.464, 8.214, 11.69, 15.93, 20.99",\
                 "0.9142, 1.084, 1.508, 2.117, 3.395, 5.455, 8.215, 11.68, 15.91, 21",\
                 "1.21, 1.432, 1.958, 2.622, 3.618, 5.504, 8.21, 11.69, 15.96, 20.98",\
                 "1.55, 1.82, 2.462, 3.266, 4.198, 5.71, 8.256, 11.69, 15.93, 20.99",\
                 "1.94, 2.248, 3.012, 3.968, 5.016, 6.308, 8.462, 11.73, 15.92, 20.98",\
                 "2.378, 2.726, 3.61, 4.728, 5.942, 7.218, 9.052, 11.95, 16.02, 20.99");
        }
      }
    }
  }

