/*
 * 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 : "6.6672e-05" ;
    }

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "6.6672e-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.003628 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5.2 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;
    }

    pin(Z) {
      direction : output ;
      function : "I" ;
      max_capacitance : 0.714 ;
      max_transition : 5.2 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.0232, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.1232, 0.1212, 0.12, 0.1198, 0.1198, 0.1198, 0.1198, 0.1199, 0.1199, 0.1199",\
                 "0.1231, 0.1209, 0.1198, 0.1197, 0.1196, 0.1198, 0.1198, 0.1198, 0.1198, 0.1198",\
                 "0.1277, 0.1252, 0.1233, 0.1228, 0.1226, 0.1227, 0.1228, 0.1229, 0.1229, 0.1229",\
                 "0.146, 0.1418, 0.137, 0.1349, 0.1341, 0.1338, 0.1337, 0.1335, 0.1334, 0.1335",\
                 "0.1782, 0.172, 0.1635, 0.1591, 0.1566, 0.1553, 0.1547, 0.1545, 0.1543, 0.1541",\
                 "0.2244, 0.2158, 0.2041, 0.1958, 0.1914, 0.1891, 0.1876, 0.1869, 0.1863, 0.186",\
                 "0.2849, 0.2744, 0.2584, 0.2469, 0.2396, 0.2357, 0.2332, 0.2316, 0.2306, 0.2301",\
                 "0.3599, 0.3478, 0.3278, 0.3126, 0.3027, 0.2961, 0.2923, 0.2897, 0.288, 0.287",\
                 "0.4498, 0.4365, 0.4125, 0.3934, 0.3799, 0.3711, 0.3654, 0.3618, 0.3593, 0.3575",\
                 "0.5553, 0.541, 0.5129, 0.49, 0.4734, 0.4614, 0.4537, 0.4485, 0.445, 0.4427");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.0232, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.08366, 0.08106, 0.07901, 0.0786, 0.07902, 0.07979, 0.08151, 0.08387, 0.08479, 0.08738",\
                 "0.08327, 0.08056, 0.07843, 0.07856, 0.07851, 0.07932, 0.08079, 0.08351, 0.08551, 0.08594",\
                 "0.08686, 0.08371, 0.08066, 0.08007, 0.08028, 0.0813, 0.08259, 0.08387, 0.08731, 0.08846",\
                 "0.1035, 0.09863, 0.09391, 0.09112, 0.09007, 0.09106, 0.09195, 0.09431, 0.09523, 0.09674",\
                 "0.1317, 0.1255, 0.1165, 0.1129, 0.1102, 0.1092, 0.1103, 0.1116, 0.1136, 0.1158",\
                 "0.1731, 0.1644, 0.1527, 0.1456, 0.1431, 0.1407, 0.1405, 0.1397, 0.142, 0.1428",\
                 "0.2274, 0.217, 0.2016, 0.1898, 0.1842, 0.1834, 0.183, 0.1807, 0.1813, 0.1821",\
                 "0.2954, 0.2828, 0.2644, 0.2502, 0.2411, 0.236, 0.2367, 0.2354, 0.2342, 0.2348",\
                 "0.377, 0.3629, 0.3403, 0.3227, 0.3102, 0.3035, 0.3007, 0.3024, 0.3001, 0.2971",\
                 "0.4729, 0.4577, 0.431, 0.41, 0.3952, 0.386, 0.3789, 0.3783, 0.3832, 0.3795");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.0232, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.1453, 0.1722, 0.2466, 0.3715, 0.5625, 0.8301, 1.183, 1.626, 2.168, 2.815",\
                 "0.1546, 0.1815, 0.2559, 0.3809, 0.5718, 0.8395, 1.192, 1.636, 2.178, 2.825",\
                 "0.1921, 0.2187, 0.2926, 0.4174, 0.6083, 0.8759, 1.228, 1.672, 2.215, 2.861",\
                 "0.255, 0.2825, 0.3574, 0.4819, 0.6722, 0.9394, 1.292, 1.736, 2.278, 2.923",\
                 "0.3294, 0.359, 0.4365, 0.5616, 0.7516, 1.018, 1.37, 1.813, 2.355, 3.001",\
                 "0.4125, 0.4449, 0.5267, 0.6547, 0.8442, 1.111, 1.461, 1.904, 2.446, 3.091",\
                 "0.5036, 0.5393, 0.6261, 0.7585, 0.9509, 1.217, 1.568, 2.01, 2.551, 3.196",\
                 "0.6028, 0.6415, 0.7344, 0.871, 1.068, 1.338, 1.689, 2.131, 2.671, 3.316",\
                 "0.7103, 0.7514, 0.8509, 0.9934, 1.194, 1.469, 1.825, 2.268, 2.809, 3.453",\
                 "0.8271, 0.8712, 0.9768, 1.125, 1.329, 1.61, 1.973, 2.422, 2.963, 3.607");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.0232, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.1455, 0.1713, 0.2473, 0.3848, 0.5989, 0.8997, 1.294, 1.792, 2.401, 3.128",\
                 "0.1523, 0.178, 0.2539, 0.3915, 0.6057, 0.9064, 1.301, 1.799, 2.408, 3.134",\
                 "0.1802, 0.2057, 0.2809, 0.4183, 0.6324, 0.9324, 1.328, 1.827, 2.435, 3.162",\
                 "0.2201, 0.247, 0.3231, 0.4594, 0.6725, 0.9727, 1.368, 1.866, 2.474, 3.198",\
                 "0.2573, 0.2861, 0.3639, 0.4996, 0.7118, 1.011, 1.406, 1.904, 2.512, 3.238",\
                 "0.2891, 0.3205, 0.4016, 0.5379, 0.7488, 1.048, 1.441, 1.939, 2.546, 3.273",\
                 "0.3134, 0.3478, 0.4332, 0.5712, 0.7824, 1.081, 1.474, 1.971, 2.578, 3.303",\
                 "0.3286, 0.3661, 0.457, 0.5981, 0.8128, 1.112, 1.504, 2, 2.606, 3.33",\
                 "0.3341, 0.3743, 0.471, 0.6159, 0.8325, 1.135, 1.53, 2.026, 2.632, 3.354",\
                 "0.3292, 0.3724, 0.4754, 0.6241, 0.8441, 1.151, 1.549, 2.048, 2.653, 3.375");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.0232, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.05386, 0.08482, 0.1816, 0.3763, 0.6904, 1.138, 1.726, 2.465, 3.372, 4.453",\
                 "0.05394, 0.08464, 0.1816, 0.376, 0.6908, 1.138, 1.726, 2.466, 3.372, 4.431",\
                 "0.05432, 0.08548, 0.1821, 0.3758, 0.6915, 1.138, 1.726, 2.466, 3.373, 4.45",\
                 "0.06206, 0.0925, 0.1863, 0.3768, 0.691, 1.136, 1.725, 2.467, 3.373, 4.449",\
                 "0.07442, 0.1046, 0.1965, 0.3814, 0.6922, 1.137, 1.724, 2.462, 3.37, 4.444",\
                 "0.0886, 0.12, 0.2124, 0.3902, 0.6948, 1.137, 1.722, 2.461, 3.368, 4.438",\
                 "0.1046, 0.1382, 0.23, 0.4072, 0.7066, 1.142, 1.723, 2.461, 3.364, 4.438",\
                 "0.1214, 0.1572, 0.251, 0.4262, 0.7268, 1.156, 1.73, 2.459, 3.359, 4.437",\
                 "0.1378, 0.1792, 0.274, 0.448, 0.7482, 1.182, 1.75, 2.47, 3.36, 4.434",\
                 "0.1548, 0.1984, 0.2982, 0.4708, 0.7708, 1.213, 1.785, 2.496, 3.374, 4.434");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.0232, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.05598, 0.08824, 0.2033, 0.4384, 0.8106, 1.336, 2.022, 2.892, 3.955, 5.208",\
                 "0.056, 0.08808, 0.2034, 0.4394, 0.811, 1.335, 2.021, 2.891, 3.948, 5.209",\
                 "0.05588, 0.08852, 0.2035, 0.4384, 0.8115, 1.334, 2.023, 2.887, 3.948, 5.206",\
                 "0.06482, 0.09582, 0.2067, 0.4387, 0.8104, 1.334, 2.021, 2.893, 3.954, 5.217",\
                 "0.07534, 0.1059, 0.2122, 0.4404, 0.811, 1.334, 2.023, 2.886, 3.945, 5.207",\
                 "0.0882, 0.1202, 0.2226, 0.4436, 0.8122, 1.334, 2.021, 2.889, 3.943, 5.207",\
                 "0.1022, 0.1352, 0.2364, 0.4534, 0.8158, 1.334, 2.02, 2.885, 3.941, 5.204",\
                 "0.1174, 0.1534, 0.2528, 0.467, 0.8296, 1.34, 2.023, 2.885, 3.945, 5.201",\
                 "0.1326, 0.1702, 0.2714, 0.482, 0.8448, 1.358, 2.03, 2.887, 3.94, 5.208",\
                 "0.1482, 0.1882, 0.291, 0.499, 0.863, 1.381, 2.051, 2.899, 3.946, 5.199");
        }
      }
    }
  }

