/*
 * 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__clkbuf_3) {
    area : 30.732800 ;

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

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

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

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

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

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

    pin(Z) {
      direction : output ;
      function : "I" ;
      max_capacitance : 0.9318 ;
      max_transition : 8.9 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.007424, 0.02998, 0.07304, 0.1401, 0.2343, 0.3581, 0.5142, 0.7047, 0.9318");
          values("0.06765, 0.06719, 0.06719, 0.0675, 0.06771, 0.06787, 0.06793, 0.068, 0.06803, 0.06808",\
                 "0.06745, 0.067, 0.06698, 0.06735, 0.06754, 0.06771, 0.06779, 0.06786, 0.06786, 0.06792",\
                 "0.06726, 0.06674, 0.06668, 0.06704, 0.06733, 0.0675, 0.06761, 0.06769, 0.06773, 0.06775",\
                 "0.06926, 0.06847, 0.06778, 0.06784, 0.06803, 0.06822, 0.06837, 0.06847, 0.0685, 0.06855",\
                 "0.07476, 0.07328, 0.07153, 0.07082, 0.0707, 0.07067, 0.07073, 0.07077, 0.07081, 0.07084",\
                 "0.08275, 0.08057, 0.07762, 0.07613, 0.07552, 0.07525, 0.07515, 0.07511, 0.07512, 0.0751",\
                 "0.09351, 0.09069, 0.08657, 0.08395, 0.08267, 0.08205, 0.08183, 0.08169, 0.08158, 0.08151",\
                 "0.1073, 0.1039, 0.09846, 0.09479, 0.09264, 0.09158, 0.09096, 0.09065, 0.09047, 0.09031",\
                 "0.1244, 0.1204, 0.1135, 0.1087, 0.1057, 0.1038, 0.1029, 0.1023, 0.1019, 0.1017",\
                 "0.1446, 0.14, 0.1319, 0.1257, 0.1216, 0.1192, 0.1177, 0.1169, 0.1162, 0.1158");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.007424, 0.02998, 0.07304, 0.1401, 0.2343, 0.3581, 0.5142, 0.7047, 0.9318");
          values("0.04575, 0.04511, 0.04506, 0.04527, 0.04587, 0.04639, 0.04702, 0.04778, 0.04907, 0.05395",\
                 "0.04547, 0.04484, 0.04481, 0.04509, 0.0456, 0.04618, 0.04676, 0.04738, 0.04848, 0.05452",\
                 "0.04525, 0.04464, 0.04441, 0.04471, 0.04524, 0.0457, 0.04649, 0.04698, 0.04828, 0.05486",\
                 "0.04741, 0.04637, 0.04532, 0.04535, 0.04573, 0.04639, 0.04692, 0.04758, 0.04887, 0.05574",\
                 "0.05231, 0.05075, 0.04886, 0.0481, 0.04819, 0.04841, 0.04898, 0.04976, 0.05073, 0.05891",\
                 "0.05952, 0.05729, 0.05434, 0.05283, 0.05284, 0.05279, 0.05267, 0.05372, 0.05545, 0.06437",\
                 "0.06939, 0.06652, 0.06253, 0.06002, 0.05914, 0.05966, 0.05981, 0.05986, 0.06116, 0.0732",\
                 "0.08206, 0.07847, 0.07337, 0.06994, 0.06825, 0.06788, 0.06835, 0.06897, 0.07039, 0.08592",\
                 "0.09785, 0.09352, 0.0873, 0.08273, 0.08032, 0.07916, 0.07902, 0.08046, 0.08292, 0.1051",\
                 "0.1166, 0.1117, 0.104, 0.09821, 0.09517, 0.09306, 0.09181, 0.09294, 0.0983, 0.132");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.007424, 0.02998, 0.07304, 0.1401, 0.2343, 0.3581, 0.5142, 0.7047, 0.9318");
          values("0.3867, 0.4354, 0.5661, 0.764, 1.044, 1.428, 1.931, 2.565, 3.34, 4.263",\
                 "0.406, 0.4547, 0.5855, 0.7834, 1.063, 1.447, 1.95, 2.585, 3.359, 4.282",\
                 "0.4777, 0.5263, 0.6568, 0.8548, 1.135, 1.519, 2.022, 2.656, 3.431, 4.354",\
                 "0.6158, 0.6643, 0.7948, 0.9927, 1.273, 1.657, 2.16, 2.794, 3.569, 4.492",\
                 "0.7853, 0.8371, 0.9741, 1.176, 1.458, 1.841, 2.344, 2.976, 3.752, 4.674",\
                 "0.9662, 1.022, 1.167, 1.377, 1.662, 2.046, 2.548, 3.182, 3.954, 4.877",\
                 "1.162, 1.222, 1.376, 1.595, 1.883, 2.269, 2.772, 3.405, 4.175, 5.099",\
                 "1.375, 1.439, 1.603, 1.831, 2.127, 2.514, 3.017, 3.651, 4.422, 5.342",\
                 "1.604, 1.673, 1.848, 2.088, 2.391, 2.784, 3.288, 3.92, 4.693, 5.615",\
                 "1.849, 1.923, 2.109, 2.363, 2.677, 3.077, 3.585, 4.22, 4.992, 5.912");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.007424, 0.02998, 0.07304, 0.1401, 0.2343, 0.3581, 0.5142, 0.7047, 0.9318");
          values("0.3736, 0.4235, 0.5653, 0.7997, 1.155, 1.651, 2.302, 3.125, 4.127, 5.327",\
                 "0.389, 0.4389, 0.5808, 0.8153, 1.17, 1.666, 2.319, 3.141, 4.144, 5.338",\
                 "0.4469, 0.4969, 0.6381, 0.8723, 1.228, 1.724, 2.377, 3.196, 4.202, 5.399",\
                 "0.5533, 0.6036, 0.7446, 0.9788, 1.333, 1.829, 2.482, 3.304, 4.305, 5.501",\
                 "0.6575, 0.7115, 0.8593, 1.096, 1.45, 1.944, 2.597, 3.417, 4.421, 5.619",\
                 "0.7459, 0.8037, 0.9591, 1.199, 1.554, 2.048, 2.699, 3.519, 4.524, 5.72",\
                 "0.8215, 0.8833, 1.046, 1.293, 1.647, 2.141, 2.792, 3.611, 4.614, 5.808",\
                 "0.8819, 0.9481, 1.121, 1.375, 1.731, 2.224, 2.874, 3.694, 4.694, 5.887",\
                 "0.9274, 0.9975, 1.18, 1.443, 1.804, 2.298, 2.947, 3.766, 4.767, 5.96",\
                 "0.9533, 1.028, 1.222, 1.496, 1.864, 2.362, 3.012, 3.831, 4.831, 6.024");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.007424, 0.02998, 0.07304, 0.1401, 0.2343, 0.3581, 0.5142, 0.7047, 0.9318");
          values("0.1439, 0.1974, 0.3504, 0.6293, 1.084, 1.747, 2.625, 3.741, 5.094, 6.71",\
                 "0.1436, 0.1982, 0.3514, 0.6298, 1.084, 1.747, 2.626, 3.737, 5.091, 6.714",\
                 "0.144, 0.1977, 0.3514, 0.6299, 1.084, 1.747, 2.623, 3.742, 5.093, 6.71",\
                 "0.1494, 0.2028, 0.3548, 0.6312, 1.085, 1.747, 2.623, 3.738, 5.094, 6.712",\
                 "0.1758, 0.2284, 0.3782, 0.645, 1.089, 1.748, 2.628, 3.737, 5.092, 6.718",\
                 "0.205, 0.2584, 0.4106, 0.67, 1.106, 1.753, 2.629, 3.739, 5.102, 6.716",\
                 "0.2364, 0.2924, 0.4438, 0.6998, 1.124, 1.761, 2.632, 3.736, 5.098, 6.72",\
                 "0.2696, 0.3286, 0.4848, 0.736, 1.147, 1.776, 2.638, 3.742, 5.097, 6.704",\
                 "0.3078, 0.369, 0.5312, 0.7804, 1.181, 1.799, 2.65, 3.75, 5.098, 6.714",\
                 "0.3452, 0.4112, 0.581, 0.831, 1.224, 1.832, 2.677, 3.77, 5.107, 6.715");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.007424, 0.02998, 0.07304, 0.1401, 0.2343, 0.3581, 0.5142, 0.7047, 0.9318");
          values("0.1496, 0.209, 0.4028, 0.7882, 1.418, 2.307, 3.472, 4.946, 6.745, 8.894",\
                 "0.1501, 0.2092, 0.4027, 0.788, 1.417, 2.301, 3.477, 4.947, 6.748, 8.895",\
                 "0.1498, 0.2089, 0.403, 0.7895, 1.418, 2.301, 3.477, 4.943, 6.747, 8.891",\
                 "0.1583, 0.2162, 0.4062, 0.7892, 1.417, 2.305, 3.472, 4.947, 6.743, 8.894",\
                 "0.1822, 0.2414, 0.4266, 0.797, 1.416, 2.302, 3.473, 4.943, 6.744, 8.896",\
                 "0.2072, 0.267, 0.4504, 0.8102, 1.424, 2.304, 3.474, 4.944, 6.746, 8.891",\
                 "0.2338, 0.2938, 0.4786, 0.8268, 1.428, 2.308, 3.476, 4.947, 6.738, 8.879",\
                 "0.2646, 0.3264, 0.511, 0.8504, 1.438, 2.313, 3.476, 4.945, 6.742, 8.9",\
                 "0.296, 0.3602, 0.5478, 0.8834, 1.459, 2.321, 3.481, 4.95, 6.744, 8.888",\
                 "0.3312, 0.3972, 0.5896, 0.9216, 1.486, 2.339, 3.491, 4.955, 6.749, 8.885");
        }
      }
    }
  }

