/*
 * 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__buf_4) {
    area : 30.732800 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.008197 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;
    }

    pin(Z) {
      direction : output ;
      function : "I" ;
      max_capacitance : 0.7738 ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006334, 0.02506, 0.06081, 0.1165, 0.1947, 0.2975, 0.4271, 0.5852, 0.7738");
          values("0.05251, 0.05294, 0.05386, 0.05452, 0.05486, 0.05506, 0.05516, 0.05522, 0.05526, 0.05528",\
                 "0.05209, 0.05254, 0.05348, 0.05414, 0.05449, 0.05468, 0.05478, 0.05484, 0.05487, 0.05488",\
                 "0.0513, 0.05173, 0.05265, 0.05335, 0.05372, 0.05392, 0.05402, 0.0541, 0.05412, 0.05413",\
                 "0.05064, 0.05101, 0.05184, 0.05257, 0.05303, 0.05329, 0.05346, 0.05355, 0.0536, 0.0536",\
                 "0.05017, 0.05047, 0.05122, 0.05198, 0.05252, 0.05286, 0.05308, 0.05322, 0.0533, 0.05327",\
                 "0.04993, 0.0502, 0.05086, 0.0516, 0.05219, 0.05259, 0.05286, 0.05302, 0.05314, 0.05302",\
                 "0.04995, 0.05016, 0.05072, 0.05137, 0.052, 0.05244, 0.05277, 0.05296, 0.05299, 0.0525",\
                 "0.05005, 0.05025, 0.05071, 0.05134, 0.05194, 0.05241, 0.05276, 0.05285, 0.05225, 0.05063",\
                 "0.04986, 0.04999, 0.05041, 0.05101, 0.05156, 0.05199, 0.05176, 0.04997, 0.04779, 0.04617",\
                 "0.04335, 0.0434, 0.04343, 0.04116, 0.03902, 0.03786, 0.03729, 0.03695, 0.03676, 0.03666");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006334, 0.02506, 0.06081, 0.1165, 0.1947, 0.2975, 0.4271, 0.5852, 0.7738");
          values("0.02896, 0.02951, 0.03058, 0.0315, 0.032, 0.03229, 0.03356, 0.05083, 0.1496, 0.3742",\
                 "0.02879, 0.02932, 0.03042, 0.03135, 0.03179, 0.03234, 0.03365, 0.05151, 0.1526, 0.379",\
                 "0.02822, 0.02866, 0.0296, 0.03054, 0.03123, 0.03174, 0.03327, 0.05392, 0.1651, 0.3945",\
                 "0.02742, 0.02782, 0.02862, 0.02956, 0.03038, 0.03102, 0.0331, 0.06078, 0.1878, 0.4232",\
                 "0.0269, 0.02716, 0.02789, 0.02873, 0.02969, 0.03023, 0.03381, 0.07289, 0.2252, 0.4595",\
                 "0.02662, 0.02688, 0.02744, 0.02824, 0.02915, 0.02983, 0.03701, 0.09864, 0.2774, 0.4978",\
                 "0.02651, 0.02674, 0.02721, 0.02779, 0.02857, 0.03026, 0.04622, 0.146, 0.3418, 0.5246",\
                 "0.02658, 0.02676, 0.02725, 0.02782, 0.02842, 0.03178, 0.07552, 0.2214, 0.394, 0.5239",\
                 "0.02696, 0.0271, 0.0275, 0.02803, 0.02905, 0.04779, 0.1505, 0.2933, 0.3989, 0.4725",\
                 "0.02798, 0.02812, 0.02846, 0.0291, 0.04394, 0.1267, 0.2167, 0.2756, 0.3146, 0.3412");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006334, 0.02506, 0.06081, 0.1165, 0.1947, 0.2975, 0.4271, 0.5852, 0.7738");
          values("1.197, 1.282, 1.503, 1.827, 2.263, 2.84, 3.587, 4.525, 5.667, 7.031",\
                 "1.268, 1.353, 1.575, 1.899, 2.335, 2.912, 3.659, 4.597, 5.741, 7.104",\
                 "1.539, 1.624, 1.846, 2.169, 2.605, 3.183, 3.93, 4.868, 6.01, 7.376",\
                 "2.081, 2.165, 2.387, 2.711, 3.147, 3.725, 4.473, 5.411, 6.554, 7.918",\
                 "2.895, 2.984, 3.212, 3.541, 3.979, 4.558, 5.305, 6.243, 7.385, 8.75",\
                 "3.85, 3.953, 4.205, 4.551, 5.004, 5.587, 6.334, 7.271, 8.415, 9.777",\
                 "4.903, 5.022, 5.304, 5.674, 6.141, 6.732, 7.484, 8.424, 9.567, 10.93",\
                 "6.048, 6.183, 6.501, 6.898, 7.382, 7.985, 8.741, 9.683, 10.83, 12.19",\
                 "7.282, 7.435, 7.791, 8.222, 8.729, 9.341, 10.1, 11.04, 12.19, 13.55",\
                 "8.603, 8.774, 9.173, 9.647, 10.18, 10.8, 11.57, 12.51, 13.65, 15.02");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006334, 0.02506, 0.06081, 0.1165, 0.1947, 0.2975, 0.4271, 0.5852, 0.7738");
          values("0.7679, 0.8835, 1.259, 1.949, 3.009, 4.491, 6.439, 8.892, 11.9, 15.45",\
                 "0.838, 0.9541, 1.33, 2.019, 3.081, 4.568, 6.509, 8.961, 11.96, 15.52",\
                 "1.085, 1.2, 1.573, 2.264, 3.326, 4.815, 6.757, 9.214, 12.21, 15.77",\
                 "1.507, 1.623, 1.996, 2.685, 3.75, 5.233, 7.188, 9.644, 12.63, 16.2",\
                 "1.972, 2.094, 2.473, 3.163, 4.227, 5.712, 7.667, 10.13, 13.11, 16.68",\
                 "2.448, 2.579, 2.964, 3.655, 4.72, 6.205, 8.156, 10.62, 13.62, 17.18",\
                 "2.92, 3.062, 3.458, 4.15, 5.213, 6.7, 8.652, 11.11, 14.11, 17.67",\
                 "3.375, 3.53, 3.944, 4.638, 5.7, 7.185, 9.137, 11.59, 14.59, 18.16",\
                 "3.799, 3.971, 4.41, 5.107, 6.168, 7.651, 9.603, 12.06, 15.05, 18.62",\
                 "4.182, 4.373, 4.842, 5.548, 6.607, 8.091, 10.04, 12.5, 15.49, 19.06");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006334, 0.02506, 0.06081, 0.1165, 0.1947, 0.2975, 0.4271, 0.5852, 0.7738");
          values("0.3276, 0.403, 0.6358, 1.046, 1.682, 2.612, 3.874, 5.476, 7.436, 9.775",\
                 "0.3274, 0.4036, 0.6362, 1.042, 1.683, 2.615, 3.87, 5.476, 7.423, 9.779",\
                 "0.3274, 0.4034, 0.6356, 1.042, 1.683, 2.616, 3.871, 5.476, 7.436, 9.783",\
                 "0.329, 0.4046, 0.6372, 1.044, 1.683, 2.616, 3.87, 5.473, 7.424, 9.783",\
                 "0.3618, 0.4324, 0.6562, 1.055, 1.689, 2.618, 3.875, 5.476, 7.437, 9.768",\
                 "0.445, 0.515, 0.7262, 1.113, 1.727, 2.633, 3.879, 5.469, 7.424, 9.774",\
                 "0.538, 0.61, 0.814, 1.188, 1.784, 2.674, 3.904, 5.484, 7.434, 9.752",\
                 "0.64, 0.72, 0.924, 1.276, 1.852, 2.718, 3.93, 5.504, 7.442, 9.77",\
                 "0.748, 0.834, 1.046, 1.382, 1.932, 2.774, 3.968, 5.526, 7.468, 9.784",\
                 "0.864, 0.954, 1.182, 1.506, 2.024, 2.84, 4.006, 5.548, 7.48, 9.798");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006334, 0.02506, 0.06081, 0.1165, 0.1947, 0.2975, 0.4271, 0.5852, 0.7738");
          values("0.3634, 0.5242, 1.109, 2.246, 4.023, 6.525, 9.802, 13.92, 18.99, 25.01",\
                 "0.3638, 0.5242, 1.108, 2.253, 4.026, 6.526, 9.814, 13.95, 18.99, 25.02",\
                 "0.3644, 0.5248, 1.109, 2.249, 4.025, 6.526, 9.814, 13.95, 19.01, 25",\
                 "0.3794, 0.5342, 1.112, 2.25, 4.024, 6.529, 9.811, 13.98, 18.97, 25",\
                 "0.419, 0.5672, 1.127, 2.253, 4.03, 6.53, 9.812, 13.95, 18.98, 25",\
                 "0.4696, 0.6102, 1.147, 2.266, 4.034, 6.521, 9.813, 13.96, 19, 25.04",\
                 "0.5346, 0.6634, 1.174, 2.274, 4.044, 6.534, 9.816, 13.96, 19.02, 25.08",\
                 "0.618, 0.74, 1.216, 2.288, 4.056, 6.548, 9.816, 13.96, 19.01, 25.02",\
                 "0.708, 0.828, 1.268, 2.304, 4.068, 6.552, 9.834, 13.95, 19, 25.02",\
                 "0.804, 0.928, 1.34, 2.328, 4.068, 6.564, 9.836, 13.96, 19, 25.01");
        }
      }
    }
  }

