/*
 * 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__and3_4) {
    area : 43.904000 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&!A3" ;
      value : "0.0001072692" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&A3" ;
      value : "0.0001072692" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&!A3" ;
      value : "0.0001072692" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&A3" ;
      value : "0.0001072728" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&!A3" ;
      value : "0.0001471356" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&A3" ;
      value : "0.0001471392" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&!A3" ;
      value : "0.0001860516" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&A3" ;
      value : "0.0001609236" ;
    }

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

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

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

    pin(A1) {
      capacitance : 0.009036 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5.2 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A2&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04461, 0.04445, 0.04432, 0.04431, 0.04429, 0.04424, 0.04427, \
                  0.04437, 0.04424, 0.04428");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.0297, -0.02969, -0.02971, -0.0297, -0.02975, -0.02972, -0.02981, \
                  -0.02983, -0.02989, -0.02995");
        }
      }

      internal_power() {
        when : "!A2&A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04459, 0.04455, 0.04432, 0.04424, 0.0443, 0.04429, 0.04435, \
                  0.04439, 0.04439, 0.04438");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.02972, -0.02971, -0.02971, -0.02975, -0.02975, -0.02973, -0.02981, \
                  -0.02988, -0.02989, -0.02992");
        }
      }

      internal_power() {
        when : "A2&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04442, 0.04444, 0.04427, 0.04423, 0.04427, 0.04433, 0.04433, \
                  0.04438, 0.04439, 0.04436");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.006824, 0.006803, 0.006649, 0.006665, 0.006476, 0.006558, 0.006434, \
                  0.006359, 0.006372, 0.006292");
        }
      }
    }

    pin(A2) {
      capacitance : 0.009396 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5.2 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.05483, 0.0551, 0.05627, 0.05757, 0.05862, 0.05923, 0.05965, \
                  0.05994, 0.06007, 0.06015");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03992, -0.03983, -0.03976, -0.03967, -0.0397, -0.03979, -0.03979, \
                  -0.03983, -0.03987, -0.0398");
        }
      }

      internal_power() {
        when : "!A1&A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04471, 0.04143, 0.03999, 0.03987, 0.03987, 0.03981, 0.03995, \
                  0.03994, 0.03988, 0.03986");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03984, -0.03981, -0.03978, -0.03977, -0.03967, -0.03974, -0.03978, \
                  -0.03983, -0.03987, -0.03984");
        }
      }

      internal_power() {
        when : "A1&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04419, 0.04411, 0.04397, 0.04394, 0.04389, 0.04399, 0.04399, \
                  0.04398, 0.044, 0.0439");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03397, -0.03394, -0.0339, -0.03382, -0.0339, -0.03392, -0.03409, \
                  -0.03409, -0.03408, -0.03417");
        }
      }
    }

    pin(A3) {
      capacitance : 0.01005 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5.2 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1&!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04012, 0.03998, 0.03988, 0.03982, 0.03981, 0.03987, 0.03993, \
                  0.0399, 0.03995, 0.03994");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03991, -0.03981, -0.03975, -0.03972, -0.03966, -0.03974, -0.03977, \
                  -0.0398, -0.03984, -0.03981");
        }
      }

      internal_power() {
        when : "!A1&A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04132, 0.04005, 0.03985, 0.03983, 0.03981, 0.03987, 0.03995, \
                  0.03992, 0.03991, 0.03991");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03984, -0.03986, -0.03975, -0.03976, -0.0397, -0.03972, -0.03979, \
                  -0.03981, -0.03985, -0.03982");
        }
      }

      internal_power() {
        when : "A1&!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04163, 0.04008, 0.03985, 0.03982, 0.03981, 0.03986, 0.03997, \
                  0.03997, 0.03994, 0.04001");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03989, -0.03987, -0.03979, -0.03972, -0.03967, -0.03975, -0.03981, \
                  -0.03982, -0.03981, -0.03984");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 1.425 ;
      max_transition : 5.2 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "A1" ;
        when : "A2&A3" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.3181, 0.3109, 0.3051, 0.3034, 0.3022, 0.3013, 0.3012, 0.301, 0.3009, 0.3009",\
                 "0.3178, 0.3105, 0.3051, 0.3028, 0.3016, 0.3011, 0.3007, 0.3006, 0.3005, 0.3004",\
                 "0.3251, 0.317, 0.3095, 0.3069, 0.3058, 0.3054, 0.305, 0.3048, 0.3047, 0.3046",\
                 "0.3658, 0.3534, 0.3395, 0.332, 0.3289, 0.3275, 0.3264, 0.3258, 0.3254, 0.3251",\
                 "0.4396, 0.422, 0.3982, 0.3852, 0.3779, 0.3735, 0.3712, 0.3697, 0.369, 0.3682",\
                 "0.5467, 0.5254, 0.4916, 0.4692, 0.4566, 0.4484, 0.444, 0.4411, 0.4393, 0.4381",\
                 "0.6859, 0.6619, 0.6179, 0.5863, 0.5658, 0.554, 0.5463, 0.5411, 0.5379, 0.5355",\
                 "0.8591, 0.832, 0.778, 0.7375, 0.7091, 0.6905, 0.6794, 0.6718, 0.6665, 0.6624",\
                 "1.066, 1.037, 0.9737, 0.9227, 0.8868, 0.8613, 0.8449, 0.8338, 0.8262, 0.8207",\
                 "1.308, 1.277, 1.207, 1.144, 1.1, 1.068, 1.045, 1.03, 1.019, 1.011");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.2306, 0.2172, 0.203, 0.1967, 0.1944, 0.1941, 0.1963, 0.1994, 0.2027, 0.2094",\
                 "0.2291, 0.2165, 0.2016, 0.1951, 0.193, 0.1927, 0.1952, 0.1979, 0.2006, 0.2083",\
                 "0.2334, 0.2203, 0.2053, 0.1979, 0.1956, 0.1959, 0.1977, 0.2023, 0.2056, 0.2079",\
                 "0.2653, 0.2507, 0.2325, 0.2217, 0.217, 0.2154, 0.2172, 0.2199, 0.2229, 0.2274",\
                 "0.3236, 0.3061, 0.2828, 0.2694, 0.2599, 0.2571, 0.2579, 0.2588, 0.261, 0.2688",\
                 "0.415, 0.3942, 0.3653, 0.3445, 0.3337, 0.3262, 0.323, 0.3236, 0.3269, 0.3318",\
                 "0.5379, 0.5135, 0.4759, 0.4489, 0.4328, 0.4249, 0.4188, 0.4154, 0.4137, 0.4171",\
                 "0.6916, 0.6637, 0.621, 0.5852, 0.5589, 0.5487, 0.5441, 0.5396, 0.5343, 0.5322",\
                 "0.8778, 0.8465, 0.7955, 0.7527, 0.722, 0.7024, 0.692, 0.6915, 0.6855, 0.6795",\
                 "1.097, 1.062, 1.003, 0.955, 0.9186, 0.8914, 0.8731, 0.8654, 0.8651, 0.8613");
        }
      }

      internal_power() {
        related_pin : "A2" ;
        when : "A1&A3" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.3625, 0.3533, 0.3446, 0.3416, 0.3395, 0.3385, 0.338, 0.3377, 0.3375, 0.3374",\
                 "0.3614, 0.3523, 0.3436, 0.3406, 0.3385, 0.3375, 0.337, 0.3367, 0.3365, 0.3364",\
                 "0.3679, 0.358, 0.3483, 0.3446, 0.3427, 0.3418, 0.3413, 0.341, 0.3408, 0.3407",\
                 "0.4092, 0.3962, 0.3797, 0.3714, 0.3669, 0.3648, 0.3636, 0.3629, 0.3625, 0.3622",\
                 "0.4862, 0.4686, 0.4436, 0.4281, 0.4196, 0.4145, 0.4119, 0.4102, 0.4092, 0.4083",\
                 "0.5986, 0.5774, 0.5419, 0.518, 0.503, 0.4945, 0.4889, 0.4858, 0.4836, 0.4822",\
                 "0.745, 0.7206, 0.6752, 0.6416, 0.619, 0.6058, 0.5972, 0.5913, 0.5877, 0.5851",\
                 "0.9265, 0.8992, 0.8445, 0.8002, 0.7702, 0.7503, 0.7372, 0.7287, 0.7228, 0.7187",\
                 "1.143, 1.115, 1.05, 0.9963, 0.9572, 0.9296, 0.9114, 0.8991, 0.8906, 0.8845",\
                 "1.397, 1.366, 1.295, 1.23, 1.182, 1.147, 1.122, 1.105, 1.093, 1.085");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.2304, 0.2175, 0.2028, 0.1965, 0.1943, 0.1948, 0.1963, 0.1997, 0.2038, 0.2061",\
                 "0.2285, 0.216, 0.2008, 0.194, 0.192, 0.1927, 0.1956, 0.1972, 0.1995, 0.2079",\
                 "0.2303, 0.2176, 0.2027, 0.195, 0.1925, 0.192, 0.1949, 0.1972, 0.1998, 0.2076",\
                 "0.2582, 0.2435, 0.2261, 0.2161, 0.2112, 0.2107, 0.2121, 0.2159, 0.2196, 0.2252",\
                 "0.3156, 0.2988, 0.2757, 0.2636, 0.2543, 0.251, 0.2521, 0.2552, 0.2556, 0.2576",\
                 "0.4078, 0.3877, 0.3601, 0.3387, 0.3283, 0.3212, 0.3187, 0.3185, 0.3215, 0.3228",\
                 "0.5324, 0.5093, 0.4729, 0.4469, 0.4278, 0.4227, 0.4166, 0.4121, 0.4133, 0.4128",\
                 "0.6893, 0.663, 0.6206, 0.5857, 0.5627, 0.5473, 0.5451, 0.5392, 0.5364, 0.5326",\
                 "0.8788, 0.8498, 0.7999, 0.758, 0.7271, 0.7075, 0.6963, 0.6969, 0.6891, 0.687",\
                 "1.101, 1.071, 1.013, 0.9651, 0.9283, 0.9033, 0.8825, 0.8751, 0.8774, 0.8732");
        }
      }

      internal_power() {
        related_pin : "A3" ;
        when : "A1&A2" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.4013, 0.3909, 0.3799, 0.3749, 0.3722, 0.3709, 0.3702, 0.3698, 0.3695, 0.3693",\
                 "0.3999, 0.3894, 0.3787, 0.3736, 0.371, 0.3703, 0.3691, 0.3686, 0.3682, 0.3681",\
                 "0.4064, 0.3954, 0.3835, 0.3785, 0.3757, 0.3743, 0.3736, 0.3732, 0.3729, 0.3727",\
                 "0.4489, 0.4348, 0.4167, 0.4071, 0.4019, 0.3994, 0.398, 0.397, 0.3965, 0.3961",\
                 "0.5296, 0.5119, 0.485, 0.4683, 0.4583, 0.4527, 0.4495, 0.4477, 0.4464, 0.4456",\
                 "0.6502, 0.6289, 0.5919, 0.5654, 0.5503, 0.5401, 0.534, 0.5304, 0.5278, 0.526",\
                 "0.8082, 0.7841, 0.7374, 0.7014, 0.6778, 0.6623, 0.6526, 0.6465, 0.642, 0.639",\
                 "1.005, 0.9785, 0.9226, 0.8765, 0.8437, 0.8211, 0.8067, 0.7974, 0.7907, 0.7859",\
                 "1.242, 1.213, 1.149, 1.092, 1.05, 1.02, 0.9995, 0.9856, 0.9762, 0.9694",\
                 "1.52, 1.489, 1.417, 1.35, 1.298, 1.259, 1.232, 1.213, 1.2, 1.19");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.2304, 0.2175, 0.203, 0.1961, 0.194, 0.1948, 0.1974, 0.1994, 0.2024, 0.2101",\
                 "0.2284, 0.2152, 0.2008, 0.1946, 0.1922, 0.1923, 0.1945, 0.1979, 0.2024, 0.2058",\
                 "0.2282, 0.2151, 0.1998, 0.1931, 0.1909, 0.1912, 0.1927, 0.1972, 0.1995, 0.2065",\
                 "0.252, 0.2374, 0.2211, 0.2115, 0.2077, 0.2067, 0.2085, 0.2105, 0.2157, 0.222",\
                 "0.3091, 0.2922, 0.2701, 0.2591, 0.2508, 0.2481, 0.2503, 0.2512, 0.2546, 0.2576",\
                 "0.405, 0.3849, 0.3571, 0.3373, 0.33, 0.3223, 0.3216, 0.3207, 0.3222, 0.3239",\
                 "0.5365, 0.5136, 0.4784, 0.4514, 0.4349, 0.4288, 0.4242, 0.4211, 0.4205, 0.4243",\
                 "0.7021, 0.6765, 0.6345, 0.6009, 0.5776, 0.5653, 0.5624, 0.5561, 0.5523, 0.5549",\
                 "0.9029, 0.8752, 0.8254, 0.7857, 0.7565, 0.7359, 0.7255, 0.7289, 0.7197, 0.7184",\
                 "1.141, 1.111, 1.054, 1.006, 0.9712, 0.9454, 0.9246, 0.9205, 0.9281, 0.9196");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.1405, 0.1633, 0.2218, 0.3122, 0.4444, 0.6281, 0.8697, 1.174, 1.546, 1.99",\
                 "0.1498, 0.1725, 0.231, 0.3215, 0.4536, 0.6373, 0.8789, 1.184, 1.555, 1.998",\
                 "0.1855, 0.208, 0.2663, 0.3566, 0.4887, 0.6724, 0.914, 1.218, 1.591, 2.034",\
                 "0.2441, 0.2681, 0.3281, 0.4193, 0.5511, 0.7344, 0.976, 1.28, 1.652, 2.096",\
                 "0.3107, 0.3378, 0.4015, 0.4953, 0.6276, 0.8103, 1.051, 1.356, 1.727, 2.17",\
                 "0.3836, 0.4135, 0.4833, 0.5814, 0.7148, 0.8977, 1.139, 1.442, 1.813, 2.257",\
                 "0.4614, 0.4944, 0.5705, 0.6742, 0.8121, 0.9964, 1.237, 1.541, 1.912, 2.354",\
                 "0.5438, 0.5799, 0.6628, 0.7729, 0.9156, 1.104, 1.348, 1.651, 2.021, 2.464",\
                 "0.6319, 0.6706, 0.7601, 0.8773, 1.025, 1.218, 1.467, 1.774, 2.145, 2.588",\
                 "0.7257, 0.7671, 0.8628, 0.9872, 1.141, 1.338, 1.591, 1.905, 2.282, 2.726");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.2032, 0.2328, 0.3165, 0.4582, 0.6723, 0.9722, 1.366, 1.864, 2.473, 3.197",\
                 "0.2079, 0.2378, 0.3213, 0.463, 0.6771, 0.9769, 1.371, 1.869, 2.477, 3.202",\
                 "0.2307, 0.2604, 0.3437, 0.4851, 0.6992, 0.999, 1.393, 1.892, 2.499, 3.224",\
                 "0.2722, 0.3022, 0.3858, 0.5267, 0.74, 1.039, 1.434, 1.931, 2.54, 3.265",\
                 "0.3172, 0.348, 0.4311, 0.5721, 0.7853, 1.084, 1.478, 1.975, 2.583, 3.306",\
                 "0.3639, 0.3961, 0.4807, 0.6212, 0.8334, 1.132, 1.525, 2.022, 2.63, 3.352",\
                 "0.4074, 0.4415, 0.5283, 0.6712, 0.8838, 1.181, 1.574, 2.07, 2.676, 3.401",\
                 "0.446, 0.4822, 0.5732, 0.7184, 0.9331, 1.232, 1.624, 2.12, 2.725, 3.447",\
                 "0.4783, 0.5174, 0.6123, 0.7604, 0.9789, 1.282, 1.675, 2.17, 2.775, 3.497",\
                 "0.5031, 0.5454, 0.6451, 0.7964, 1.019, 1.326, 1.726, 2.221, 2.826, 3.547");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.04638, 0.0699, 0.1384, 0.2652, 0.4766, 0.7787, 1.182, 1.688, 2.309, 3.048",\
                 "0.04628, 0.07012, 0.1384, 0.2659, 0.4762, 0.7804, 1.182, 1.688, 2.306, 3.043",\
                 "0.0471, 0.07054, 0.1391, 0.2663, 0.4763, 0.7807, 1.182, 1.689, 2.309, 3.048",\
                 "0.05626, 0.07952, 0.1455, 0.2685, 0.4767, 0.7791, 1.181, 1.688, 2.309, 3.047",\
                 "0.07004, 0.09388, 0.1581, 0.2773, 0.4798, 0.7814, 1.181, 1.689, 2.309, 3.046",\
                 "0.0858, 0.1128, 0.1778, 0.292, 0.487, 0.7826, 1.182, 1.687, 2.306, 3.043",\
                 "0.1024, 0.1322, 0.2004, 0.312, 0.5026, 0.7908, 1.184, 1.687, 2.303, 3.042",\
                 "0.1196, 0.1534, 0.224, 0.3362, 0.5244, 0.8114, 1.198, 1.692, 2.303, 3.039",\
                 "0.137, 0.1742, 0.2514, 0.3638, 0.5484, 0.835, 1.224, 1.712, 2.314, 3.04",\
                 "0.156, 0.1956, 0.2786, 0.3922, 0.5748, 0.8602, 1.254, 1.746, 2.34, 3.057");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.06674, 0.1026, 0.2204, 0.4459, 0.8114, 1.334, 2.018, 2.887, 3.95, 5.203",\
                 "0.06684, 0.1021, 0.2203, 0.4455, 0.8112, 1.333, 2.019, 2.886, 3.942, 5.204",\
                 "0.06672, 0.1024, 0.2202, 0.4459, 0.811, 1.334, 2.019, 2.89, 3.949, 5.213",\
                 "0.07032, 0.1052, 0.2227, 0.4467, 0.8112, 1.333, 2.02, 2.888, 3.943, 5.213",\
                 "0.0754, 0.1101, 0.2269, 0.4512, 0.8132, 1.333, 2.019, 2.889, 3.941, 5.208",\
                 "0.0848, 0.12, 0.2332, 0.4538, 0.816, 1.335, 2.02, 2.888, 3.948, 5.208",\
                 "0.0962, 0.1328, 0.2438, 0.4636, 0.8194, 1.337, 2.021, 2.887, 3.94, 5.199",\
                 "0.1098, 0.1468, 0.2566, 0.4776, 0.833, 1.343, 2.023, 2.886, 3.94, 5.206",\
                 "0.1244, 0.1632, 0.2712, 0.4936, 0.8536, 1.359, 2.031, 2.888, 3.942, 5.201",\
                 "0.1398, 0.179, 0.2878, 0.5094, 0.8736, 1.388, 2.054, 2.9, 3.947, 5.199");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.156, 0.1799, 0.2398, 0.3308, 0.4629, 0.6466, 0.8882, 1.193, 1.564, 2.008",\
                 "0.165, 0.1889, 0.2487, 0.3397, 0.4719, 0.6556, 0.8973, 1.202, 1.574, 2.017",\
                 "0.2009, 0.2247, 0.2842, 0.3751, 0.5073, 0.691, 0.9326, 1.237, 1.609, 2.052",\
                 "0.2649, 0.2899, 0.351, 0.4421, 0.5739, 0.7573, 0.9987, 1.303, 1.675, 2.118",\
                 "0.3411, 0.3688, 0.4333, 0.5272, 0.6589, 0.842, 1.083, 1.387, 1.759, 2.201",\
                 "0.4266, 0.4577, 0.5283, 0.6256, 0.7584, 0.9408, 1.182, 1.485, 1.857, 2.299",\
                 "0.5221, 0.5558, 0.6331, 0.7359, 0.8721, 1.055, 1.296, 1.599, 1.97, 2.412",\
                 "0.6264, 0.6639, 0.7477, 0.8567, 0.9975, 1.184, 1.426, 1.729, 2.1, 2.542",\
                 "0.7413, 0.7805, 0.8721, 0.9883, 1.135, 1.325, 1.571, 1.876, 2.247, 2.689",\
                 "0.8669, 0.9088, 1.007, 1.131, 1.282, 1.477, 1.727, 2.037, 2.412, 2.853");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.2198, 0.2495, 0.333, 0.4748, 0.6889, 0.9888, 1.384, 1.882, 2.489, 3.214",\
                 "0.2229, 0.2527, 0.336, 0.4778, 0.6919, 0.9919, 1.387, 1.884, 2.493, 3.216",\
                 "0.2354, 0.2651, 0.3485, 0.4899, 0.7039, 1.004, 1.398, 1.896, 2.505, 3.228",\
                 "0.2628, 0.2928, 0.3768, 0.518, 0.7315, 1.031, 1.425, 1.923, 2.529, 3.253",\
                 "0.296, 0.3272, 0.4115, 0.5529, 0.7661, 1.065, 1.459, 1.957, 2.564, 3.29",\
                 "0.3289, 0.3617, 0.4482, 0.59, 0.8021, 1.101, 1.494, 1.991, 2.599, 3.323",\
                 "0.3548, 0.3902, 0.4795, 0.6245, 0.838, 1.135, 1.528, 2.024, 2.631, 3.354",\
                 "0.3721, 0.4097, 0.5036, 0.652, 0.8696, 1.169, 1.561, 2.057, 2.662, 3.385",\
                 "0.379, 0.4193, 0.5174, 0.6691, 0.8917, 1.197, 1.591, 2.086, 2.691, 3.413",\
                 "0.3747, 0.4173, 0.5204, 0.6758, 0.9029, 1.215, 1.617, 2.114, 2.719, 3.44");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.05096, 0.0746, 0.1411, 0.2668, 0.4771, 0.7787, 1.181, 1.689, 2.306, 3.043",\
                 "0.05056, 0.07448, 0.1411, 0.267, 0.4769, 0.7789, 1.181, 1.688, 2.307, 3.043",\
                 "0.05086, 0.07458, 0.1422, 0.2675, 0.4772, 0.7787, 1.181, 1.689, 2.307, 3.042",\
                 "0.05936, 0.08318, 0.1471, 0.2695, 0.4772, 0.7801, 1.182, 1.689, 2.304, 3.045",\
                 "0.07256, 0.09742, 0.16, 0.2777, 0.4798, 0.7808, 1.182, 1.687, 2.306, 3.044",\
                 "0.0882, 0.1162, 0.1788, 0.2914, 0.486, 0.7822, 1.181, 1.687, 2.305, 3.043",\
                 "0.105, 0.1366, 0.201, 0.3102, 0.4996, 0.7886, 1.183, 1.687, 2.303, 3.041",\
                 "0.1228, 0.1562, 0.226, 0.333, 0.5194, 0.805, 1.193, 1.691, 2.303, 3.039",\
                 "0.1406, 0.1788, 0.2532, 0.3592, 0.5418, 0.8274, 1.215, 1.704, 2.31, 3.04",\
                 "0.159, 0.2002, 0.2814, 0.3886, 0.5686, 0.8518, 1.242, 1.733, 2.329, 3.049");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.06708, 0.1023, 0.2202, 0.4456, 0.8108, 1.334, 2.022, 2.885, 3.949, 5.213",\
                 "0.06694, 0.1023, 0.2205, 0.4456, 0.8125, 1.334, 2.022, 2.886, 3.944, 5.207",\
                 "0.0666, 0.1024, 0.2207, 0.4462, 0.8114, 1.334, 2.019, 2.887, 3.944, 5.204",\
                 "0.07062, 0.1061, 0.2228, 0.4463, 0.8113, 1.334, 2.02, 2.89, 3.946, 5.21",\
                 "0.07634, 0.1114, 0.2275, 0.4506, 0.8126, 1.333, 2.02, 2.89, 3.941, 5.203",\
                 "0.0852, 0.1218, 0.2352, 0.4552, 0.8154, 1.335, 2.02, 2.883, 3.941, 5.203",\
                 "0.097, 0.1328, 0.2478, 0.4676, 0.821, 1.336, 2.022, 2.885, 3.942, 5.206",\
                 "0.1086, 0.148, 0.261, 0.4844, 0.8396, 1.344, 2.023, 2.884, 3.94, 5.194",\
                 "0.1228, 0.1622, 0.2766, 0.502, 0.863, 1.368, 2.035, 2.888, 3.94, 5.197",\
                 "0.136, 0.1788, 0.2928, 0.519, 0.8854, 1.4, 2.065, 2.904, 3.944, 5.197");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.1674, 0.1921, 0.2533, 0.3454, 0.4778, 0.6616, 0.9032, 1.208, 1.579, 2.023",\
                 "0.1761, 0.2008, 0.262, 0.354, 0.4865, 0.6702, 0.9119, 1.216, 1.588, 2.031",\
                 "0.2125, 0.2371, 0.2981, 0.3899, 0.5225, 0.7061, 0.9478, 1.252, 1.624, 2.067",\
                 "0.2811, 0.3067, 0.3687, 0.4605, 0.5926, 0.7761, 1.017, 1.322, 1.693, 2.136",\
                 "0.3656, 0.3938, 0.4595, 0.5536, 0.6858, 0.8689, 1.11, 1.414, 1.785, 2.228",\
                 "0.4647, 0.4958, 0.567, 0.6645, 0.7975, 0.9801, 1.221, 1.524, 1.896, 2.338",\
                 "0.5782, 0.6121, 0.6901, 0.7927, 0.9285, 1.111, 1.352, 1.655, 2.025, 2.468",\
                 "0.7066, 0.744, 0.8288, 0.9374, 1.078, 1.263, 1.504, 1.807, 2.177, 2.62",\
                 "0.8511, 0.8916, 0.9835, 1.099, 1.244, 1.433, 1.678, 1.982, 2.352, 2.794",\
                 "1.012, 1.056, 1.155, 1.278, 1.429, 1.622, 1.871, 2.18, 2.552, 2.994");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.2277, 0.2577, 0.341, 0.4828, 0.6969, 0.9969, 1.392, 1.889, 2.496, 3.22",\
                 "0.2304, 0.2601, 0.3437, 0.4855, 0.6996, 0.9992, 1.394, 1.892, 2.498, 3.222",\
                 "0.2355, 0.2652, 0.3485, 0.4901, 0.7041, 1.004, 1.398, 1.897, 2.505, 3.227",\
                 "0.2471, 0.2773, 0.3611, 0.5026, 0.7162, 1.016, 1.411, 1.909, 2.516, 3.238",\
                 "0.2623, 0.2936, 0.3783, 0.5201, 0.7333, 1.032, 1.427, 1.923, 2.532, 3.255",\
                 "0.2731, 0.3065, 0.3943, 0.538, 0.7507, 1.049, 1.443, 1.94, 2.546, 3.272",\
                 "0.2733, 0.3093, 0.4009, 0.5491, 0.7649, 1.063, 1.456, 1.952, 2.558, 3.283",\
                 "0.2603, 0.2985, 0.3948, 0.547, 0.769, 1.071, 1.464, 1.959, 2.565, 3.287",\
                 "0.2318, 0.2721, 0.373, 0.5298, 0.7582, 1.068, 1.466, 1.961, 2.566, 3.288",\
                 "0.1861, 0.2293, 0.3351, 0.4958, 0.7298, 1.048, 1.455, 1.956, 2.561, 3.283");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.05402, 0.07842, 0.1451, 0.2693, 0.4778, 0.7798, 1.181, 1.687, 2.305, 3.042",\
                 "0.05408, 0.07814, 0.1451, 0.2696, 0.4778, 0.7812, 1.182, 1.689, 2.307, 3.043",\
                 "0.05416, 0.07832, 0.1455, 0.2693, 0.4779, 0.7808, 1.181, 1.688, 2.306, 3.04",\
                 "0.06182, 0.08552, 0.1494, 0.2711, 0.4783, 0.7813, 1.183, 1.689, 2.307, 3.044",\
                 "0.07478, 0.1004, 0.1622, 0.2789, 0.4814, 0.782, 1.182, 1.687, 2.307, 3.044",\
                 "0.0904, 0.1186, 0.18, 0.2914, 0.4866, 0.7826, 1.182, 1.686, 2.306, 3.043",\
                 "0.107, 0.1384, 0.2028, 0.3104, 0.499, 0.7884, 1.184, 1.687, 2.303, 3.042",\
                 "0.1258, 0.1596, 0.2278, 0.3332, 0.5178, 0.804, 1.191, 1.69, 2.303, 3.039",\
                 "0.1446, 0.1824, 0.2566, 0.3592, 0.54, 0.8242, 1.212, 1.701, 2.309, 3.039",\
                 "0.1636, 0.2042, 0.2842, 0.3882, 0.5658, 0.8486, 1.239, 1.728, 2.325, 3.047");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.01083, 0.04533, 0.1112, 0.2138, 0.3579, 0.5474, 0.7861, 1.078, 1.425");
          values("0.06702, 0.1022, 0.2207, 0.4455, 0.8125, 1.334, 2.022, 2.888, 3.943, 5.207",\
                 "0.06676, 0.1024, 0.2203, 0.4455, 0.8114, 1.332, 2.02, 2.891, 3.947, 5.21",\
                 "0.06666, 0.1021, 0.2207, 0.4458, 0.8109, 1.334, 2.018, 2.89, 3.95, 5.209",\
                 "0.07028, 0.1054, 0.2227, 0.447, 0.8107, 1.331, 2.021, 2.89, 3.949, 5.21",\
                 "0.07606, 0.1115, 0.2276, 0.4497, 0.8122, 1.331, 2.021, 2.885, 3.952, 5.21",\
                 "0.0848, 0.1226, 0.2376, 0.457, 0.815, 1.334, 2.02, 2.887, 3.943, 5.204",\
                 "0.0966, 0.1354, 0.2512, 0.4742, 0.8256, 1.336, 2.02, 2.882, 3.94, 5.199",\
                 "0.1076, 0.148, 0.2656, 0.494, 0.8494, 1.351, 2.023, 2.883, 3.941, 5.201",\
                 "0.1198, 0.1626, 0.2818, 0.5132, 0.8774, 1.384, 2.045, 2.891, 3.939, 5.2",\
                 "0.1334, 0.1776, 0.298, 0.533, 0.905, 1.423, 2.086, 2.916, 3.949, 5.197");
        }
      }
    }
  }

