/*
 * 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_16) {
    area : 74.636800 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.05561 ;
      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 ;
    }

    pin(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 3.076 ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.02223, 0.09673, 0.239, 0.4607, 0.7717, 1.181, 1.697, 2.326, 3.076");
          values("-0.002448, -0.002187, -0.002008, -0.001913, -0.001876, -0.001852, -0.00184, -0.00183, -0.00192, -0.002456",\
                 "-0.005897, -0.004608, -0.003099, -0.002471, -0.002168, -0.002041, -0.001976, -0.001922, -0.002004, -0.002553",\
                 "-0.01113, -0.009215, -0.006108, -0.004155, -0.003174, -0.002667, -0.00238, -0.002216, -0.002262, -0.002804",\
                 "-0.01412, -0.01271, -0.009441, -0.006534, -0.00479, -0.003789, -0.003169, -0.002811, -0.002709, -0.00339",\
                 "-0.0151, -0.01434, -0.01191, -0.008965, -0.006682, -0.005168, -0.004225, -0.003601, -0.003467, -0.004418",\
                 "-0.01489, -0.01454, -0.01311, -0.01077, -0.008407, -0.006617, -0.00532, -0.004545, -0.00454, -0.006153",\
                 "-0.0136, -0.01364, -0.01315, -0.01167, -0.009704, -0.007859, -0.006456, -0.00571, -0.006546, -0.009392",\
                 "-0.01127, -0.0117, -0.01213, -0.01164, -0.01032, -0.008788, -0.007646, -0.00829, -0.01139, -0.01514",\
                 "-0.006746, -0.007549, -0.008816, -0.009349, -0.008887, -0.008663, -0.01171, -0.0163, -0.01972, -0.02213",\
                 "0.002699, 0.001626, -0.0005336, -0.002183, -0.00704, -0.01462, -0.01904, -0.02148, -0.02288, -0.02369");
        }

        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.02223, 0.09673, 0.239, 0.4607, 0.7717, 1.181, 1.697, 2.326, 3.076");
          values("0.07333, 0.07386, 0.07438, 0.07492, 0.07524, 0.07651, 0.07959, 0.1374, 0.4933, 1.361",\
                 "0.06876, 0.07051, 0.07287, 0.07407, 0.07499, 0.07628, 0.08013, 0.1411, 0.5028, 1.382",\
                 "0.06477, 0.0661, 0.06919, 0.07198, 0.07324, 0.07563, 0.08026, 0.1484, 0.5515, 1.451",\
                 "0.06341, 0.06419, 0.06657, 0.06944, 0.07185, 0.07401, 0.08144, 0.1767, 0.6522, 1.582",\
                 "0.06356, 0.06385, 0.06512, 0.06741, 0.07042, 0.07264, 0.08394, 0.2359, 0.8331, 1.768",\
                 "0.06453, 0.06453, 0.06475, 0.06673, 0.06868, 0.07138, 0.1062, 0.3806, 1.121, 1.966",\
                 "0.06641, 0.06599, 0.06572, 0.06612, 0.06842, 0.07425, 0.1887, 0.6994, 1.447, 2.052",\
                 "0.06901, 0.06838, 0.06751, 0.06724, 0.0693, 0.1325, 0.5217, 1.103, 1.542, 1.847",\
                 "0.06928, 0.06824, 0.06668, 0.06741, 0.1759, 0.5195, 0.7718, 0.9306, 1.034, 1.104",\
                 "0.06008, 0.05872, 0.06562, 0.1778, 0.2549, 0.2974, 0.3216, 0.3361, 0.3456, 0.3519");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : negative_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.02223, 0.09673, 0.239, 0.4607, 0.7717, 1.181, 1.697, 2.326, 3.076");
          values("0.1791, 0.2417, 0.4598, 0.874, 1.521, 2.429, 3.62, 5.123, 6.948, 9.147",\
                 "0.2412, 0.306, 0.526, 0.9419, 1.587, 2.492, 3.689, 5.187, 7.029, 9.205",\
                 "0.4309, 0.5242, 0.7634, 1.181, 1.83, 2.738, 3.931, 5.43, 7.268, 9.458",\
                 "0.6244, 0.7789, 1.157, 1.64, 2.289, 3.197, 4.391, 5.897, 7.73, 9.916",\
                 "0.7957, 1.02, 1.564, 2.249, 3.005, 3.917, 5.112, 6.612, 8.442, 10.64",\
                 "0.9324, 1.234, 1.961, 2.87, 3.866, 4.919, 6.124, 7.627, 9.465, 11.64",\
                 "1.022, 1.408, 2.338, 3.487, 4.743, 6.064, 7.439, 8.961, 10.79, 12.98",\
                 "1.052, 1.533, 2.678, 4.089, 5.621, 7.228, 8.894, 10.61, 12.48, 14.66",\
                 "1.021, 1.599, 2.976, 4.666, 6.492, 8.398, 10.37, 12.4, 14.48, 16.72",\
                 "0.923, 1.597, 3.221, 5.207, 7.34, 9.568, 11.87, 14.22, 16.63, 19.1");
        }

        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.02223, 0.09673, 0.239, 0.4607, 0.7717, 1.181, 1.697, 2.326, 3.076");
          values("0.2472, 0.3496, 0.7041, 1.379, 2.43, 3.904, 5.856, 8.288, 11.27, 14.85",\
                 "0.3144, 0.4208, 0.7814, 1.459, 2.511, 3.986, 5.926, 8.371, 11.35, 14.95",\
                 "0.5839, 0.6967, 1.06, 1.742, 2.8, 4.274, 6.216, 8.675, 11.64, 15.2",\
                 "0.9812, 1.164, 1.604, 2.289, 3.346, 4.826, 6.766, 9.21, 12.2, 15.75",\
                 "1.453, 1.719, 2.355, 3.145, 4.207, 5.685, 7.636, 10.08, 13.07, 16.65",\
                 "1.995, 2.354, 3.209, 4.256, 5.414, 6.895, 8.84, 11.29, 14.27, 17.85",\
                 "2.607, 3.066, 4.159, 5.495, 6.933, 8.49, 10.44, 12.89, 15.87, 19.43",\
                 "3.29, 3.856, 5.203, 6.848, 8.609, 10.45, 12.45, 14.9, 17.88, 21.44",\
                 "4.043, 4.72, 6.334, 8.311, 10.42, 12.62, 14.86, 17.35, 20.34, 23.89",\
                 "4.868, 5.662, 7.559, 9.882, 12.36, 14.93, 17.56, 20.24, 23.27, 26.83");
        }

        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.02223, 0.09673, 0.239, 0.4607, 0.7717, 1.181, 1.697, 2.326, 3.076");
          values("0.1829, 0.2884, 0.6613, 1.375, 2.485, 4.043, 6.104, 8.686, 11.85, 15.61",\
                 "0.1815, 0.2876, 0.6621, 1.378, 2.487, 4.048, 6.094, 8.69, 11.83, 15.59",\
                 "0.2923, 0.374, 0.6702, 1.373, 2.491, 4.054, 6.093, 8.674, 11.84, 15.6",\
                 "0.4998, 0.625, 0.9394, 1.444, 2.483, 4.049, 6.108, 8.681, 11.84, 15.59",\
                 "0.7516, 0.9238, 1.352, 1.912, 2.671, 4.055, 6.096, 8.69, 11.85, 15.61",\
                 "1.042, 1.269, 1.824, 2.534, 3.352, 4.397, 6.15, 8.679, 11.85, 15.59",\
                 "1.373, 1.656, 2.342, 3.218, 4.22, 5.3, 6.672, 8.816, 11.83, 15.61",\
                 "1.734, 2.09, 2.91, 3.974, 5.152, 6.434, 7.806, 9.538, 12.11, 15.6",\
                 "2.114, 2.554, 3.54, 4.778, 6.158, 7.648, 9.238, 10.92, 13.04, 16.05",\
                 "2.52, 3.046, 4.216, 5.648, 7.228, 8.936, 10.75, 12.65, 14.67, 17.21");
        }

        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.02223, 0.09673, 0.239, 0.4607, 0.7717, 1.181, 1.697, 2.326, 3.076");
          values("0.2917, 0.461, 1.056, 2.195, 3.966, 6.449, 9.728, 13.83, 18.87, 24.89",\
                 "0.2911, 0.4614, 1.058, 2.194, 3.964, 6.457, 9.722, 13.86, 18.87, 24.87",\
                 "0.3523, 0.4804, 1.057, 2.198, 3.969, 6.451, 9.716, 13.86, 18.86, 24.86",\
                 "0.5954, 0.7302, 1.131, 2.198, 3.975, 6.455, 9.735, 13.85, 18.86, 24.86",\
                 "0.884, 1.073, 1.539, 2.318, 3.978, 6.461, 9.736, 13.85, 18.89, 24.87",\
                 "1.212, 1.464, 2.072, 2.857, 4.127, 6.472, 9.754, 13.85, 18.89, 24.9",\
                 "1.577, 1.895, 2.67, 3.634, 4.758, 6.648, 9.762, 13.85, 18.88, 24.89",\
                 "1.97, 2.36, 3.306, 4.476, 5.786, 7.36, 9.95, 13.88, 18.9, 24.87",\
                 "2.392, 2.876, 4.002, 5.386, 6.922, 8.566, 10.71, 14.11, 18.96, 24.91",\
                 "2.836, 3.41, 4.744, 6.352, 8.122, 10.02, 12.04, 14.9, 19.17, 24.98");
        }
      }
    }
  }

