/*
 * 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_2) {
    area : 17.561600 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.003533 ;
      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.4671 ;
      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.004217, 0.01551, 0.03707, 0.07067, 0.1178, 0.1798, 0.258, 0.3534, 0.4671");
          values("0.03648, 0.03641, 0.03653, 0.03673, 0.03685, 0.03693, 0.03699, 0.03702, 0.03704, 0.03705",\
                 "0.03635, 0.03626, 0.03639, 0.0366, 0.03671, 0.0368, 0.03686, 0.03688, 0.0369, 0.03692",\
                 "0.03626, 0.03614, 0.03625, 0.03648, 0.03666, 0.03673, 0.03681, 0.03685, 0.03686, 0.03687",\
                 "0.03763, 0.03734, 0.03717, 0.03727, 0.03741, 0.03748, 0.03755, 0.0376, 0.03762, 0.03764",\
                 "0.04093, 0.04037, 0.03975, 0.03952, 0.03945, 0.0395, 0.03952, 0.03957, 0.03959, 0.03962",\
                 "0.04603, 0.04518, 0.04399, 0.04336, 0.04311, 0.04306, 0.04304, 0.04305, 0.04305, 0.04304",\
                 "0.05313, 0.05195, 0.05021, 0.04911, 0.04858, 0.04834, 0.0482, 0.04814, 0.04812, 0.04812",\
                 "0.06231, 0.06088, 0.05852, 0.05689, 0.056, 0.05544, 0.05522, 0.05504, 0.05498, 0.05492",\
                 "0.07375, 0.07201, 0.06902, 0.06682, 0.06543, 0.06465, 0.06422, 0.06393, 0.06377, 0.06366",\
                 "0.0874, 0.08539, 0.08172, 0.0789, 0.07705, 0.07589, 0.07521, 0.07481, 0.07451, 0.07436");
        }

        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.004217, 0.01551, 0.03707, 0.07067, 0.1178, 0.1798, 0.258, 0.3534, 0.4671");
          values("0.0237, 0.02368, 0.02375, 0.02408, 0.02436, 0.02471, 0.02492, 0.02559, 0.02596, 0.02895",\
                 "0.02356, 0.02348, 0.02366, 0.02396, 0.02426, 0.02459, 0.02478, 0.02516, 0.02578, 0.02891",\
                 "0.02349, 0.02335, 0.02344, 0.02369, 0.02402, 0.02439, 0.02462, 0.02516, 0.02576, 0.02887",\
                 "0.0249, 0.02454, 0.0242, 0.0243, 0.02459, 0.02495, 0.0252, 0.02553, 0.0262, 0.02974",\
                 "0.02764, 0.02708, 0.02636, 0.02626, 0.0263, 0.02659, 0.02694, 0.02714, 0.02792, 0.03182",\
                 "0.03204, 0.03126, 0.03004, 0.02949, 0.02978, 0.02982, 0.02991, 0.03031, 0.03093, 0.03574",\
                 "0.03823, 0.03716, 0.03565, 0.03447, 0.03416, 0.03467, 0.03478, 0.03494, 0.03541, 0.04108",\
                 "0.04632, 0.04498, 0.043, 0.04135, 0.04069, 0.04045, 0.041, 0.0413, 0.04215, 0.04954",\
                 "0.05638, 0.05473, 0.05214, 0.05014, 0.04897, 0.04843, 0.0486, 0.04928, 0.05037, 0.0606",\
                 "0.0684, 0.0664, 0.06326, 0.06096, 0.05936, 0.05833, 0.05795, 0.05854, 0.0612, 0.07701");
        }
      }

      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.004217, 0.01551, 0.03707, 0.07067, 0.1178, 0.1798, 0.258, 0.3534, 0.4671");
          values("0.3633, 0.4078, 0.5293, 0.7163, 0.9832, 1.35, 1.83, 2.436, 3.176, 4.056",\
                 "0.3823, 0.4269, 0.5484, 0.7353, 1.002, 1.369, 1.849, 2.454, 3.195, 4.077",\
                 "0.4547, 0.4991, 0.6204, 0.8075, 1.074, 1.441, 1.921, 2.526, 3.267, 4.147",\
                 "0.5937, 0.6381, 0.7597, 0.947, 1.214, 1.581, 2.061, 2.666, 3.407, 4.289",\
                 "0.7646, 0.8124, 0.9408, 1.133, 1.401, 1.767, 2.248, 2.853, 3.592, 4.475",\
                 "0.9559, 1.008, 1.144, 1.342, 1.614, 1.982, 2.462, 3.067, 3.807, 4.687",\
                 "1.171, 1.226, 1.372, 1.579, 1.855, 2.224, 2.705, 3.309, 4.047, 4.928",\
                 "1.41, 1.47, 1.626, 1.843, 2.127, 2.5, 2.981, 3.586, 4.323, 5.202",\
                 "1.674, 1.738, 1.904, 2.135, 2.428, 2.807, 3.293, 3.897, 4.636, 5.515",\
                 "1.962, 2.031, 2.208, 2.452, 2.758, 3.146, 3.639, 4.249, 4.988, 5.868");
        }

        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.004217, 0.01551, 0.03707, 0.07067, 0.1178, 0.1798, 0.258, 0.3534, 0.4671");
          values("0.3324, 0.379, 0.5137, 0.7461, 1.101, 1.597, 2.25, 3.074, 4.078, 5.274",\
                 "0.3472, 0.3935, 0.5284, 0.7605, 1.115, 1.612, 2.265, 3.089, 4.09, 5.29",\
                 "0.402, 0.4479, 0.5824, 0.8146, 1.169, 1.666, 2.32, 3.143, 4.148, 5.342",\
                 "0.4913, 0.5384, 0.6737, 0.9053, 1.26, 1.757, 2.41, 3.233, 4.237, 5.434",\
                 "0.5641, 0.6149, 0.7565, 0.9901, 1.344, 1.84, 2.493, 3.317, 4.321, 5.517",\
                 "0.6181, 0.6721, 0.8198, 1.056, 1.411, 1.906, 2.558, 3.381, 4.385, 5.582",\
                 "0.6527, 0.7102, 0.8659, 1.107, 1.46, 1.956, 2.608, 3.428, 4.432, 5.627",\
                 "0.6644, 0.7258, 0.891, 1.139, 1.495, 1.989, 2.64, 3.462, 4.463, 5.66",\
                 "0.6501, 0.7162, 0.891, 1.149, 1.51, 2.007, 2.659, 3.479, 4.48, 5.675",\
                 "0.6089, 0.6793, 0.864, 1.134, 1.502, 2.005, 2.659, 3.479, 4.482, 5.676");
        }

        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.004217, 0.01551, 0.03707, 0.07067, 0.1178, 0.1798, 0.258, 0.3534, 0.4671");
          values("0.1421, 0.1915, 0.3367, 0.6038, 1.039, 1.671, 2.512, 3.577, 4.872, 6.421",\
                 "0.1421, 0.1915, 0.3365, 0.6036, 1.039, 1.67, 2.512, 3.575, 4.871, 6.413",\
                 "0.1423, 0.1918, 0.3377, 0.6044, 1.039, 1.672, 2.513, 3.576, 4.871, 6.422",\
                 "0.1494, 0.1978, 0.341, 0.606, 1.04, 1.67, 2.514, 3.577, 4.866, 6.415",\
                 "0.1734, 0.2222, 0.3646, 0.6188, 1.045, 1.674, 2.514, 3.577, 4.873, 6.416",\
                 "0.2006, 0.251, 0.3928, 0.6426, 1.059, 1.679, 2.513, 3.577, 4.867, 6.421",\
                 "0.2316, 0.2834, 0.4264, 0.6722, 1.077, 1.687, 2.518, 3.578, 4.863, 6.411",\
                 "0.2656, 0.3196, 0.4668, 0.7104, 1.105, 1.705, 2.528, 3.577, 4.872, 6.418",\
                 "0.303, 0.3604, 0.5124, 0.7534, 1.144, 1.735, 2.546, 3.591, 4.873, 6.413",\
                 "0.3412, 0.4028, 0.5632, 0.8058, 1.193, 1.777, 2.583, 3.617, 4.889, 6.418");
        }

        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.004217, 0.01551, 0.03707, 0.07067, 0.1178, 0.1798, 0.258, 0.3534, 0.4671");
          values("0.1475, 0.2054, 0.3998, 0.7921, 1.426, 2.312, 3.484, 4.963, 6.761, 8.91",\
                 "0.1475, 0.2049, 0.3993, 0.7938, 1.425, 2.312, 3.483, 4.956, 6.759, 8.91",\
                 "0.1475, 0.205, 0.3997, 0.7921, 1.423, 2.312, 3.484, 4.965, 6.755, 8.899",\
                 "0.1598, 0.2155, 0.4046, 0.793, 1.423, 2.311, 3.484, 4.961, 6.761, 8.906",\
                 "0.1818, 0.237, 0.4226, 0.8004, 1.424, 2.316, 3.481, 4.96, 6.757, 8.902",\
                 "0.2034, 0.2604, 0.4418, 0.8104, 1.43, 2.316, 3.48, 4.965, 6.768, 8.915",\
                 "0.2288, 0.2854, 0.4678, 0.824, 1.433, 2.318, 3.485, 4.964, 6.769, 8.896",\
                 "0.2558, 0.3166, 0.4994, 0.8482, 1.445, 2.32, 3.489, 4.958, 6.76, 8.895",\
                 "0.287, 0.3488, 0.5352, 0.8772, 1.467, 2.336, 3.494, 4.963, 6.756, 8.897",\
                 "0.3202, 0.3832, 0.5742, 0.915, 1.497, 2.358, 3.51, 4.969, 6.761, 8.899");
        }
      }
    }
  }

