/*
 * 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_1) {
    area : 13.171200 ;

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "1.0616184e-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.003052 ;
      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(Z) {
      direction : output ;
      function : "I" ;
      max_capacitance : 0.1652 ;
      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.002133, 0.006112, 0.01371, 0.02554, 0.04215, 0.064, 0.09153, 0.1251, 0.1652");
          values("0.01565, 0.01571, 0.01581, 0.01589, 0.01593, 0.01595, 0.01596, 0.01597, 0.01597, 0.01597",\
                 "0.01557, 0.01562, 0.01573, 0.01581, 0.01585, 0.01587, 0.01588, 0.01589, 0.0159, 0.01589",\
                 "0.01538, 0.01544, 0.01555, 0.01564, 0.01568, 0.01571, 0.01572, 0.01573, 0.01573, 0.01573",\
                 "0.0152, 0.01525, 0.01536, 0.01546, 0.01552, 0.01556, 0.01558, 0.01559, 0.0156, 0.01559",\
                 "0.01506, 0.0151, 0.01521, 0.01531, 0.0154, 0.01545, 0.01548, 0.01551, 0.01552, 0.01551",\
                 "0.01496, 0.015, 0.01511, 0.01521, 0.0153, 0.01537, 0.01542, 0.01545, 0.01546, 0.01543",\
                 "0.0149, 0.01493, 0.01503, 0.01513, 0.01523, 0.0153, 0.01536, 0.01539, 0.01539, 0.01526",\
                 "0.01484, 0.01488, 0.01497, 0.01507, 0.01517, 0.01525, 0.0153, 0.01533, 0.0152, 0.01475",\
                 "0.01479, 0.01483, 0.01492, 0.01502, 0.01512, 0.0152, 0.01521, 0.01487, 0.01424, 0.01375",\
                 "0.0143, 0.01433, 0.01441, 0.01448, 0.01408, 0.01323, 0.01267, 0.01232, 0.0121, 0.01195");
        }

        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.002133, 0.006112, 0.01371, 0.02554, 0.04215, 0.064, 0.09153, 0.1251, 0.1652");
          values("0.00836, 0.008412, 0.008519, 0.008589, 0.008631, 0.008628, 0.008639, 0.008901, 0.01471, 0.04944",\
                 "0.008307, 0.008367, 0.008476, 0.008551, 0.008582, 0.008604, 0.008607, 0.008866, 0.01502, 0.05045",\
                 "0.008146, 0.00819, 0.008299, 0.008388, 0.008452, 0.008471, 0.008493, 0.008898, 0.01593, 0.05408",\
                 "0.007936, 0.007968, 0.008067, 0.008153, 0.008237, 0.008264, 0.008315, 0.00891, 0.01846, 0.06151",\
                 "0.007779, 0.007819, 0.007884, 0.007986, 0.008054, 0.008118, 0.008174, 0.009254, 0.0233, 0.07263",\
                 "0.007673, 0.007699, 0.007787, 0.007848, 0.007927, 0.007966, 0.008058, 0.01033, 0.03238, 0.08662",\
                 "0.007583, 0.007613, 0.0077, 0.007782, 0.007824, 0.007864, 0.008165, 0.01388, 0.04798, 0.101",\
                 "0.007523, 0.007553, 0.007633, 0.007707, 0.007787, 0.007827, 0.00881, 0.0243, 0.06887, 0.1116",\
                 "0.00748, 0.007499, 0.007568, 0.007662, 0.007714, 0.007936, 0.01417, 0.04693, 0.08497, 0.1131",\
                 "0.007638, 0.007657, 0.007716, 0.007769, 0.007928, 0.01183, 0.03719, 0.06523, 0.0849, 0.09873");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : positive_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.002133, 0.006112, 0.01371, 0.02554, 0.04215, 0.064, 0.09153, 0.1251, 0.1652");
          values("1.036, 1.094, 1.276, 1.587, 2.053, 2.704, 3.559, 4.636, 5.95, 7.517",\
                 "1.112, 1.171, 1.352, 1.663, 2.13, 2.78, 3.635, 4.712, 6.023, 7.591",\
                 "1.387, 1.446, 1.628, 1.939, 2.406, 3.056, 3.91, 4.987, 6.301, 7.868",\
                 "1.926, 1.985, 2.167, 2.479, 2.945, 3.596, 4.451, 5.529, 6.843, 8.409",\
                 "2.761, 2.82, 3.003, 3.316, 3.783, 4.434, 5.289, 6.366, 7.681, 9.246",\
                 "3.848, 3.912, 4.102, 4.42, 4.887, 5.538, 6.393, 7.472, 8.785, 10.35",\
                 "5.135, 5.204, 5.406, 5.731, 6.204, 6.856, 7.71, 8.785, 10.1, 11.67",\
                 "6.615, 6.692, 6.909, 7.244, 7.721, 8.373, 9.229, 10.31, 11.62, 13.18",\
                 "8.295, 8.382, 8.616, 8.965, 9.447, 10.1, 10.96, 12.03, 13.35, 14.91",\
                 "10.18, 10.27, 10.53, 10.89, 11.38, 12.04, 12.89, 13.97, 15.29, 16.85");
        }

        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.002133, 0.006112, 0.01371, 0.02554, 0.04215, 0.064, 0.09153, 0.1251, 0.1652");
          values("0.8597, 0.9489, 1.253, 1.825, 2.71, 3.951, 5.579, 7.637, 10.14, 13.13",\
                 "0.9208, 1.01, 1.315, 1.887, 2.773, 4.011, 5.642, 7.698, 10.2, 13.19",\
                 "1.134, 1.223, 1.527, 2.1, 2.986, 4.226, 5.859, 7.913, 10.42, 13.41",\
                 "1.529, 1.618, 1.921, 2.494, 3.382, 4.624, 6.254, 8.308, 10.82, 13.8",\
                 "2.008, 2.098, 2.404, 2.977, 3.865, 5.107, 6.739, 8.792, 11.3, 14.29",\
                 "2.522, 2.614, 2.922, 3.496, 4.384, 5.626, 7.258, 9.314, 11.82, 14.81",\
                 "3.062, 3.158, 3.469, 4.043, 4.931, 6.175, 7.807, 9.862, 12.37, 15.35",\
                 "3.623, 3.722, 4.037, 4.612, 5.499, 6.743, 8.376, 10.43, 12.94, 15.93",\
                 "4.195, 4.299, 4.622, 5.197, 6.085, 7.327, 8.959, 11.02, 13.52, 16.51",\
                 "4.772, 4.881, 5.213, 5.79, 6.677, 7.92, 9.55, 11.61, 14.11, 17.1");
        }

        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.002133, 0.006112, 0.01371, 0.02554, 0.04215, 0.064, 0.09153, 0.1251, 0.1652");
          values("0.3456, 0.414, 0.6522, 1.121, 1.884, 2.974, 4.41, 6.225, 8.439, 11.07",\
                 "0.3454, 0.414, 0.6522, 1.122, 1.884, 2.973, 4.412, 6.225, 8.44, 11.07",\
                 "0.3452, 0.4144, 0.6524, 1.121, 1.884, 2.974, 4.411, 6.226, 8.435, 11.07",\
                 "0.3472, 0.4156, 0.6526, 1.122, 1.884, 2.974, 4.412, 6.225, 8.433, 11.07",\
                 "0.355, 0.4222, 0.6562, 1.123, 1.884, 2.972, 4.413, 6.226, 8.438, 11.07",\
                 "0.3896, 0.455, 0.6804, 1.134, 1.888, 2.974, 4.41, 6.227, 8.438, 11.06",\
                 "0.4414, 0.5048, 0.72, 1.162, 1.902, 2.978, 4.412, 6.22, 8.436, 11.07",\
                 "0.508, 0.566, 0.77, 1.196, 1.918, 2.99, 4.416, 6.222, 8.434, 11.07",\
                 "0.58, 0.64, 0.834, 1.236, 1.94, 2.998, 4.43, 6.232, 8.43, 11.06",\
                 "0.66, 0.722, 0.912, 1.29, 1.968, 3.01, 4.432, 6.238, 8.442, 11.07");
        }

        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.002133, 0.006112, 0.01371, 0.02554, 0.04215, 0.064, 0.09153, 0.1251, 0.1652");
          values("0.4888, 0.626, 1.118, 2.065, 3.544, 5.621, 8.35, 11.79, 15.98, 21.02",\
                 "0.4889, 0.6259, 1.118, 2.066, 3.545, 5.619, 8.349, 11.78, 15.99, 21.02",\
                 "0.489, 0.6256, 1.118, 2.066, 3.545, 5.62, 8.358, 11.8, 15.98, 21.01",\
                 "0.4922, 0.628, 1.118, 2.065, 3.544, 5.617, 8.349, 11.79, 15.98, 20.99",\
                 "0.5114, 0.6436, 1.126, 2.068, 3.545, 5.625, 8.353, 11.79, 15.99, 20.98",\
                 "0.5348, 0.6626, 1.137, 2.077, 3.55, 5.622, 8.349, 11.79, 15.99, 21",\
                 "0.5644, 0.6878, 1.149, 2.083, 3.559, 5.625, 8.352, 11.79, 15.99, 21",\
                 "0.602, 0.718, 1.166, 2.09, 3.564, 5.636, 8.358, 11.8, 15.99, 20.99",\
                 "0.646, 0.758, 1.188, 2.098, 3.568, 5.64, 8.366, 11.8, 15.99, 21",\
                 "0.7, 0.806, 1.218, 2.108, 3.574, 5.642, 8.368, 11.81, 16, 21");
        }
      }
    }
  }

