/*
 * 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_3) {
    area : 17.561600 ;

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

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

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

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

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

    pin(I) {
      capacitance : 0.01153 ;
      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 : 1.04 ;
      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.008173, 0.03335, 0.08143, 0.1563, 0.2614, 0.3998, 0.574, 0.7867, 1.04");
          values("-0.003129, -0.002345, -0.001824, -0.001701, -0.001555, -0.001547, -0.001498, -0.001484, -0.001536, -0.001642",\
                 "-0.006348, -0.004797, -0.003101, -0.002333, -0.001921, -0.00177, -0.00168, -0.001642, -0.00159, -0.001708",\
                 "-0.005419, -0.005118, -0.003944, -0.003042, -0.002452, -0.00208, -0.001941, -0.001765, -0.001726, -0.001821",\
                 "0.006795, 0.004443, 0.001365, -3.822e-05, -0.0006857, -0.0009997, -0.001162, -0.001262, -0.001361, -0.001596",\
                 "0.03126, 0.02629, 0.01746, 0.01075, 0.006695, 0.004087, 0.002473, 0.001417, 0.000676, -6.003e-05",\
                 "0.06876, 0.06142, 0.04631, 0.03273, 0.0228, 0.01619, 0.01158, 0.008392, 0.006075, 0.004108",\
                 "0.1196, 0.1105, 0.08938, 0.06794, 0.0508, 0.03816, 0.02884, 0.02207, 0.01693, 0.01273",\
                 "0.1849, 0.174, 0.1477, 0.1183, 0.09284, 0.07218, 0.0567, 0.04476, 0.03548, 0.0275",\
                 "0.2653, 0.2532, 0.2222, 0.1847, 0.15, 0.1211, 0.09752, 0.07866, 0.06337, 0.05041",\
                 "0.3618, 0.3481, 0.3131, 0.2684, 0.2242, 0.1854, 0.1531, 0.1259, 0.1024, 0.08262");
        }

        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.008173, 0.03335, 0.08143, 0.1563, 0.2614, 0.3998, 0.574, 0.7867, 1.04");
          values("0.08585, 0.08672, 0.08737, 0.0878, 0.0885, 0.08925, 0.0904, 0.09515, 0.1457, 0.4128",\
                 "0.08315, 0.0845, 0.0862, 0.08765, 0.08832, 0.09099, 0.0907, 0.09939, 0.1472, 0.4182",\
                 "0.08737, 0.08668, 0.08659, 0.08723, 0.08811, 0.08943, 0.0925, 0.09597, 0.1536, 0.4401",\
                 "0.1032, 0.09962, 0.09463, 0.09179, 0.09108, 0.0918, 0.09334, 0.09748, 0.1704, 0.4871",\
                 "0.1313, 0.125, 0.1137, 0.106, 0.1001, 0.0975, 0.09688, 0.1054, 0.1948, 0.5775",\
                 "0.1725, 0.1642, 0.1467, 0.1312, 0.1204, 0.113, 0.1076, 0.1193, 0.2405, 0.7234",\
                 "0.2282, 0.2177, 0.1944, 0.1704, 0.1523, 0.1388, 0.129, 0.1494, 0.3384, 0.9674",\
                 "0.2993, 0.2872, 0.2585, 0.2266, 0.199, 0.1784, 0.165, 0.2143, 0.5376, 1.365",\
                 "0.3868, 0.3731, 0.3395, 0.2997, 0.2625, 0.2325, 0.2279, 0.373, 0.9418, 1.926",\
                 "0.4917, 0.4766, 0.4383, 0.3906, 0.3439, 0.3079, 0.372, 0.8032, 1.612, 2.457");
        }
      }

      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.008173, 0.03335, 0.08143, 0.1563, 0.2614, 0.3998, 0.574, 0.7867, 1.04");
          values("0.09606, 0.1488, 0.3309, 0.6765, 1.215, 1.973, 2.966, 4.221, 5.744, 7.564",\
                 "0.1211, 0.175, 0.3586, 0.7051, 1.244, 2, 2.997, 4.247, 5.78, 7.592",\
                 "0.1711, 0.2548, 0.4617, 0.8088, 1.349, 2.104, 3.099, 4.347, 5.884, 7.709",\
                 "0.2001, 0.3174, 0.6138, 1.012, 1.55, 2.305, 3.298, 4.55, 6.082, 7.905",\
                 "0.207, 0.359, 0.7378, 1.258, 1.869, 2.623, 3.614, 4.866, 6.388, 8.216",\
                 "0.1888, 0.376, 0.8365, 1.47, 2.227, 3.071, 4.063, 5.31, 6.836, 8.657",\
                 "0.1425, 0.3653, 0.9127, 1.653, 2.545, 3.555, 4.654, 5.904, 7.425, 9.241",\
                 "0.0676, 0.3235, 0.9576, 1.809, 2.829, 3.996, 5.276, 6.647, 8.174, 9.987",\
                 "-0.0399, 0.2523, 0.9714, 1.935, 3.084, 4.395, 5.85, 7.417, 9.08, 10.9",\
                 "-0.1824, 0.1468, 0.9501, 2.029, 3.304, 4.761, 6.382, 8.142, 10.01, 11.98");
        }

        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.008173, 0.03335, 0.08143, 0.1563, 0.2614, 0.3998, 0.574, 0.7867, 1.04");
          values("0.09052, 0.1513, 0.36, 0.7574, 1.376, 2.243, 3.386, 4.822, 6.58, 8.675",\
                 "0.1227, 0.1843, 0.3951, 0.7934, 1.412, 2.28, 3.423, 4.865, 6.614, 8.706",\
                 "0.2153, 0.3027, 0.5244, 0.9222, 1.542, 2.409, 3.553, 4.991, 6.747, 8.835",\
                 "0.3297, 0.4511, 0.7574, 1.176, 1.792, 2.66, 3.802, 5.241, 6.997, 9.083",\
                 "0.4666, 0.6252, 1.016, 1.552, 2.192, 3.054, 4.193, 5.634, 7.381, 9.477",\
                 "0.6283, 0.8244, 1.302, 1.955, 2.732, 3.619, 4.752, 6.186, 7.941, 10.02",\
                 "0.8157, 1.05, 1.62, 2.385, 3.306, 4.339, 5.495, 6.92, 8.672, 10.75",\
                 "1.031, 1.305, 1.969, 2.848, 3.903, 5.104, 6.412, 7.859, 9.601, 11.68",\
                 "1.274, 1.59, 2.347, 3.349, 4.532, 5.889, 7.386, 8.984, 10.74, 12.82",\
                 "1.549, 1.905, 2.759, 3.886, 5.204, 6.709, 8.382, 10.19, 12.09, 14.18");
        }

        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.008173, 0.03335, 0.08143, 0.1563, 0.2614, 0.3998, 0.574, 0.7867, 1.04");
          values("0.09495, 0.183, 0.4926, 1.083, 2.011, 3.309, 5.013, 7.169, 9.773, 12.89",\
                 "0.09598, 0.1831, 0.4924, 1.083, 2.009, 3.303, 5.019, 7.157, 9.796, 12.89",\
                 "0.1751, 0.2613, 0.5049, 1.084, 2.011, 3.303, 5.008, 7.147, 9.789, 12.92",\
                 "0.276, 0.3945, 0.6962, 1.14, 2.007, 3.301, 5.012, 7.159, 9.788, 12.91",\
                 "0.4026, 0.5522, 0.9316, 1.456, 2.137, 3.306, 5.004, 7.155, 9.767, 12.91",\
                 "0.5466, 0.738, 1.191, 1.837, 2.588, 3.533, 5.031, 7.15, 9.777, 12.89",\
                 "0.709, 0.9432, 1.487, 2.215, 3.121, 4.13, 5.374, 7.22, 9.764, 12.9",\
                 "0.886, 1.164, 1.81, 2.636, 3.666, 4.847, 6.118, 7.692, 9.91, 12.88",\
                 "1.085, 1.409, 2.159, 3.104, 4.236, 5.581, 7.036, 8.592, 10.52, 13.14",\
                 "1.304, 1.669, 2.54, 3.602, 4.846, 6.308, 7.952, 9.724, 11.59, 13.89");
        }

        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.008173, 0.03335, 0.08143, 0.1563, 0.2614, 0.3998, 0.574, 0.7867, 1.04");
          values("0.1177, 0.222, 0.5894, 1.288, 2.377, 3.908, 5.919, 8.479, 11.55, 15.23",\
                 "0.119, 0.222, 0.588, 1.289, 2.378, 3.916, 5.923, 8.479, 11.55, 15.25",\
                 "0.1976, 0.29, 0.5932, 1.29, 2.379, 3.911, 5.934, 8.456, 11.57, 15.23",\
                 "0.301, 0.4232, 0.7448, 1.307, 2.381, 3.911, 5.93, 8.458, 11.57, 15.28",\
                 "0.4302, 0.5836, 0.984, 1.545, 2.428, 3.91, 5.928, 8.474, 11.57, 15.27",\
                 "0.5768, 0.771, 1.242, 1.923, 2.745, 3.99, 5.925, 8.471, 11.58, 15.28",\
                 "0.7436, 0.978, 1.533, 2.313, 3.278, 4.395, 6.049, 8.467, 11.56, 15.26",\
                 "0.9324, 1.206, 1.861, 2.728, 3.831, 5.085, 6.545, 8.652, 11.58, 15.26",\
                 "1.144, 1.456, 2.214, 3.192, 4.396, 5.824, 7.372, 9.232, 11.82, 15.29",\
                 "1.374, 1.734, 2.59, 3.69, 4.998, 6.574, 8.324, 10.2, 12.51, 15.6");
        }
      }
    }
  }

