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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "5.28228e-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.003595 ;
      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.3563 ;
      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.003452, 0.01206, 0.0285, 0.0541, 0.09004, 0.1373, 0.1969, 0.2696, 0.3563");
          values("0.08277, 0.08285, 0.08328, 0.08353, 0.0837, 0.08382, 0.08384, 0.08387, 0.08393, 0.08394",\
                 "0.08262, 0.08273, 0.08312, 0.08348, 0.08371, 0.08374, 0.08379, 0.08377, 0.0839, 0.08386",\
                 "0.08754, 0.08747, 0.08736, 0.0875, 0.08767, 0.08778, 0.08788, 0.08789, 0.08789, 0.08798",\
                 "0.1024, 0.1017, 0.1007, 0.1003, 0.1002, 0.1002, 0.1002, 0.1002, 0.1002, 0.1002",\
                 "0.1287, 0.1273, 0.125, 0.1237, 0.123, 0.1227, 0.1226, 0.1225, 0.1225, 0.1224",\
                 "0.1673, 0.1651, 0.1613, 0.1587, 0.1573, 0.1566, 0.1563, 0.156, 0.1558, 0.1558",\
                 "0.2184, 0.2155, 0.2104, 0.2064, 0.204, 0.2026, 0.2018, 0.2013, 0.201, 0.2008",\
                 "0.2831, 0.2794, 0.2728, 0.2673, 0.2637, 0.2615, 0.2602, 0.2593, 0.2589, 0.2585",\
                 "0.362, 0.3575, 0.3494, 0.3424, 0.3373, 0.3341, 0.3321, 0.3309, 0.33, 0.3294",\
                 "0.4559, 0.4508, 0.4411, 0.4325, 0.426, 0.4215, 0.4186, 0.4167, 0.4154, 0.4145");
        }

        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.003452, 0.01206, 0.0285, 0.0541, 0.09004, 0.1373, 0.1969, 0.2696, 0.3563");
          values("0.04345, 0.04314, 0.04331, 0.04335, 0.04368, 0.04372, 0.04329, 0.04368, 0.04344, 0.04339",\
                 "0.04284, 0.04258, 0.04265, 0.04271, 0.04304, 0.0431, 0.04264, 0.04303, 0.04214, 0.04231",\
                 "0.04646, 0.04581, 0.04528, 0.04523, 0.04523, 0.04552, 0.04509, 0.04541, 0.04506, 0.04519",\
                 "0.05927, 0.05805, 0.05641, 0.05556, 0.05553, 0.05534, 0.05546, 0.05549, 0.05521, 0.05527",\
                 "0.0825, 0.08077, 0.07811, 0.07633, 0.07515, 0.07496, 0.07519, 0.07424, 0.074, 0.07471",\
                 "0.117, 0.1147, 0.1104, 0.1085, 0.106, 0.1051, 0.1043, 0.1044, 0.104, 0.1039",\
                 "0.1633, 0.1602, 0.1552, 0.1509, 0.1491, 0.1471, 0.1454, 0.1449, 0.1446, 0.1442",\
                 "0.222, 0.2181, 0.2117, 0.2064, 0.2035, 0.2015, 0.1989, 0.197, 0.1954, 0.195",\
                 "0.2936, 0.289, 0.2812, 0.2745, 0.2699, 0.2665, 0.2646, 0.2624, 0.2605, 0.2587",\
                 "0.3789, 0.374, 0.3644, 0.3562, 0.3506, 0.3463, 0.344, 0.3417, 0.3386, 0.3361");
        }
      }

      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.003452, 0.01206, 0.0285, 0.0541, 0.09004, 0.1373, 0.1969, 0.2696, 0.3563");
          values("0.1198, 0.1421, 0.2094, 0.3304, 0.5177, 0.7804, 1.126, 1.561, 2.092, 2.726",\
                 "0.1292, 0.1515, 0.2188, 0.3398, 0.5271, 0.7898, 1.135, 1.571, 2.101, 2.735",\
                 "0.1648, 0.187, 0.2542, 0.375, 0.5622, 0.8248, 1.17, 1.606, 2.137, 2.77",\
                 "0.2167, 0.2396, 0.3083, 0.4292, 0.6159, 0.8784, 1.224, 1.659, 2.19, 2.824",\
                 "0.2781, 0.3026, 0.3736, 0.4951, 0.6819, 0.9439, 1.289, 1.724, 2.255, 2.889",\
                 "0.3468, 0.3733, 0.4478, 0.5725, 0.7598, 1.022, 1.367, 1.801, 2.332, 2.965",\
                 "0.4222, 0.4512, 0.5297, 0.6582, 0.8497, 1.113, 1.458, 1.892, 2.423, 3.056",\
                 "0.5049, 0.5363, 0.6195, 0.7519, 0.9475, 1.217, 1.564, 1.998, 2.528, 3.161",\
                 "0.5953, 0.6291, 0.7171, 0.8539, 1.054, 1.328, 1.682, 2.119, 2.649, 3.282",\
                 "0.6938, 0.7301, 0.8236, 0.9647, 1.169, 1.449, 1.809, 2.254, 2.788, 3.42");
        }

        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.003452, 0.01206, 0.0285, 0.0541, 0.09004, 0.1373, 0.1969, 0.2696, 0.3563");
          values("0.1224, 0.1449, 0.2179, 0.3552, 0.5688, 0.8679, 1.262, 1.759, 2.364, 3.087",\
                 "0.1289, 0.1514, 0.2243, 0.3616, 0.5754, 0.8744, 1.269, 1.765, 2.371, 3.094",\
                 "0.1549, 0.1772, 0.2495, 0.3867, 0.6002, 0.8995, 1.294, 1.79, 2.395, 3.118",\
                 "0.1852, 0.2081, 0.2806, 0.4169, 0.63, 0.9294, 1.323, 1.819, 2.426, 3.148",\
                 "0.2135, 0.2374, 0.3108, 0.4461, 0.6584, 0.9575, 1.351, 1.847, 2.453, 3.176",\
                 "0.2359, 0.2618, 0.3373, 0.4734, 0.685, 0.9836, 1.376, 1.872, 2.478, 3.2",\
                 "0.2511, 0.2789, 0.358, 0.4961, 0.7098, 1.008, 1.401, 1.896, 2.501, 3.223",\
                 "0.2576, 0.2878, 0.3707, 0.5117, 0.7284, 1.029, 1.422, 1.916, 2.521, 3.243",\
                 "0.2548, 0.2872, 0.3744, 0.5183, 0.7385, 1.045, 1.44, 1.934, 2.539, 3.26",\
                 "0.2423, 0.2775, 0.3692, 0.5162, 0.7399, 1.05, 1.452, 1.95, 2.554, 3.274");
        }

        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.003452, 0.01206, 0.0285, 0.0541, 0.09004, 0.1373, 0.1969, 0.2696, 0.3563");
          values("0.0575, 0.0854, 0.1827, 0.3791, 0.6904, 1.128, 1.702, 2.427, 3.311, 4.365",\
                 "0.05756, 0.08554, 0.1827, 0.3795, 0.6904, 1.128, 1.702, 2.426, 3.311, 4.365",\
                 "0.05966, 0.0871, 0.1833, 0.3795, 0.6907, 1.128, 1.702, 2.426, 3.31, 4.365",\
                 "0.0666, 0.09428, 0.1878, 0.3803, 0.6905, 1.128, 1.701, 2.426, 3.311, 4.364",\
                 "0.07706, 0.1049, 0.1965, 0.3833, 0.6909, 1.127, 1.702, 2.426, 3.309, 4.364",\
                 "0.0902, 0.1178, 0.2098, 0.3936, 0.6952, 1.127, 1.701, 2.425, 3.31, 4.364",\
                 "0.1048, 0.1334, 0.2252, 0.409, 0.7096, 1.134, 1.702, 2.424, 3.309, 4.363",\
                 "0.1198, 0.1498, 0.2416, 0.4258, 0.7306, 1.155, 1.712, 2.425, 3.307, 4.362",\
                 "0.136, 0.1674, 0.2594, 0.4432, 0.7514, 1.185, 1.74, 2.44, 3.31, 4.359",\
                 "0.1536, 0.187, 0.2798, 0.4618, 0.7738, 1.214, 1.777, 2.474, 3.329, 4.364");
        }

        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.003452, 0.01206, 0.0285, 0.0541, 0.09004, 0.1373, 0.1969, 0.2696, 0.3563");
          values("0.06256, 0.095, 0.2153, 0.4536, 0.8255, 1.346, 2.032, 2.895, 3.949, 5.205",\
                 "0.06266, 0.09506, 0.2151, 0.4538, 0.8256, 1.346, 2.032, 2.895, 3.947, 5.207",\
                 "0.0642, 0.09626, 0.2152, 0.4532, 0.8252, 1.346, 2.032, 2.895, 3.948, 5.205",\
                 "0.0706, 0.1017, 0.2173, 0.4533, 0.8242, 1.346, 2.031, 2.894, 3.949, 5.206",\
                 "0.07908, 0.1097, 0.221, 0.4545, 0.8242, 1.345, 2.031, 2.894, 3.947, 5.205",\
                 "0.0898, 0.1204, 0.2294, 0.4586, 0.8256, 1.344, 2.03, 2.892, 3.948, 5.206",\
                 "0.1028, 0.1326, 0.2408, 0.4684, 0.8324, 1.347, 2.029, 2.892, 3.947, 5.203",\
                 "0.1168, 0.147, 0.2534, 0.4804, 0.8476, 1.356, 2.031, 2.891, 3.944, 5.201",\
                 "0.131, 0.1624, 0.2672, 0.4938, 0.865, 1.377, 2.045, 2.895, 3.943, 5.199",\
                 "0.1456, 0.18, 0.2826, 0.5078, 0.884, 1.402, 2.07, 2.91, 3.949, 5.198");
        }
      }
    }
  }

