/*
 * 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__dlya_2) {
    area : 28.537600 ;

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "2.81754e-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.002218 ;
      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.4758 ;
      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.004277, 0.01578, 0.03775, 0.07197, 0.12, 0.1832, 0.2628, 0.3599, 0.4758");
          values("0.05078, 0.0502, 0.0498, 0.04987, 0.05009, 0.05024, 0.05037, 0.05046, 0.0505, 0.05055",\
                 "0.05061, 0.04998, 0.04959, 0.04968, 0.04989, 0.05003, 0.05015, 0.05025, 0.0503, 0.05033",\
                 "0.05036, 0.04976, 0.04935, 0.04943, 0.04963, 0.0498, 0.04992, 0.05001, 0.05007, 0.0501",\
                 "0.05047, 0.04987, 0.04947, 0.04954, 0.04975, 0.04994, 0.05004, 0.05012, 0.05018, 0.05023",\
                 "0.05096, 0.05034, 0.04995, 0.05003, 0.0502, 0.05042, 0.05054, 0.05062, 0.05068, 0.05072",\
                 "0.05184, 0.05122, 0.0508, 0.05087, 0.05106, 0.05126, 0.05138, 0.05146, 0.05152, 0.05156",\
                 "0.05302, 0.05244, 0.05204, 0.0521, 0.05227, 0.05244, 0.05259, 0.05267, 0.05273, 0.05276",\
                 "0.05464, 0.05404, 0.05367, 0.0537, 0.0539, 0.05408, 0.05421, 0.0543, 0.05436, 0.05439",\
                 "0.05678, 0.05618, 0.05576, 0.0558, 0.05602, 0.05622, 0.05634, 0.05642, 0.05647, 0.0565",\
                 "0.0594, 0.05878, 0.05836, 0.05845, 0.05866, 0.0588, 0.05894, 0.05903, 0.05908, 0.05913");
        }

        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.004277, 0.01578, 0.03775, 0.07197, 0.12, 0.1832, 0.2628, 0.3599, 0.4758");
          values("0.0372, 0.03731, 0.03767, 0.03835, 0.03896, 0.03946, 0.04011, 0.04071, 0.04114, 0.04173",\
                 "0.03713, 0.03725, 0.03758, 0.03828, 0.0389, 0.03946, 0.04005, 0.04045, 0.0411, 0.04167",\
                 "0.03697, 0.03707, 0.0375, 0.03816, 0.03876, 0.03925, 0.03985, 0.04029, 0.04095, 0.04151",\
                 "0.037, 0.03706, 0.03752, 0.03814, 0.03874, 0.03931, 0.03987, 0.04033, 0.04079, 0.04127",\
                 "0.03729, 0.03738, 0.03784, 0.03848, 0.03908, 0.03956, 0.04017, 0.04081, 0.04124, 0.04165",\
                 "0.03793, 0.03802, 0.03825, 0.03915, 0.03971, 0.04024, 0.04076, 0.04114, 0.04164, 0.04257",\
                 "0.03896, 0.039, 0.03943, 0.04014, 0.04058, 0.04162, 0.04179, 0.04227, 0.04283, 0.04318",\
                 "0.0404, 0.04048, 0.0408, 0.04157, 0.04207, 0.04267, 0.04383, 0.04401, 0.04396, 0.04457",\
                 "0.0422, 0.04225, 0.04271, 0.04322, 0.04391, 0.0442, 0.04504, 0.04617, 0.04665, 0.04638",\
                 "0.04449, 0.04457, 0.04487, 0.04558, 0.04612, 0.04655, 0.04686, 0.04788, 0.04922, 0.04989");
        }
      }

      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.004277, 0.01578, 0.03775, 0.07197, 0.12, 0.1832, 0.2628, 0.3599, 0.4758");
          values("0.93, 0.9729, 1.08, 1.219, 1.387, 1.589, 1.839, 2.145, 2.515, 2.956",\
                 "0.9423, 0.985, 1.092, 1.231, 1.399, 1.602, 1.851, 2.157, 2.528, 2.969",\
                 "1, 1.043, 1.15, 1.289, 1.457, 1.66, 1.909, 2.215, 2.585, 3.026",\
                 "1.121, 1.164, 1.271, 1.41, 1.578, 1.781, 2.03, 2.336, 2.706, 3.148",\
                 "1.285, 1.328, 1.434, 1.574, 1.741, 1.944, 2.193, 2.5, 2.87, 3.311",\
                 "1.471, 1.514, 1.621, 1.76, 1.928, 2.131, 2.38, 2.686, 3.057, 3.498",\
                 "1.685, 1.728, 1.834, 1.974, 2.141, 2.344, 2.594, 2.9, 3.27, 3.711",\
                 "1.931, 1.974, 2.081, 2.22, 2.387, 2.591, 2.84, 3.146, 3.517, 3.957",\
                 "2.214, 2.257, 2.364, 2.503, 2.671, 2.873, 3.123, 3.429, 3.8, 4.24",\
                 "2.537, 2.58, 2.687, 2.826, 2.993, 3.197, 3.446, 3.752, 4.122, 4.563");
        }

        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.004277, 0.01578, 0.03775, 0.07197, 0.12, 0.1832, 0.2628, 0.3599, 0.4758");
          values("0.6393, 0.6757, 0.7809, 0.9659, 1.249, 1.645, 2.165, 2.821, 3.621, 4.573",\
                 "0.6526, 0.689, 0.7944, 0.9791, 1.263, 1.659, 2.178, 2.835, 3.634, 4.586",\
                 "0.6942, 0.7305, 0.8358, 1.021, 1.304, 1.7, 2.22, 2.876, 3.675, 4.628",\
                 "0.7344, 0.7706, 0.8761, 1.061, 1.344, 1.74, 2.261, 2.916, 3.715, 4.667",\
                 "0.754, 0.7903, 0.8958, 1.081, 1.364, 1.76, 2.28, 2.936, 3.735, 4.688",\
                 "0.7502, 0.7867, 0.8918, 1.077, 1.36, 1.756, 2.276, 2.932, 3.73, 4.683",\
                 "0.7206, 0.757, 0.8625, 1.047, 1.331, 1.727, 2.246, 2.9, 3.698, 4.653",\
                 "0.662, 0.6984, 0.8037, 0.9888, 1.272, 1.668, 2.187, 2.841, 3.639, 4.591",\
                 "0.5717, 0.608, 0.7131, 0.8978, 1.181, 1.577, 2.097, 2.751, 3.549, 4.499",\
                 "0.4461, 0.4826, 0.5878, 0.7725, 1.056, 1.452, 1.971, 2.626, 3.424, 4.374");
        }

        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.004277, 0.01578, 0.03775, 0.07197, 0.12, 0.1832, 0.2628, 0.3599, 0.4758");
          values("0.1715, 0.2086, 0.2986, 0.4294, 0.6228, 0.8956, 1.276, 1.77, 2.39, 3.132",\
                 "0.1718, 0.2087, 0.298, 0.429, 0.6226, 0.8956, 1.275, 1.771, 2.389, 3.134",\
                 "0.1716, 0.2088, 0.2982, 0.4292, 0.6224, 0.8948, 1.276, 1.77, 2.39, 3.133",\
                 "0.1716, 0.2088, 0.298, 0.4294, 0.6228, 0.8948, 1.276, 1.77, 2.39, 3.133",\
                 "0.1716, 0.2086, 0.298, 0.429, 0.6224, 0.8962, 1.274, 1.77, 2.387, 3.133",\
                 "0.1714, 0.2084, 0.2978, 0.4296, 0.6216, 0.8954, 1.275, 1.771, 2.39, 3.134",\
                 "0.1716, 0.2086, 0.2982, 0.4292, 0.621, 0.8952, 1.276, 1.771, 2.389, 3.131",\
                 "0.1716, 0.2088, 0.2982, 0.4294, 0.6206, 0.8964, 1.275, 1.768, 2.39, 3.134",\
                 "0.1716, 0.2088, 0.2984, 0.4296, 0.6218, 0.8964, 1.275, 1.769, 2.387, 3.129",\
                 "0.1718, 0.2088, 0.2984, 0.429, 0.6208, 0.8948, 1.275, 1.771, 2.387, 3.129");
        }

        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.004277, 0.01578, 0.03775, 0.07197, 0.12, 0.1832, 0.2628, 0.3599, 0.4758");
          values("0.1109, 0.153, 0.3003, 0.6039, 1.086, 1.768, 2.667, 3.798, 5.177, 6.822",\
                 "0.1112, 0.1529, 0.3003, 0.6029, 1.088, 1.766, 2.667, 3.796, 5.176, 6.821",\
                 "0.1115, 0.1529, 0.3003, 0.6028, 1.088, 1.768, 2.667, 3.797, 5.176, 6.821",\
                 "0.1118, 0.153, 0.3004, 0.6038, 1.087, 1.767, 2.665, 3.797, 5.17, 6.814",\
                 "0.111, 0.1526, 0.3, 0.6028, 1.086, 1.767, 2.666, 3.799, 5.178, 6.825",\
                 "0.1114, 0.1532, 0.3, 0.603, 1.086, 1.766, 2.665, 3.792, 5.173, 6.818",\
                 "0.111, 0.1528, 0.3006, 0.6032, 1.089, 1.765, 2.661, 3.79, 5.175, 6.813",\
                 "0.1118, 0.1524, 0.3002, 0.6028, 1.087, 1.765, 2.66, 3.79, 5.171, 6.818",\
                 "0.1118, 0.1526, 0.3006, 0.6042, 1.087, 1.769, 2.66, 3.787, 5.162, 6.806",\
                 "0.1114, 0.1526, 0.3002, 0.6038, 1.086, 1.767, 2.665, 3.787, 5.164, 6.8");
        }
      }
    }
  }

