/*
 * 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__dlyd_4) {
    area : 87.808000 ;

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

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

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

    pin(Z) {
      direction : output ;
      function : "I" ;
      max_capacitance : 0.6574 ;
      max_transition : 21 ;
      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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.005531, 0.02143, 0.0518, 0.09912, 0.1655, 0.2529, 0.3629, 0.4973, 0.6574");
          values("0.01647, 0.01666, 0.01703, 0.01744, 0.01787, 0.01829, 0.01868, 0.019, 0.01926, 0.01946",\
                 "0.01615, 0.01633, 0.0167, 0.01711, 0.01754, 0.01796, 0.01835, 0.01867, 0.01893, 0.01913",\
                 "0.01509, 0.01525, 0.0156, 0.01601, 0.01642, 0.01684, 0.01723, 0.01755, 0.01781, 0.01801",\
                 "0.01325, 0.01337, 0.01364, 0.01401, 0.01441, 0.01481, 0.01519, 0.01551, 0.01576, 0.01596",\
                 "0.0109, 0.01094, 0.01109, 0.01133, 0.01163, 0.01196, 0.01227, 0.01254, 0.01275, 0.01291",\
                 "0.007659, 0.007682, 0.007763, 0.007901, 0.008084, 0.008268, 0.008416, 0.008528, 0.008607, 0.008669",\
                 "0.0003467, 0.0003434, 0.0003321, 0.0003175, 0.0002997, 0.0002835, 0.0002689, 0.0002592, 0.0002527, 0.0002462",\
                 "-0.009023, -0.009023, -0.009023, -0.009023, -0.009025, -0.009025, -0.009023, -0.009025, -0.009025, -0.009027",\
                 "-0.02175, -0.02176, -0.02176, -0.02176, -0.02176, -0.02176, -0.02175, -0.02175, -0.02175, -0.02175",\
                 "-0.03606, -0.03606, -0.03606, -0.03605, -0.03606, -0.03606, -0.03606, -0.03606, -0.03606, -0.03606");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.005531, 0.02143, 0.0518, 0.09912, 0.1655, 0.2529, 0.3629, 0.4973, 0.6574");
          values("0.01002, 0.01016, 0.01046, 0.01145, 0.04778, 0.1118, 0.1541, 0.1814, 0.1996, 0.2122",\
                 "0.01001, 0.01014, 0.01044, 0.01176, 0.0518, 0.1117, 0.1509, 0.1762, 0.193, 0.2045",\
                 "0.009888, 0.01002, 0.01028, 0.01407, 0.06236, 0.1086, 0.138, 0.1568, 0.1693, 0.1778",\
                 "0.009503, 0.009618, 0.009874, 0.02968, 0.06645, 0.08994, 0.1044, 0.1135, 0.1196, 0.1237",\
                 "0.007107, 0.007035, 0.01485, 0.02529, 0.03181, 0.03552, 0.03765, 0.03892, 0.03981, 0.04036",\
                 "-0.01566, -0.01574, -0.01584, -0.01589, -0.01591, -0.01592, -0.01593, -0.01594, -0.01594, -0.01594",\
                 "-0.02359, -0.02359, -0.02359, -0.02359, -0.02359, -0.02359, -0.02359, -0.02359, -0.02359, -0.02359",\
                 "-0.02945, -0.02945, -0.02945, -0.02945, -0.02945, -0.02945, -0.02945, -0.02945, -0.02945, -0.02945",\
                 "-0.03813, -0.03813, -0.03813, -0.03813, -0.03813, -0.03813, -0.03813, -0.03813, -0.03813, -0.03813",\
                 "-0.0463, -0.0463, -0.0463, -0.0463, -0.0463, -0.0463, -0.0463, -0.0463, -0.0463, -0.0463");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.005531, 0.02143, 0.0518, 0.09912, 0.1655, 0.2529, 0.3629, 0.4973, 0.6574");
          values("27.81, 28.09, 28.74, 29.53, 30.39, 31.29, 32.24, 33.26, 34.36, 35.55",\
                 "27.88, 28.16, 28.81, 29.61, 30.46, 31.36, 32.31, 33.33, 34.43, 35.62",\
                 "28.13, 28.41, 29.07, 29.86, 30.71, 31.61, 32.57, 33.59, 34.68, 35.88",\
                 "28.65, 28.93, 29.58, 30.38, 31.23, 32.13, 33.09, 34.1, 35.2, 36.39",\
                 "29.47, 29.75, 30.41, 31.2, 32.05, 32.96, 33.91, 34.92, 36.02, 37.22",\
                 "30.64, 30.91, 31.57, 32.36, 33.22, 34.12, 35.07, 36.09, 37.18, 38.38",\
                 "32.15, 32.43, 33.09, 33.88, 34.73, 35.63, 36.59, 37.61, 38.7, 39.9",\
                 "33.99, 34.26, 34.92, 35.71, 36.57, 37.47, 38.42, 39.44, 40.53, 41.73",\
                 "36.07, 36.34, 37, 37.79, 38.65, 39.55, 40.5, 41.52, 42.61, 43.81",\
                 "38.36, 38.64, 39.29, 40.09, 40.95, 41.84, 42.8, 43.82, 44.91, 46.11");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.005531, 0.02143, 0.0518, 0.09912, 0.1655, 0.2529, 0.3629, 0.4973, 0.6574");
          values("21.34, 21.51, 21.94, 22.61, 23.54, 24.8, 26.44, 28.5, 31.01, 34",\
                 "21.4, 21.57, 22.01, 22.67, 23.61, 24.86, 26.5, 28.56, 31.07, 34.06",\
                 "21.61, 21.77, 22.21, 22.87, 23.81, 25.07, 26.7, 28.76, 31.27, 34.26",\
                 "21.98, 22.14, 22.58, 23.25, 24.18, 25.44, 27.08, 29.13, 31.64, 34.63",\
                 "22.45, 22.61, 23.05, 23.72, 24.65, 25.91, 27.55, 29.61, 32.11, 35.1",\
                 "22.97, 23.13, 23.57, 24.24, 25.17, 26.42, 28.06, 30.12, 32.63, 35.62",\
                 "23.51, 23.68, 24.12, 24.78, 25.71, 26.97, 28.61, 30.67, 33.18, 36.17",\
                 "24.09, 24.25, 24.69, 25.36, 26.29, 27.55, 29.19, 31.25, 33.76, 36.75",\
                 "24.68, 24.85, 25.29, 25.95, 26.88, 28.14, 29.78, 31.84, 34.35, 37.33",\
                 "25.29, 25.45, 25.89, 26.55, 27.48, 28.74, 30.38, 32.44, 34.95, 37.94");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.005531, 0.02143, 0.0518, 0.09912, 0.1655, 0.2529, 0.3629, 0.4973, 0.6574");
          values("2.248, 2.364, 2.69, 3.16, 3.744, 4.446, 5.286, 6.302, 7.528, 8.978",\
                 "2.25, 2.364, 2.692, 3.16, 3.744, 4.444, 5.286, 6.304, 7.516, 8.978",\
                 "2.248, 2.366, 2.69, 3.162, 3.748, 4.444, 5.286, 6.302, 7.51, 8.962",\
                 "2.248, 2.366, 2.694, 3.16, 3.744, 4.446, 5.288, 6.304, 7.512, 8.982",\
                 "2.25, 2.368, 2.694, 3.16, 3.746, 4.444, 5.286, 6.3, 7.514, 8.982",\
                 "2.25, 2.368, 2.694, 3.162, 3.748, 4.446, 5.286, 6.302, 7.512, 8.97",\
                 "2.254, 2.366, 2.694, 3.162, 3.746, 4.444, 5.286, 6.304, 7.516, 8.98",\
                 "2.248, 2.366, 2.69, 3.16, 3.744, 4.446, 5.29, 6.306, 7.508, 8.98",\
                 "2.25, 2.364, 2.692, 3.164, 3.744, 4.446, 5.286, 6.302, 7.51, 8.982",\
                 "2.252, 2.366, 2.696, 3.162, 3.744, 4.444, 5.286, 6.302, 7.516, 8.98");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.005531, 0.02143, 0.0518, 0.09912, 0.1655, 0.2529, 0.3629, 0.4973, 0.6574");
          values("0.734, 0.888, 1.36, 2.232, 3.63, 5.656, 8.374, 11.8, 15.99, 21",\
                 "0.734, 0.888, 1.362, 2.232, 3.632, 5.664, 8.388, 11.82, 16.01, 21.02",\
                 "0.734, 0.886, 1.36, 2.232, 3.628, 5.668, 8.382, 11.8, 16, 21.02",\
                 "0.734, 0.888, 1.362, 2.232, 3.628, 5.666, 8.378, 11.8, 15.99, 21.01",\
                 "0.734, 0.886, 1.36, 2.23, 3.632, 5.668, 8.376, 11.8, 15.99, 21",\
                 "0.734, 0.888, 1.36, 2.232, 3.632, 5.66, 8.378, 11.82, 15.99, 20.99",\
                 "0.736, 0.888, 1.36, 2.228, 3.632, 5.658, 8.378, 11.8, 16.01, 21",\
                 "0.734, 0.888, 1.36, 2.23, 3.628, 5.666, 8.37, 11.8, 16, 20.99",\
                 "0.734, 0.888, 1.362, 2.232, 3.632, 5.658, 8.386, 11.8, 16, 21.03",\
                 "0.734, 0.888, 1.36, 2.23, 3.63, 5.658, 8.386, 11.82, 15.99, 20.99");
        }
      }
    }
  }

