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

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

    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.005234 ;
      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.932 ;
      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.007426, 0.02998, 0.07306, 0.1402, 0.2343, 0.3582, 0.5143, 0.7049, 0.932");
          values("0.06608, 0.06571, 0.06571, 0.06604, 0.06626, 0.06641, 0.06651, 0.06656, 0.06661, 0.06663",\
                 "0.06589, 0.06545, 0.06554, 0.06584, 0.0661, 0.06626, 0.06631, 0.06639, 0.06643, 0.06646",\
                 "0.06574, 0.06525, 0.06512, 0.06556, 0.06586, 0.06605, 0.06617, 0.06622, 0.06629, 0.06631",\
                 "0.06774, 0.06694, 0.06633, 0.06638, 0.0666, 0.06679, 0.06694, 0.06702, 0.06707, 0.0671",\
                 "0.07326, 0.07177, 0.07009, 0.0694, 0.06925, 0.06929, 0.06933, 0.0694, 0.06943, 0.06945",\
                 "0.08129, 0.07914, 0.07624, 0.07471, 0.07408, 0.07386, 0.07379, 0.07374, 0.07381, 0.07378",\
                 "0.09208, 0.08929, 0.08513, 0.08256, 0.08144, 0.08067, 0.08046, 0.08031, 0.08021, 0.08018",\
                 "0.1059, 0.1024, 0.09704, 0.09348, 0.09135, 0.09023, 0.08965, 0.08937, 0.08916, 0.08901",\
                 "0.123, 0.1189, 0.112, 0.1072, 0.1043, 0.1026, 0.1016, 0.101, 0.1007, 0.1004",\
                 "0.1432, 0.1386, 0.1305, 0.1243, 0.1202, 0.1179, 0.1165, 0.1155, 0.1149, 0.1145");
        }

        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.007426, 0.02998, 0.07306, 0.1402, 0.2343, 0.3582, 0.5143, 0.7049, 0.932");
          values("0.04521, 0.04463, 0.0445, 0.04485, 0.04545, 0.04606, 0.04663, 0.0473, 0.04941, 0.05485",\
                 "0.04496, 0.04435, 0.04437, 0.04471, 0.04521, 0.0458, 0.0464, 0.04691, 0.04823, 0.05485",\
                 "0.04471, 0.04411, 0.04395, 0.04427, 0.04479, 0.04543, 0.04602, 0.04651, 0.04763, 0.05421",\
                 "0.04695, 0.04601, 0.04498, 0.04498, 0.04525, 0.04598, 0.04656, 0.0475, 0.04842, 0.05568",\
                 "0.05184, 0.05032, 0.0483, 0.04762, 0.04768, 0.04824, 0.04865, 0.04928, 0.05088, 0.05885",\
                 "0.05907, 0.05692, 0.05399, 0.05237, 0.05252, 0.05246, 0.05275, 0.05345, 0.055, 0.06392",\
                 "0.0689, 0.06612, 0.06226, 0.05979, 0.05879, 0.05948, 0.05948, 0.05978, 0.0611, 0.07258",\
                 "0.08172, 0.07812, 0.07307, 0.0695, 0.06794, 0.06782, 0.06861, 0.06869, 0.07014, 0.0853",\
                 "0.09752, 0.09316, 0.0868, 0.08268, 0.07986, 0.07847, 0.07841, 0.07999, 0.08259, 0.1046",\
                 "0.1162, 0.1112, 0.1035, 0.09811, 0.09505, 0.09303, 0.09206, 0.09286, 0.09904, 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.007426, 0.02998, 0.07306, 0.1402, 0.2343, 0.3582, 0.5143, 0.7049, 0.932");
          values("0.3794, 0.4279, 0.5578, 0.7547, 1.035, 1.418, 1.922, 2.555, 3.329, 4.254",\
                 "0.3987, 0.4471, 0.5772, 0.7743, 1.054, 1.438, 1.941, 2.575, 3.35, 4.273",\
                 "0.4703, 0.5186, 0.6485, 0.8456, 1.126, 1.509, 2.012, 2.646, 3.422, 4.345",\
                 "0.608, 0.6562, 0.7861, 0.9833, 1.263, 1.647, 2.15, 2.784, 3.559, 4.482",\
                 "0.7755, 0.827, 0.9639, 1.166, 1.446, 1.83, 2.332, 2.966, 3.741, 4.664",\
                 "0.9545, 1.01, 1.155, 1.364, 1.648, 2.033, 2.534, 3.168, 3.941, 4.863",\
                 "1.15, 1.209, 1.362, 1.579, 1.868, 2.253, 2.756, 3.389, 4.161, 5.085",\
                 "1.36, 1.424, 1.587, 1.815, 2.109, 2.497, 3.001, 3.632, 4.405, 5.325",\
                 "1.587, 1.656, 1.83, 2.07, 2.373, 2.764, 3.269, 3.901, 4.674, 5.594",\
                 "1.831, 1.905, 2.089, 2.343, 2.657, 3.056, 3.563, 4.198, 4.971, 5.891");
        }

        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.007426, 0.02998, 0.07306, 0.1402, 0.2343, 0.3582, 0.5143, 0.7049, 0.932");
          values("0.3665, 0.4162, 0.5571, 0.7912, 1.146, 1.642, 2.296, 3.118, 4.122, 5.315",\
                 "0.3818, 0.4317, 0.5728, 0.8067, 1.162, 1.658, 2.311, 3.133, 4.136, 5.335",\
                 "0.4398, 0.4895, 0.63, 0.8642, 1.219, 1.715, 2.367, 3.189, 4.194, 5.386",\
                 "0.5456, 0.5958, 0.736, 0.9696, 1.324, 1.82, 2.472, 3.294, 4.3, 5.496",\
                 "0.6473, 0.7014, 0.8483, 1.084, 1.438, 1.933, 2.585, 3.409, 4.409, 5.604",\
                 "0.7342, 0.792, 0.9464, 1.186, 1.54, 2.035, 2.686, 3.507, 4.51, 5.707",\
                 "0.8078, 0.8696, 1.032, 1.278, 1.631, 2.126, 2.776, 3.597, 4.599, 5.795",\
                 "0.8672, 0.9333, 1.105, 1.357, 1.714, 2.207, 2.857, 3.677, 4.678, 5.873",\
                 "0.9107, 0.9807, 1.162, 1.425, 1.785, 2.279, 2.928, 3.747, 4.749, 5.942",\
                 "0.9352, 1.01, 1.202, 1.476, 1.844, 2.341, 2.991, 3.811, 4.811, 6.003");
        }

        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.007426, 0.02998, 0.07306, 0.1402, 0.2343, 0.3582, 0.5143, 0.7049, 0.932");
          values("0.1415, 0.1953, 0.348, 0.6274, 1.083, 1.745, 2.628, 3.742, 5.102, 6.713",\
                 "0.1412, 0.1948, 0.3485, 0.6273, 1.083, 1.745, 2.628, 3.742, 5.091, 6.713",\
                 "0.1416, 0.196, 0.3489, 0.6275, 1.083, 1.746, 2.627, 3.742, 5.097, 6.712",\
                 "0.1476, 0.2006, 0.3524, 0.6294, 1.083, 1.743, 2.627, 3.742, 5.094, 6.719",\
                 "0.174, 0.2266, 0.3756, 0.642, 1.088, 1.744, 2.628, 3.741, 5.097, 6.716",\
                 "0.203, 0.2564, 0.4074, 0.6666, 1.105, 1.751, 2.627, 3.736, 5.102, 6.721",\
                 "0.2338, 0.289, 0.4406, 0.6958, 1.12, 1.761, 2.631, 3.736, 5.099, 6.715",\
                 "0.268, 0.3258, 0.4814, 0.7324, 1.144, 1.775, 2.64, 3.741, 5.097, 6.71",\
                 "0.3046, 0.3662, 0.5276, 0.7754, 1.179, 1.797, 2.652, 3.75, 5.097, 6.712",\
                 "0.3426, 0.409, 0.577, 0.8272, 1.221, 1.834, 2.677, 3.763, 5.11, 6.716");
        }

        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.007426, 0.02998, 0.07306, 0.1402, 0.2343, 0.3582, 0.5143, 0.7049, 0.932");
          values("0.1477, 0.2065, 0.4001, 0.7863, 1.416, 2.3, 3.477, 4.946, 6.75, 8.887",\
                 "0.1477, 0.2065, 0.4001, 0.7861, 1.417, 2.301, 3.477, 4.947, 6.747, 8.897",\
                 "0.1475, 0.2064, 0.4003, 0.7867, 1.417, 2.301, 3.472, 4.945, 6.748, 8.888",\
                 "0.1563, 0.214, 0.4038, 0.7874, 1.413, 2.301, 3.471, 4.943, 6.743, 8.894",\
                 "0.1802, 0.239, 0.4234, 0.796, 1.418, 2.306, 3.472, 4.946, 6.742, 8.888",\
                 "0.205, 0.264, 0.447, 0.8078, 1.422, 2.304, 3.469, 4.944, 6.741, 8.89",\
                 "0.2318, 0.2928, 0.4736, 0.8242, 1.428, 2.307, 3.475, 4.945, 6.752, 8.89",\
                 "0.262, 0.3228, 0.5086, 0.8478, 1.437, 2.312, 3.477, 4.946, 6.738, 8.883",\
                 "0.2942, 0.357, 0.5452, 0.8792, 1.458, 2.32, 3.479, 4.951, 6.744, 8.889",\
                 "0.3288, 0.3948, 0.587, 0.9186, 1.482, 2.34, 3.492, 4.954, 6.75, 8.887");
        }
      }
    }
  }

