/*
 * 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_1) {
    area : 35.123200 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.002577 ;
      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.1919 ;
      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.002318, 0.006944, 0.01578, 0.02954, 0.04885, 0.07427, 0.1063, 0.1454, 0.1919");
          values("0.03059, 0.03061, 0.0307, 0.03084, 0.03099, 0.03111, 0.0312, 0.03125, 0.03124, 0.03106",\
                 "0.03052, 0.03054, 0.03063, 0.03077, 0.03092, 0.03104, 0.03113, 0.03118, 0.03116, 0.03097",\
                 "0.03036, 0.03039, 0.03047, 0.03062, 0.03077, 0.03089, 0.03097, 0.03102, 0.03098, 0.03075",\
                 "0.03025, 0.03028, 0.03037, 0.0305, 0.03065, 0.03077, 0.03085, 0.03089, 0.03079, 0.03046",\
                 "0.03019, 0.03021, 0.0303, 0.03044, 0.03058, 0.0307, 0.03077, 0.03075, 0.03051, 0.03",\
                 "0.03013, 0.03016, 0.03024, 0.03039, 0.03052, 0.03062, 0.03061, 0.03036, 0.0298, 0.02922",\
                 "0.02987, 0.02988, 0.02997, 0.03008, 0.03016, 0.03005, 0.02952, 0.02885, 0.02835, 0.02798",\
                 "0.02737, 0.02737, 0.02724, 0.0264, 0.02579, 0.02545, 0.02525, 0.02513, 0.02505, 0.025",\
                 "0.01669, 0.01671, 0.01679, 0.01689, 0.01698, 0.01705, 0.01709, 0.01712, 0.01714, 0.01715",\
                 "0.003239, 0.003239, 0.00324, 0.003238, 0.003238, 0.003239, 0.003239, 0.003239, 0.003239, 0.003239");
        }

        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.002318, 0.006944, 0.01578, 0.02954, 0.04885, 0.07427, 0.1063, 0.1454, 0.1919");
          values("-0.02784, -0.02779, -0.0277, -0.02754, -0.02735, -0.0271, -0.0237, -0.001966, 0.04531, 0.09329",\
                 "-0.02785, -0.0278, -0.02771, -0.02755, -0.02735, -0.02705, -0.02352, -0.001101, 0.04634, 0.09365",\
                 "-0.02793, -0.02788, -0.02779, -0.02763, -0.02743, -0.0271, -0.02278, 0.001885, 0.0496, 0.0946",\
                 "-0.02806, -0.02803, -0.02792, -0.02777, -0.02757, -0.0271, -0.02121, 0.007822, 0.05491, 0.09546",\
                 "-0.02818, -0.02814, -0.02805, -0.02788, -0.02769, -0.02694, -0.01735, 0.01699, 0.06071, 0.09487",\
                 "-0.02825, -0.02822, -0.02811, -0.02796, -0.02775, -0.02597, -0.00973, 0.02832, 0.06451, 0.09082",\
                 "-0.02829, -0.02824, -0.02814, -0.02799, -0.02764, -0.02232, 0.003569, 0.03756, 0.06278, 0.08054",\
                 "-0.02828, -0.02825, -0.02814, -0.02795, -0.02626, -0.01035, 0.01681, 0.03705, 0.05075, 0.06027",\
                 "-0.02837, -0.02833, -0.02823, -0.0269, -0.01469, 0.0009373, 0.01108, 0.0176, 0.0219, 0.02485",\
                 "-0.03337, -0.03317, -0.03254, -0.032, -0.03169, -0.03153, -0.03144, -0.03139, -0.03136, -0.03133");
        }
      }

      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.002318, 0.006944, 0.01578, 0.02954, 0.04885, 0.07427, 0.1063, 0.1454, 0.1919");
          values("9.248, 9.41, 9.847, 10.45, 11.15, 11.96, 12.87, 13.92, 15.12, 16.51",\
                 "9.313, 9.475, 9.913, 10.51, 11.22, 12.02, 12.94, 13.98, 15.19, 16.58",\
                 "9.57, 9.732, 10.17, 10.77, 11.48, 12.28, 13.19, 14.24, 15.44, 16.83",\
                 "10.1, 10.26, 10.7, 11.3, 12, 12.81, 13.72, 14.77, 15.97, 17.36",\
                 "10.94, 11.1, 11.54, 12.14, 12.84, 13.65, 14.56, 15.61, 16.81, 18.2",\
                 "12.12, 12.28, 12.72, 13.32, 14.02, 14.83, 15.74, 16.79, 18, 19.38",\
                 "13.57, 13.74, 14.17, 14.77, 15.48, 16.28, 17.2, 18.24, 19.45, 20.83",\
                 "15.19, 15.36, 15.79, 16.39, 17.1, 17.9, 18.82, 19.87, 21.07, 22.46",\
                 "16.94, 17.1, 17.54, 18.14, 18.85, 19.65, 20.57, 21.61, 22.82, 24.2",\
                 "18.82, 18.98, 19.42, 20.02, 20.73, 21.53, 22.45, 23.49, 24.7, 26.09");
        }

        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.002318, 0.006944, 0.01578, 0.02954, 0.04885, 0.07427, 0.1063, 0.1454, 0.1919");
          values("7.985, 8.122, 8.539, 9.248, 10.31, 11.78, 13.71, 16.14, 19.1, 22.62",\
                 "8.05, 8.186, 8.604, 9.312, 10.37, 11.84, 13.77, 16.2, 19.16, 22.69",\
                 "8.255, 8.392, 8.808, 9.517, 10.58, 12.05, 13.98, 16.41, 19.36, 22.89",\
                 "8.602, 8.738, 9.155, 9.864, 10.92, 12.4, 14.33, 16.75, 19.71, 23.24",\
                 "8.979, 9.116, 9.533, 10.24, 11.3, 12.77, 14.7, 17.13, 20.09, 23.61",\
                 "9.327, 9.463, 9.881, 10.59, 11.65, 13.12, 15.05, 17.48, 20.44, 23.97",\
                 "9.625, 9.762, 10.18, 10.89, 11.95, 13.42, 15.35, 17.78, 20.74, 24.26",\
                 "9.857, 9.993, 10.41, 11.12, 12.18, 13.65, 15.58, 18.01, 20.97, 24.49",\
                 "10.01, 10.15, 10.57, 11.28, 12.34, 13.81, 15.74, 18.16, 21.13, 24.65",\
                 "10.08, 10.21, 10.63, 11.34, 12.4, 13.87, 15.8, 18.23, 21.19, 24.71");
        }

        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.002318, 0.006944, 0.01578, 0.02954, 0.04885, 0.07427, 0.1063, 0.1454, 0.1919");
          values("1.206, 1.315, 1.635, 2.133, 2.81, 3.678, 4.79, 6.202, 7.974, 10.16",\
                 "1.208, 1.318, 1.636, 2.134, 2.81, 3.68, 4.792, 6.206, 7.976, 10.15",\
                 "1.207, 1.314, 1.636, 2.134, 2.808, 3.676, 4.798, 6.204, 7.98, 10.14",\
                 "1.208, 1.316, 1.636, 2.136, 2.81, 3.674, 4.792, 6.198, 7.982, 10.15",\
                 "1.208, 1.316, 1.636, 2.136, 2.81, 3.676, 4.796, 6.206, 7.982, 10.14",\
                 "1.206, 1.316, 1.636, 2.134, 2.81, 3.676, 4.792, 6.202, 7.982, 10.14",\
                 "1.208, 1.316, 1.634, 2.132, 2.806, 3.678, 4.79, 6.204, 7.976, 10.15",\
                 "1.208, 1.314, 1.634, 2.132, 2.808, 3.672, 4.792, 6.21, 7.976, 10.15",\
                 "1.206, 1.314, 1.634, 2.138, 2.808, 3.674, 4.8, 6.204, 7.98, 10.14",\
                 "1.206, 1.314, 1.634, 2.132, 2.808, 3.68, 4.792, 6.212, 7.98, 10.15");
        }

        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.002318, 0.006944, 0.01578, 0.02954, 0.04885, 0.07427, 0.1063, 0.1454, 0.1919");
          values("0.8216, 0.9706, 1.497, 2.551, 4.277, 6.726, 9.974, 14.06, 19.06, 25",\
                 "0.8222, 0.9722, 1.495, 2.552, 4.276, 6.73, 9.972, 14.06, 19.04, 25.03",\
                 "0.8204, 0.971, 1.496, 2.553, 4.276, 6.728, 9.972, 14.06, 19.03, 25.02",\
                 "0.8208, 0.9714, 1.497, 2.552, 4.276, 6.734, 9.966, 14.06, 19.03, 24.99",\
                 "0.82, 0.97, 1.496, 2.552, 4.278, 6.726, 9.972, 14.05, 19.02, 25",\
                 "0.822, 0.972, 1.502, 2.552, 4.276, 6.724, 9.972, 14.05, 19.02, 25",\
                 "0.822, 0.972, 1.502, 2.554, 4.278, 6.726, 9.974, 14.06, 19.02, 24.99",\
                 "0.82, 0.972, 1.496, 2.554, 4.272, 6.732, 9.968, 14.04, 19.06, 25.01",\
                 "0.822, 0.97, 1.5, 2.552, 4.272, 6.72, 9.956, 14.05, 19.05, 25",\
                 "0.822, 0.972, 1.496, 2.552, 4.27, 6.724, 9.966, 14.05, 19.04, 24.97");
        }
      }
    }
  }

