/*
 * 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_2) {
    area : 13.171200 ;

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

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

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

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

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

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

    pin(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.6938 ;
      max_transition : 15.6 ;
      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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005782, 0.02257, 0.05462, 0.1046, 0.1746, 0.2668, 0.383, 0.5248, 0.6938");
          values("-0.004062, -0.003509, -0.003161, -0.003059, -0.002987, -0.002954, -0.002939, -0.002939, -0.002953, -0.003013",\
                 "-0.006198, -0.005207, -0.004064, -0.003525, -0.00333, -0.003184, -0.003118, -0.003136, -0.003094, -0.003165",\
                 "-0.005558, -0.005357, -0.004653, -0.003984, -0.003577, -0.003386, -0.003318, -0.003236, -0.003198, -0.003258",\
                 "0.002614, 0.001027, -0.0009798, -0.001992, -0.002404, -0.002637, -0.002762, -0.002848, -0.002911, -0.003042",\
                 "0.01903, 0.01573, 0.009745, 0.005246, 0.002489, 0.0007928, -0.0002996, -0.001012, -0.001526, -0.001984",\
                 "0.04401, 0.03916, 0.02904, 0.01993, 0.01335, 0.00884, 0.005736, 0.003621, 0.002109, 0.0008252",\
                 "0.07804, 0.07189, 0.05788, 0.04353, 0.03199, 0.02345, 0.01727, 0.01274, 0.009352, 0.006582",\
                 "0.1216, 0.1144, 0.09685, 0.07717, 0.05998, 0.04639, 0.03588, 0.02787, 0.02169, 0.01653",\
                 "0.1753, 0.1671, 0.1465, 0.1216, 0.09825, 0.07879, 0.06311, 0.05053, 0.04054, 0.03181",\
                 "0.2395, 0.2306, 0.2073, 0.1774, 0.148, 0.122, 0.09998, 0.0822, 0.06688, 0.05381");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005782, 0.02257, 0.05462, 0.1046, 0.1746, 0.2668, 0.383, 0.5248, 0.6938");
          values("0.05532, 0.05597, 0.0564, 0.05673, 0.05733, 0.05766, 0.05854, 0.05622, 0.09171, 0.2759",\
                 "0.05324, 0.05447, 0.05569, 0.05529, 0.05547, 0.05481, 0.05523, 0.05825, 0.09418, 0.2776",\
                 "0.0564, 0.05559, 0.0552, 0.05547, 0.05568, 0.05559, 0.05571, 0.05834, 0.09777, 0.2948",\
                 "0.0669, 0.06445, 0.06052, 0.05829, 0.05736, 0.05643, 0.05553, 0.05935, 0.1056, 0.3259",\
                 "0.08557, 0.08131, 0.07381, 0.06729, 0.063, 0.06075, 0.05932, 0.06399, 0.122, 0.3841",\
                 "0.1132, 0.1074, 0.09566, 0.08499, 0.07599, 0.0702, 0.06566, 0.07322, 0.1556, 0.4826",\
                 "0.1504, 0.1433, 0.1275, 0.1116, 0.09831, 0.08724, 0.08003, 0.09274, 0.2217, 0.6474",\
                 "0.1978, 0.1896, 0.1702, 0.1491, 0.1296, 0.1137, 0.1031, 0.1366, 0.3588, 0.9125",\
                 "0.2563, 0.247, 0.2243, 0.1972, 0.1727, 0.151, 0.1448, 0.244, 0.6295, 1.287",\
                 "0.3262, 0.316, 0.2901, 0.2581, 0.2267, 0.2025, 0.2462, 0.5344, 1.073, 1.637");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005782, 0.02257, 0.05462, 0.1046, 0.1746, 0.2668, 0.383, 0.5248, 0.6938");
          values("0.09461, 0.1474, 0.3295, 0.675, 1.215, 1.97, 2.965, 4.213, 5.741, 7.57",\
                 "0.1197, 0.1736, 0.3571, 0.7035, 1.242, 1.996, 2.989, 4.242, 5.769, 7.591",\
                 "0.169, 0.253, 0.4603, 0.8071, 1.346, 2.1, 3.094, 4.346, 5.874, 7.695",\
                 "0.1967, 0.3147, 0.612, 1.01, 1.547, 2.302, 3.294, 4.543, 6.07, 7.893",\
                 "0.2023, 0.3555, 0.7356, 1.256, 1.867, 2.619, 3.61, 4.859, 6.385, 8.205",\
                 "0.1826, 0.3714, 0.8345, 1.467, 2.224, 3.068, 4.059, 5.304, 6.827, 8.647",\
                 "0.1362, 0.3587, 0.9088, 1.65, 2.541, 3.551, 4.65, 5.898, 7.418, 9.233",\
                 "0.06, 0.3173, 0.9526, 1.804, 2.825, 3.992, 5.272, 6.641, 8.169, 9.976",\
                 "-0.0485, 0.2452, 0.9653, 1.932, 3.08, 4.391, 5.846, 7.413, 9.076, 10.9",\
                 "-0.1925, 0.1391, 0.9421, 2.026, 3.299, 4.756, 6.378, 8.134, 10.01, 11.97");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005782, 0.02257, 0.05462, 0.1046, 0.1746, 0.2668, 0.383, 0.5248, 0.6938");
          values("0.08909, 0.1499, 0.3583, 0.7552, 1.373, 2.239, 3.38, 4.816, 6.573, 8.662",\
                 "0.1214, 0.1829, 0.3938, 0.7912, 1.409, 2.276, 3.417, 4.857, 6.611, 8.699",\
                 "0.2131, 0.301, 0.5231, 0.9205, 1.539, 2.407, 3.547, 4.986, 6.742, 8.833",\
                 "0.3261, 0.4485, 0.7551, 1.175, 1.79, 2.656, 3.795, 5.233, 6.989, 9.08",\
                 "0.4622, 0.6214, 1.014, 1.549, 2.189, 3.051, 4.189, 5.623, 7.378, 9.47",\
                 "0.6228, 0.8194, 1.299, 1.952, 2.728, 3.615, 4.746, 6.177, 7.929, 10.01",\
                 "0.8095, 1.045, 1.615, 2.382, 3.302, 4.335, 5.49, 6.914, 8.66, 10.74",\
                 "1.023, 1.299, 1.963, 2.845, 3.898, 5.099, 6.407, 7.851, 9.59, 11.67",\
                 "1.266, 1.582, 2.342, 3.345, 4.53, 5.884, 7.381, 8.977, 10.74, 12.8",\
                 "1.54, 1.898, 2.752, 3.879, 5.198, 6.704, 8.375, 10.18, 12.08, 14.17");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005782, 0.02257, 0.05462, 0.1046, 0.1746, 0.2668, 0.383, 0.5248, 0.6938");
          values("0.09296, 0.1809, 0.4908, 1.08, 2.009, 3.306, 5.013, 7.151, 9.768, 12.92",\
                 "0.09428, 0.1819, 0.4918, 1.083, 2.003, 3.296, 4.996, 7.137, 9.754, 12.87",\
                 "0.1742, 0.2604, 0.5037, 1.083, 2.004, 3.295, 4.995, 7.137, 9.754, 12.87",\
                 "0.2732, 0.3924, 0.696, 1.139, 2.003, 3.295, 4.996, 7.139, 9.754, 12.87",\
                 "0.4006, 0.5516, 0.9318, 1.457, 2.135, 3.304, 4.994, 7.138, 9.753, 12.87",\
                 "0.5422, 0.7366, 1.188, 1.829, 2.587, 3.532, 5.026, 7.138, 9.754, 12.87",\
                 "0.7044, 0.9414, 1.482, 2.215, 3.122, 4.128, 5.369, 7.219, 9.755, 12.87",\
                 "0.8818, 1.164, 1.81, 2.637, 3.666, 4.845, 6.12, 7.689, 9.912, 12.88",\
                 "1.083, 1.406, 2.16, 3.103, 4.234, 5.569, 7.038, 8.588, 10.52, 13.13",\
                 "1.297, 1.67, 2.537, 3.606, 4.842, 6.312, 7.954, 9.726, 11.58, 13.88");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005782, 0.02257, 0.05462, 0.1046, 0.1746, 0.2668, 0.383, 0.5248, 0.6938");
          values("0.1149, 0.2199, 0.5861, 1.284, 2.373, 3.91, 5.906, 8.458, 11.56, 15.26",\
                 "0.1175, 0.2198, 0.5853, 1.285, 2.375, 3.906, 5.927, 8.463, 11.57, 15.25",\
                 "0.1957, 0.2885, 0.5907, 1.287, 2.379, 3.91, 5.927, 8.467, 11.56, 15.26",\
                 "0.2996, 0.4212, 0.7434, 1.306, 2.378, 3.912, 5.927, 8.466, 11.56, 15.26",\
                 "0.427, 0.5834, 0.9818, 1.541, 2.419, 3.91, 5.924, 8.467, 11.56, 15.26",\
                 "0.5742, 0.7684, 1.239, 1.924, 2.744, 3.989, 5.927, 8.467, 11.57, 15.26",\
                 "0.7394, 0.975, 1.536, 2.311, 3.279, 4.395, 6.049, 8.467, 11.56, 15.26",\
                 "0.9272, 1.202, 1.861, 2.732, 3.831, 5.088, 6.543, 8.644, 11.57, 15.25",\
                 "1.136, 1.454, 2.212, 3.191, 4.396, 5.83, 7.378, 9.234, 11.82, 15.29",\
                 "1.366, 1.73, 2.586, 3.688, 5.004, 6.57, 8.326, 10.2, 12.51, 15.6");
        }
      }
    }
  }

