/*
 * 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__dlyb_4) {
    area : 48.294400 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.002706 ;
      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.9268 ;
      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.00739, 0.02982, 0.07265, 0.1394, 0.233, 0.3562, 0.5115, 0.7009, 0.9268");
          values("0.2099, 0.2028, 0.1841, 0.1617, 0.1435, 0.1313, 0.1232, 0.1174, 0.1132, 0.11",\
                 "0.2098, 0.2027, 0.1839, 0.1615, 0.1433, 0.1311, 0.123, 0.1172, 0.113, 0.1099",\
                 "0.2096, 0.2025, 0.1837, 0.1614, 0.1432, 0.1311, 0.1229, 0.1171, 0.1129, 0.1098",\
                 "0.2101, 0.203, 0.1842, 0.1618, 0.1436, 0.1315, 0.1234, 0.1176, 0.1133, 0.1102",\
                 "0.2113, 0.2042, 0.1854, 0.163, 0.1448, 0.1327, 0.1245, 0.1187, 0.1145, 0.1114",\
                 "0.2132, 0.2062, 0.1874, 0.165, 0.1468, 0.1346, 0.1265, 0.1207, 0.1165, 0.1133",\
                 "0.2161, 0.2091, 0.1903, 0.1679, 0.1497, 0.1376, 0.1294, 0.1236, 0.1194, 0.1163",\
                 "0.2201, 0.213, 0.1942, 0.1717, 0.1536, 0.1415, 0.1334, 0.1276, 0.1234, 0.1202",\
                 "0.2252, 0.2181, 0.1993, 0.1769, 0.1587, 0.1466, 0.1384, 0.1326, 0.1284, 0.1253",\
                 "0.2313, 0.2242, 0.2054, 0.183, 0.1649, 0.1527, 0.1446, 0.1389, 0.1346, 0.1314");
        }

        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.00739, 0.02982, 0.07265, 0.1394, 0.233, 0.3562, 0.5115, 0.7009, 0.9268");
          values("0.106, 0.1016, 0.09483, 0.09044, 0.08774, 0.0865, 0.08601, 0.08643, 0.08748, 0.09832",\
                 "0.106, 0.1015, 0.09469, 0.0903, 0.08764, 0.08654, 0.08597, 0.08643, 0.08748, 0.09889",\
                 "0.1059, 0.1015, 0.09466, 0.09022, 0.08758, 0.0864, 0.08627, 0.08623, 0.08717, 0.09896",\
                 "0.1061, 0.1017, 0.09487, 0.09047, 0.08776, 0.0866, 0.08605, 0.08623, 0.08784, 0.1009",\
                 "0.1068, 0.1023, 0.09547, 0.09119, 0.08851, 0.08741, 0.08708, 0.08742, 0.08891, 0.103",\
                 "0.1082, 0.1038, 0.09697, 0.09251, 0.08988, 0.0888, 0.08823, 0.089, 0.09093, 0.1072",\
                 "0.1106, 0.1061, 0.09939, 0.09471, 0.09217, 0.09101, 0.09062, 0.09059, 0.09323, 0.1144",\
                 "0.1137, 0.1093, 0.1025, 0.09782, 0.0954, 0.09468, 0.09395, 0.09396, 0.09715, 0.1239",\
                 "0.1179, 0.1135, 0.1067, 0.1022, 0.09916, 0.09804, 0.09866, 0.09911, 0.1032, 0.1382",\
                 "0.1232, 0.1187, 0.1118, 0.1073, 0.1044, 0.1028, 0.1028, 0.1041, 0.1118, 0.1603");
        }
      }

      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.00739, 0.02982, 0.07265, 0.1394, 0.233, 0.3562, 0.5115, 0.7009, 0.9268");
          values("3.47, 3.55, 3.77, 4.078, 4.449, 4.875, 5.35, 5.871, 6.444, 7.08",\
                 "3.485, 3.566, 3.785, 4.093, 4.464, 4.891, 5.366, 5.886, 6.459, 7.095",\
                 "3.554, 3.635, 3.853, 4.161, 4.533, 4.959, 5.434, 5.955, 6.528, 7.164",\
                 "3.705, 3.786, 4.005, 4.313, 4.684, 5.111, 5.586, 6.107, 6.68, 7.316",\
                 "3.943, 4.024, 4.243, 4.551, 4.923, 5.348, 5.824, 6.345, 6.918, 7.554",\
                 "4.245, 4.326, 4.546, 4.853, 5.225, 5.651, 6.126, 6.647, 7.22, 7.856",\
                 "4.598, 4.68, 4.898, 5.207, 5.578, 6.004, 6.48, 7, 7.573, 8.209",\
                 "5.01, 5.091, 5.309, 5.618, 5.989, 6.415, 6.89, 7.411, 7.984, 8.62",\
                 "5.482, 5.563, 5.782, 6.09, 6.461, 6.886, 7.361, 7.882, 8.455, 9.091",\
                 "6.019, 6.099, 6.319, 6.626, 6.998, 7.423, 7.899, 8.42, 8.993, 9.628");
        }

        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.00739, 0.02982, 0.07265, 0.1394, 0.233, 0.3562, 0.5115, 0.7009, 0.9268");
          values("2.509, 2.574, 2.757, 3.041, 3.423, 3.927, 4.577, 5.394, 6.391, 7.578",\
                 "2.525, 2.589, 2.772, 3.056, 3.438, 3.942, 4.592, 5.409, 6.406, 7.593",\
                 "2.572, 2.637, 2.82, 3.103, 3.486, 3.989, 4.639, 5.457, 6.453, 7.641",\
                 "2.628, 2.693, 2.876, 3.16, 3.542, 4.046, 4.696, 5.513, 6.51, 7.698",\
                 "2.659, 2.723, 2.907, 3.19, 3.573, 4.077, 4.727, 5.544, 6.539, 7.728",\
                 "2.655, 2.719, 2.902, 3.186, 3.568, 4.072, 4.722, 5.539, 6.536, 7.723",\
                 "2.611, 2.676, 2.859, 3.142, 3.525, 4.028, 4.679, 5.495, 6.492, 7.679",\
                 "2.526, 2.59, 2.774, 3.057, 3.439, 3.943, 4.594, 5.411, 6.407, 7.595",\
                 "2.394, 2.459, 2.642, 2.926, 3.308, 3.812, 4.462, 5.278, 6.274, 7.463",\
                 "2.21, 2.275, 2.458, 2.742, 3.125, 3.628, 4.278, 5.095, 6.091, 7.277");
        }

        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.00739, 0.02982, 0.07265, 0.1394, 0.233, 0.3562, 0.5115, 0.7009, 0.9268");
          values("0.703, 0.7774, 0.983, 1.264, 1.617, 2.049, 2.553, 3.151, 3.87, 4.744",\
                 "0.703, 0.7778, 0.982, 1.264, 1.619, 2.05, 2.554, 3.15, 3.87, 4.744",\
                 "0.703, 0.778, 0.9822, 1.265, 1.618, 2.049, 2.554, 3.149, 3.869, 4.745",\
                 "0.703, 0.7774, 0.9824, 1.265, 1.618, 2.048, 2.551, 3.15, 3.869, 4.745",\
                 "0.7026, 0.7772, 0.9826, 1.265, 1.618, 2.05, 2.554, 3.151, 3.871, 4.746",\
                 "0.703, 0.7776, 0.9812, 1.264, 1.619, 2.048, 2.553, 3.15, 3.87, 4.744",\
                 "0.7024, 0.7788, 0.982, 1.265, 1.618, 2.051, 2.553, 3.149, 3.872, 4.75",\
                 "0.703, 0.7776, 0.9816, 1.265, 1.618, 2.051, 2.556, 3.15, 3.87, 4.744",\
                 "0.7026, 0.7778, 0.9806, 1.263, 1.616, 2.05, 2.556, 3.148, 3.872, 4.752",\
                 "0.704, 0.778, 0.982, 1.266, 1.616, 2.046, 2.552, 3.15, 3.876, 4.748");
        }

        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.00739, 0.02982, 0.07265, 0.1394, 0.233, 0.3562, 0.5115, 0.7009, 0.9268");
          values("0.2994, 0.3694, 0.5916, 0.9682, 1.54, 2.377, 3.514, 4.97, 6.755, 8.884",\
                 "0.2992, 0.3694, 0.591, 0.9672, 1.539, 2.376, 3.515, 4.971, 6.757, 8.884",\
                 "0.2996, 0.3694, 0.591, 0.9672, 1.539, 2.376, 3.514, 4.97, 6.753, 8.884",\
                 "0.3, 0.3694, 0.5916, 0.9694, 1.54, 2.38, 3.515, 4.969, 6.757, 8.885",\
                 "0.2998, 0.3692, 0.592, 0.9684, 1.54, 2.379, 3.514, 4.969, 6.758, 8.884",\
                 "0.2994, 0.3686, 0.591, 0.9688, 1.539, 2.377, 3.515, 4.97, 6.756, 8.884",\
                 "0.2992, 0.369, 0.591, 0.9656, 1.541, 2.38, 3.513, 4.967, 6.752, 8.885",\
                 "0.2996, 0.3692, 0.5902, 0.9648, 1.538, 2.375, 3.513, 4.972, 6.757, 8.884",\
                 "0.2998, 0.3698, 0.5908, 0.967, 1.541, 2.379, 3.513, 4.97, 6.762, 8.88",\
                 "0.3006, 0.3696, 0.5918, 0.9682, 1.54, 2.379, 3.516, 4.969, 6.754, 8.886");
        }
      }
    }
  }

