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

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

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

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

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

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

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

    pin(ZN) {
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.7426 ;
      max_transition : 5 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.006118, 0.02408, 0.05839, 0.1118, 0.1868, 0.2855, 0.4099, 0.5616, 0.7426");
          values("-0.01741, -0.01497, -0.01175, -0.01065, -0.009908, -0.009644, -0.0095, -0.009437, -0.009323, -0.009331",\
                 "-0.02123, -0.01873, -0.0147, -0.01217, -0.01094, -0.01019, -0.009832, -0.009628, -0.009503, -0.0094",\
                 "-0.01328, -0.01371, -0.01281, -0.0116, -0.01076, -0.01016, -0.009836, -0.00962, -0.009568, -0.009483",\
                 "0.0239, 0.01847, 0.009628, 0.003323, -0.0004955, -0.003187, -0.004905, -0.005994, -0.006733, -0.007286",\
                 "0.0943, 0.08457, 0.06357, 0.04397, 0.03003, 0.01976, 0.01282, 0.007556, 0.004005, 0.001211",\
                 "0.2005, 0.1869, 0.1535, 0.1183, 0.08986, 0.06762, 0.05108, 0.03847, 0.0289, 0.02168",\
                 "0.3443, 0.3271, 0.2836, 0.2315, 0.1853, 0.1469, 0.1171, 0.09359, 0.07512, 0.0602",\
                 "0.5282, 0.5086, 0.4553, 0.3876, 0.3218, 0.2654, 0.2183, 0.18, 0.149, 0.1236",\
                 "0.7545, 0.7321, 0.6714, 0.5891, 0.5039, 0.4264, 0.3593, 0.3035, 0.2565, 0.2177",\
                 "1.025, 1.001, 0.9333, 0.8381, 0.7336, 0.6343, 0.5457, 0.4688, 0.4031, 0.3477");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.006118, 0.02408, 0.05839, 0.1118, 0.1868, 0.2855, 0.4099, 0.5616, 0.7426");
          values("0.2119, 0.2164, 0.2217, 0.2252, 0.2269, 0.2283, 0.2299, 0.2376, 0.243, 0.2467",\
                 "0.2085, 0.2113, 0.2169, 0.2213, 0.224, 0.2267, 0.2286, 0.2372, 0.2426, 0.2476",\
                 "0.2268, 0.2245, 0.2214, 0.2219, 0.2238, 0.227, 0.2308, 0.2376, 0.2417, 0.2471",\
                 "0.2753, 0.2692, 0.2565, 0.2451, 0.239, 0.2355, 0.2398, 0.2426, 0.2475, 0.2462",\
                 "0.3587, 0.3486, 0.3249, 0.3033, 0.2822, 0.2691, 0.2632, 0.2588, 0.2556, 0.262",\
                 "0.4797, 0.4664, 0.4342, 0.3975, 0.3641, 0.3347, 0.3145, 0.3002, 0.2916, 0.2849",\
                 "0.6409, 0.6255, 0.5853, 0.5343, 0.4866, 0.4442, 0.4041, 0.3744, 0.3524, 0.3407",\
                 "0.846, 0.8288, 0.7804, 0.7173, 0.6524, 0.595, 0.5422, 0.4914, 0.4572, 0.4244",\
                 "1.098, 1.078, 1.024, 0.9489, 0.8695, 0.7929, 0.7249, 0.6606, 0.5999, 0.5533",\
                 "1.398, 1.377, 1.318, 1.232, 1.137, 1.044, 0.954, 0.8766, 0.7979, 0.7261");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.006118, 0.02408, 0.05839, 0.1118, 0.1868, 0.2855, 0.4099, 0.5616, 0.7426");
          values("0.03859, 0.05187, 0.09725, 0.1822, 0.3146, 0.5005, 0.7447, 1.052, 1.427, 1.875",\
                 "0.04553, 0.05892, 0.1044, 0.1898, 0.3223, 0.5083, 0.7525, 1.06, 1.436, 1.882",\
                 "0.05598, 0.07651, 0.132, 0.2178, 0.3501, 0.5359, 0.7802, 1.087, 1.463, 1.911",\
                 "0.0588, 0.08718, 0.1626, 0.2705, 0.4057, 0.5906, 0.8343, 1.141, 1.517, 1.964",\
                 "0.051, 0.0877, 0.1839, 0.3193, 0.4861, 0.6789, 0.921, 1.227, 1.602, 2.049",\
                 "0.03091, 0.07597, 0.1938, 0.3576, 0.5572, 0.7886, 1.046, 1.351, 1.723, 2.169",\
                 "-0.0031, 0.0507, 0.19, 0.3835, 0.6164, 0.8848, 1.186, 1.515, 1.888, 2.331",\
                 "-0.0521, 0.0109, 0.1719, 0.3953, 0.6628, 0.9682, 1.311, 1.687, 2.093, 2.539",\
                 "-0.1177, -0.0455, 0.1381, 0.3911, 0.6938, 1.038, 1.42, 1.842, 2.299, 2.787",\
                 "-0.1992, -0.1189, 0.0879, 0.3705, 0.7086, 1.092, 1.516, 1.981, 2.487, 3.029");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.006118, 0.02408, 0.05839, 0.1118, 0.1868, 0.2855, 0.4099, 0.5616, 0.7426");
          values("0.0474, 0.0683, 0.1383, 0.2693, 0.4719, 0.7556, 1.13, 1.602, 2.178, 2.859",\
                 "0.05604, 0.07625, 0.1465, 0.2776, 0.4809, 0.765, 1.139, 1.612, 2.186, 2.872",\
                 "0.08817, 0.1125, 0.1825, 0.3122, 0.5151, 0.7993, 1.174, 1.645, 2.221, 2.907",\
                 "0.1349, 0.1662, 0.2537, 0.3867, 0.5866, 0.8692, 1.242, 1.712, 2.287, 2.969",\
                 "0.1943, 0.2349, 0.3415, 0.5006, 0.7049, 0.9836, 1.353, 1.822, 2.393, 3.079",\
                 "0.2678, 0.3177, 0.4469, 0.6312, 0.8677, 1.151, 1.517, 1.98, 2.55, 3.234",\
                 "0.3548, 0.4145, 0.5684, 0.7818, 1.049, 1.369, 1.739, 2.197, 2.764, 3.442",\
                 "0.4574, 0.5269, 0.7056, 0.9519, 1.25, 1.606, 2.016, 2.479, 3.039, 3.711",\
                 "0.5759, 0.6555, 0.8618, 1.141, 1.474, 1.863, 2.315, 2.819, 3.383, 4.049",\
                 "0.7115, 0.8009, 1.034, 1.348, 1.719, 2.145, 2.634, 3.185, 3.79, 4.461");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.006118, 0.02408, 0.05839, 0.1118, 0.1868, 0.2855, 0.4099, 0.5616, 0.7426");
          values("0.03343, 0.05415, 0.1275, 0.2652, 0.4814, 0.7846, 1.183, 1.686, 2.299, 3.028",\
                 "0.03565, 0.05424, 0.1266, 0.2656, 0.4826, 0.7845, 1.183, 1.685, 2.298, 3.031",\
                 "0.05998, 0.08136, 0.1389, 0.2659, 0.4823, 0.7847, 1.183, 1.686, 2.297, 3.029",\
                 "0.09372, 0.1208, 0.1962, 0.3063, 0.4861, 0.7841, 1.186, 1.686, 2.298, 3.028",\
                 "0.1355, 0.1715, 0.2628, 0.3983, 0.5673, 0.809, 1.186, 1.685, 2.299, 3.029",\
                 "0.1846, 0.2305, 0.3434, 0.4992, 0.7, 0.9338, 1.241, 1.693, 2.3, 3.029",\
                 "0.2424, 0.2948, 0.4338, 0.6172, 0.8388, 1.111, 1.416, 1.795, 2.33, 3.032",\
                 "0.3046, 0.369, 0.532, 0.7452, 0.9954, 1.295, 1.642, 2.024, 2.48, 3.098",\
                 "0.3734, 0.4502, 0.6378, 0.8848, 1.168, 1.494, 1.876, 2.304, 2.765, 3.305",\
                 "0.4494, 0.539, 0.7522, 1.033, 1.356, 1.714, 2.122, 2.588, 3.103, 3.649");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.006118, 0.02408, 0.05839, 0.1118, 0.1868, 0.2855, 0.4099, 0.5616, 0.7426");
          values("0.05509, 0.08841, 0.2059, 0.4291, 0.7797, 1.267, 1.908, 2.734, 3.719, 4.905",\
                 "0.05536, 0.0886, 0.2056, 0.4288, 0.7765, 1.266, 1.908, 2.732, 3.714, 4.897",\
                 "0.07692, 0.1068, 0.2065, 0.4294, 0.779, 1.268, 1.912, 2.724, 3.716, 4.903",\
                 "0.1082, 0.1434, 0.2492, 0.4352, 0.7783, 1.268, 1.913, 2.728, 3.715, 4.906",\
                 "0.1503, 0.1906, 0.3112, 0.5022, 0.7935, 1.267, 1.914, 2.728, 3.72, 4.896",\
                 "0.1969, 0.249, 0.3832, 0.6, 0.8848, 1.295, 1.914, 2.722, 3.719, 4.896",\
                 "0.249, 0.3122, 0.4698, 0.7026, 1.022, 1.412, 1.953, 2.725, 3.718, 4.894",\
                 "0.3062, 0.3814, 0.5678, 0.8216, 1.166, 1.593, 2.099, 2.784, 3.715, 4.892",\
                 "0.3686, 0.4562, 0.6702, 0.9586, 1.319, 1.783, 2.323, 2.957, 3.799, 4.902",\
                 "0.4364, 0.5344, 0.7812, 1.103, 1.493, 1.973, 2.561, 3.221, 4.002, 5.01");
        }
      }
    }
  }

