/*
 * 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__dlyc_1) {
    area : 54.880000 ;

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

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

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

    pin(Z) {
      direction : output ;
      function : "I" ;
      max_capacitance : 0.2365 ;
      max_transition : 6.8 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.002625, 0.008331, 0.01923, 0.0362, 0.06002, 0.09136, 0.1308, 0.179, 0.2365");
          values("0.07707, 0.07687, 0.07657, 0.0765, 0.07652, 0.07655, 0.0766, 0.07664, 0.07665, 0.07667",\
                 "0.07692, 0.07669, 0.07642, 0.07628, 0.07635, 0.0764, 0.07642, 0.07646, 0.07648, 0.0765",\
                 "0.07666, 0.07645, 0.07615, 0.07602, 0.07609, 0.07614, 0.07619, 0.07623, 0.07624, 0.07625",\
                 "0.07667, 0.07643, 0.07615, 0.07606, 0.07609, 0.07615, 0.07619, 0.07622, 0.07624, 0.07625",\
                 "0.07695, 0.07673, 0.07645, 0.07632, 0.07637, 0.07644, 0.07649, 0.07651, 0.07654, 0.07655",\
                 "0.07759, 0.07735, 0.07706, 0.07697, 0.07699, 0.07707, 0.0771, 0.07714, 0.07716, 0.07718",\
                 "0.07858, 0.07835, 0.07808, 0.07799, 0.078, 0.07807, 0.07812, 0.07814, 0.07817, 0.07818",\
                 "0.07998, 0.07976, 0.07946, 0.0794, 0.0794, 0.07944, 0.07949, 0.07953, 0.07956, 0.07958",\
                 "0.08177, 0.08154, 0.08125, 0.08119, 0.0812, 0.08125, 0.0813, 0.08133, 0.08136, 0.08138",\
                 "0.08407, 0.08384, 0.08356, 0.08345, 0.08349, 0.08355, 0.08359, 0.08361, 0.08364, 0.08365");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.002625, 0.008331, 0.01923, 0.0362, 0.06002, 0.09136, 0.1308, 0.179, 0.2365");
          values("0.06513, 0.06512, 0.06512, 0.06533, 0.06555, 0.06592, 0.06613, 0.06636, 0.06667, 0.06684",\
                 "0.06509, 0.0651, 0.06506, 0.06528, 0.06547, 0.06582, 0.06609, 0.0663, 0.06665, 0.06671",\
                 "0.06491, 0.0649, 0.06494, 0.06507, 0.06528, 0.06564, 0.06587, 0.06612, 0.06632, 0.06671",\
                 "0.06473, 0.06471, 0.06474, 0.06493, 0.06518, 0.06548, 0.06573, 0.06594, 0.06628, 0.06646",\
                 "0.06483, 0.06484, 0.0648, 0.06498, 0.06522, 0.06556, 0.06579, 0.06602, 0.06622, 0.06666",\
                 "0.06523, 0.0652, 0.06523, 0.06534, 0.06565, 0.066, 0.06623, 0.06654, 0.06667, 0.06697",\
                 "0.06596, 0.06596, 0.06603, 0.06614, 0.0664, 0.06677, 0.067, 0.06735, 0.06743, 0.06796",\
                 "0.06712, 0.06714, 0.06715, 0.06736, 0.06755, 0.06792, 0.06813, 0.06836, 0.06863, 0.06912",\
                 "0.06864, 0.06864, 0.06868, 0.06881, 0.06914, 0.06952, 0.06975, 0.07, 0.07017, 0.07063",\
                 "0.07068, 0.07064, 0.0707, 0.07081, 0.0711, 0.07136, 0.07181, 0.07216, 0.07239, 0.0728");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.002625, 0.008331, 0.01923, 0.0362, 0.06002, 0.09136, 0.1308, 0.179, 0.2365");
          values("2.845, 2.886, 2.999, 3.155, 3.344, 3.566, 3.828, 4.141, 4.514, 4.953",\
                 "2.858, 2.9, 3.013, 3.17, 3.358, 3.58, 3.842, 4.155, 4.527, 4.967",\
                 "2.916, 2.957, 3.07, 3.227, 3.415, 3.637, 3.899, 4.212, 4.584, 5.023",\
                 "3.036, 3.078, 3.191, 3.347, 3.536, 3.757, 4.02, 4.333, 4.705, 5.144",\
                 "3.226, 3.267, 3.38, 3.537, 3.726, 3.947, 4.21, 4.523, 4.895, 5.334",\
                 "3.463, 3.503, 3.617, 3.773, 3.962, 4.184, 4.446, 4.759, 5.131, 5.571",\
                 "3.725, 3.767, 3.88, 4.036, 4.225, 4.447, 4.709, 5.022, 5.394, 5.833",\
                 "4.016, 4.058, 4.171, 4.327, 4.516, 4.738, 5.001, 5.313, 5.685, 6.124",\
                 "4.341, 4.382, 4.495, 4.652, 4.84, 5.062, 5.325, 5.638, 6.01, 6.449",\
                 "4.704, 4.746, 4.859, 5.016, 5.204, 5.427, 5.689, 6.003, 6.375, 6.814");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.002625, 0.008331, 0.01923, 0.0362, 0.06002, 0.09136, 0.1308, 0.179, 0.2365");
          values("2.659, 2.696, 2.807, 2.996, 3.278, 3.672, 4.187, 4.837, 5.629, 6.573",\
                 "2.672, 2.709, 2.821, 3.009, 3.291, 3.684, 4.201, 4.85, 5.642, 6.585",\
                 "2.714, 2.752, 2.863, 3.051, 3.333, 3.727, 4.243, 4.891, 5.684, 6.627",\
                 "2.773, 2.81, 2.922, 3.11, 3.393, 3.786, 4.302, 4.951, 5.743, 6.688",\
                 "2.817, 2.855, 2.966, 3.155, 3.437, 3.83, 4.346, 4.995, 5.788, 6.731",\
                 "2.84, 2.877, 2.989, 3.176, 3.459, 3.853, 4.369, 5.018, 5.81, 6.754",\
                 "2.837, 2.874, 2.986, 3.174, 3.456, 3.85, 4.366, 5.015, 5.807, 6.75",\
                 "2.806, 2.844, 2.955, 3.143, 3.426, 3.819, 4.335, 4.984, 5.776, 6.72",\
                 "2.746, 2.784, 2.895, 3.083, 3.366, 3.759, 4.274, 4.924, 5.716, 6.66",\
                 "2.655, 2.692, 2.804, 2.991, 3.274, 3.668, 4.184, 4.833, 5.624, 6.568");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.002625, 0.008331, 0.01923, 0.0362, 0.06002, 0.09136, 0.1308, 0.179, 0.2365");
          values("0.2362, 0.2722, 0.3714, 0.5158, 0.7156, 0.9828, 1.343, 1.817, 2.413, 3.139",\
                 "0.2364, 0.2728, 0.3704, 0.5154, 0.7154, 0.983, 1.344, 1.818, 2.412, 3.135",\
                 "0.2362, 0.2724, 0.3706, 0.5156, 0.7154, 0.9828, 1.342, 1.818, 2.413, 3.139",\
                 "0.236, 0.2724, 0.3706, 0.5148, 0.7134, 0.9826, 1.342, 1.817, 2.413, 3.139",\
                 "0.2364, 0.2728, 0.3704, 0.5156, 0.7124, 0.9822, 1.343, 1.818, 2.412, 3.135",\
                 "0.2364, 0.2728, 0.3704, 0.5156, 0.713, 0.9826, 1.343, 1.817, 2.413, 3.139",\
                 "0.236, 0.2726, 0.3712, 0.5154, 0.7142, 0.9832, 1.344, 1.816, 2.412, 3.138",\
                 "0.2366, 0.2726, 0.3704, 0.5156, 0.7142, 0.983, 1.344, 1.816, 2.413, 3.136",\
                 "0.236, 0.2726, 0.3706, 0.515, 0.7128, 0.9828, 1.344, 1.818, 2.413, 3.14",\
                 "0.2366, 0.2726, 0.3712, 0.5156, 0.713, 0.9834, 1.343, 1.814, 2.411, 3.138");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.002625, 0.008331, 0.01923, 0.0362, 0.06002, 0.09136, 0.1308, 0.179, 0.2365");
          values("0.179, 0.2204, 0.3634, 0.6526, 1.126, 1.797, 2.685, 3.8, 5.175, 6.797",\
                 "0.1788, 0.2204, 0.3644, 0.652, 1.126, 1.797, 2.682, 3.804, 5.174, 6.796",\
                 "0.1786, 0.22, 0.3634, 0.6524, 1.124, 1.797, 2.685, 3.806, 5.17, 6.805",\
                 "0.1788, 0.2202, 0.3632, 0.6526, 1.126, 1.797, 2.683, 3.803, 5.174, 6.808",\
                 "0.1788, 0.2202, 0.3638, 0.6526, 1.124, 1.797, 2.685, 3.806, 5.17, 6.806",\
                 "0.1784, 0.2204, 0.3636, 0.6528, 1.126, 1.796, 2.685, 3.806, 5.169, 6.805",\
                 "0.1788, 0.2204, 0.3636, 0.6524, 1.126, 1.796, 2.684, 3.806, 5.166, 6.801",\
                 "0.1784, 0.2202, 0.364, 0.652, 1.124, 1.796, 2.683, 3.806, 5.171, 6.806",\
                 "0.1784, 0.2204, 0.3642, 0.6524, 1.124, 1.796, 2.681, 3.805, 5.172, 6.797",\
                 "0.1784, 0.2204, 0.364, 0.6524, 1.124, 1.798, 2.682, 3.801, 5.168, 6.794");
        }
      }
    }
  }

