/*
 * 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__clkinv_8) {
    area : 39.513600 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.02753 ;
      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(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 1.54 ;
      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.01162, 0.04891, 0.1201, 0.2311, 0.3867, 0.5916, 0.8496, 1.165, 1.54");
          values("-0.001218, -0.001085, -0.0009714, -0.0009123, -0.0009061, -0.0009102, -0.0008956, -0.0009049, -0.0009405, -0.001224",\
                 "-0.002946, -0.002275, -0.001529, -0.001197, -0.001047, -0.00099, -0.0009482, -0.0009155, -0.0009576, -0.001243",\
                 "-0.005569, -0.004606, -0.003046, -0.002052, -0.001561, -0.001335, -0.00119, -0.001094, -0.001117, -0.001412",\
                 "-0.007103, -0.006384, -0.004735, -0.003265, -0.002391, -0.001897, -0.001576, -0.001385, -0.001362, -0.001681",\
                 "-0.007609, -0.007174, -0.005967, -0.004486, -0.003348, -0.002589, -0.002112, -0.001807, -0.001741, -0.002217",\
                 "-0.007448, -0.007276, -0.006539, -0.005382, -0.004204, -0.003297, -0.00266, -0.002273, -0.002264, -0.003068",\
                 "-0.006802, -0.006806, -0.006561, -0.00583, -0.004857, -0.003939, -0.003244, -0.002881, -0.003292, -0.004713",\
                 "-0.005646, -0.005825, -0.006049, -0.005808, -0.00516, -0.004412, -0.003821, -0.004148, -0.005703, -0.007578",\
                 "-0.003355, -0.00376, -0.004385, -0.004674, -0.004448, -0.00431, -0.005844, -0.008149, -0.009864, -0.01107",\
                 "0.001371, 0.0008029, -0.0002214, -0.001051, -0.003464, -0.007289, -0.009497, -0.01073, -0.01143, -0.01185");
        }

        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.01162, 0.04891, 0.1201, 0.2311, 0.3867, 0.5916, 0.8496, 1.165, 1.54");
          values("0.03422, 0.03446, 0.03477, 0.0351, 0.03515, 0.0358, 0.03736, 0.06509, 0.244, 0.6792",\
                 "0.03187, 0.03276, 0.03394, 0.03457, 0.03492, 0.03559, 0.0377, 0.06666, 0.2506, 0.6885",\
                 "0.0299, 0.03058, 0.03213, 0.03366, 0.03419, 0.03525, 0.03712, 0.07199, 0.2723, 0.7242",\
                 "0.02925, 0.02966, 0.03085, 0.03235, 0.0334, 0.03407, 0.03743, 0.08543, 0.3238, 0.7895",\
                 "0.02934, 0.0295, 0.03018, 0.03121, 0.03273, 0.03361, 0.04007, 0.1158, 0.4153, 0.8833",\
                 "0.02989, 0.02985, 0.02994, 0.03099, 0.03166, 0.03331, 0.05049, 0.1879, 0.5586, 0.9825",\
                 "0.03078, 0.03059, 0.03057, 0.0307, 0.03156, 0.03479, 0.09203, 0.3475, 0.7238, 1.027",\
                 "0.0321, 0.03177, 0.03116, 0.03092, 0.03191, 0.06377, 0.2585, 0.5509, 0.7711, 0.9242",\
                 "0.03224, 0.03172, 0.03101, 0.03131, 0.08568, 0.2584, 0.3861, 0.4657, 0.5177, 0.5526",\
                 "0.02769, 0.02693, 0.03028, 0.08798, 0.1273, 0.1489, 0.1609, 0.1684, 0.1731, 0.1765");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : negative_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.01162, 0.04891, 0.1201, 0.2311, 0.3867, 0.5916, 0.8496, 1.165, 1.54");
          values("0.1752, 0.2377, 0.456, 0.871, 1.515, 2.424, 3.615, 5.119, 6.947, 9.136",\
                 "0.2373, 0.3019, 0.522, 0.9379, 1.583, 2.491, 3.685, 5.181, 7.023, 9.208",\
                 "0.4253, 0.5196, 0.7596, 1.178, 1.825, 2.733, 3.921, 5.43, 7.261, 9.451",\
                 "0.6156, 0.7719, 1.152, 1.636, 2.285, 3.193, 4.383, 5.888, 7.724, 9.911",\
                 "0.7833, 1.011, 1.558, 2.244, 3, 3.913, 5.104, 6.61, 8.445, 10.63",\
                 "0.9165, 1.221, 1.953, 2.864, 3.86, 4.915, 6.119, 7.621, 9.456, 11.64",\
                 "1, 1.393, 2.326, 3.478, 4.735, 6.06, 7.433, 8.956, 10.79, 12.98",\
                 "1.027, 1.514, 2.667, 4.081, 5.615, 7.222, 8.885, 10.61, 12.47, 14.65",\
                 "0.991, 1.576, 2.961, 4.656, 6.479, 8.393, 10.37, 12.4, 14.48, 16.71",\
                 "0.888, 1.571, 3.206, 5.196, 7.332, 9.553, 11.86, 14.21, 16.63, 19.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.01162, 0.04891, 0.1201, 0.2311, 0.3867, 0.5916, 0.8496, 1.165, 1.54");
          values("0.2416, 0.3437, 0.6981, 1.374, 2.428, 3.897, 5.845, 8.28, 11.26, 14.85",\
                 "0.3084, 0.415, 0.7754, 1.453, 2.506, 3.979, 5.92, 8.362, 11.37, 14.91",\
                 "0.5773, 0.6909, 1.055, 1.737, 2.793, 4.269, 6.213, 8.651, 11.63, 15.22",\
                 "0.9705, 1.155, 1.598, 2.284, 3.342, 4.817, 6.759, 9.219, 12.19, 15.74",\
                 "1.438, 1.708, 2.347, 3.14, 4.2, 5.681, 7.622, 10.07, 13.07, 16.62",\
                 "1.975, 2.34, 3.199, 4.25, 5.408, 6.891, 8.836, 11.28, 14.26, 17.84",\
                 "2.583, 3.048, 4.147, 5.487, 6.926, 8.485, 10.43, 12.88, 15.88, 19.42",\
                 "3.26, 3.833, 5.187, 6.837, 8.607, 10.44, 12.44, 14.89, 17.87, 21.43",\
                 "4.006, 4.693, 6.316, 8.301, 10.42, 12.61, 14.85, 17.35, 20.34, 23.89",\
                 "4.828, 5.63, 7.536, 9.869, 12.36, 14.93, 17.55, 20.24, 23.26, 26.82");
        }

        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.01162, 0.04891, 0.1201, 0.2311, 0.3867, 0.5916, 0.8496, 1.165, 1.54");
          values("0.1773, 0.283, 0.6548, 1.37, 2.479, 4.037, 6.087, 8.664, 11.82, 15.58",\
                 "0.1771, 0.2831, 0.6564, 1.37, 2.48, 4.037, 6.087, 8.683, 11.82, 15.6",\
                 "0.2887, 0.3706, 0.6646, 1.37, 2.484, 4.044, 6.093, 8.672, 11.84, 15.57",\
                 "0.4934, 0.6196, 0.936, 1.441, 2.48, 4.039, 6.093, 8.688, 11.82, 15.58",\
                 "0.7416, 0.9172, 1.347, 1.908, 2.665, 4.052, 6.085, 8.674, 11.84, 15.59",\
                 "1.032, 1.258, 1.814, 2.534, 3.345, 4.391, 6.141, 8.675, 11.84, 15.61",\
                 "1.362, 1.645, 2.335, 3.215, 4.211, 5.296, 6.666, 8.814, 11.84, 15.6",\
                 "1.717, 2.076, 2.908, 3.964, 5.146, 6.432, 7.8, 9.53, 12.1, 15.6",\
                 "2.096, 2.536, 3.532, 4.768, 6.148, 7.642, 9.234, 10.9, 13.03, 16.05",\
                 "2.496, 3.022, 4.212, 5.638, 7.232, 8.93, 10.74, 12.66, 14.65, 17.2");
        }

        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.01162, 0.04891, 0.1201, 0.2311, 0.3867, 0.5916, 0.8496, 1.165, 1.54");
          values("0.2846, 0.4541, 1.05, 2.186, 3.96, 6.442, 9.717, 13.82, 18.86, 24.86",\
                 "0.2836, 0.4536, 1.049, 2.188, 3.96, 6.442, 9.722, 13.83, 18.86, 24.89",\
                 "0.3474, 0.4722, 1.051, 2.19, 3.961, 6.447, 9.721, 13.83, 18.86, 24.87",\
                 "0.5898, 0.726, 1.125, 2.193, 3.959, 6.443, 9.71, 13.84, 18.86, 24.85",\
                 "0.8754, 1.065, 1.536, 2.31, 3.973, 6.466, 9.721, 13.84, 18.87, 24.86",\
                 "1.202, 1.455, 2.066, 2.852, 4.121, 6.468, 9.746, 13.84, 18.88, 24.87",\
                 "1.559, 1.88, 2.654, 3.632, 4.756, 6.642, 9.756, 13.84, 18.88, 24.85",\
                 "1.952, 2.35, 3.294, 4.468, 5.784, 7.346, 9.942, 13.86, 18.89, 24.86",\
                 "2.372, 2.854, 3.982, 5.396, 6.916, 8.568, 10.7, 14.11, 18.95, 24.86",\
                 "2.806, 3.392, 4.712, 6.35, 8.12, 10.04, 12.04, 14.89, 19.16, 24.97");
        }
      }
    }
  }

