/*
 * 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_1) {
    area : 21.952000 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01076, 0.0107, 0.01065, 0.01064, 0.01064, 0.01064, 0.01065, \
                  0.01065, 0.01064, 0.01064");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.00595, -0.005943, -0.00595, -0.005966, -0.005967, -0.005977, \
                  -0.006002, -0.006003, -0.006007, -0.006025");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01072, 0.01069, 0.01067, 0.01065, 0.01066, 0.01064, 0.01065, \
                  0.01065, 0.01065, 0.01064");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.005898, -0.005899, -0.00591, -0.005903, -0.00591, -0.005934, \
                  -0.00594, -0.005956, -0.005962, -0.005977");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01068, 0.01068, 0.01068, 0.01065, 0.01064, 0.01065, 0.01065, \
                  0.01065, 0.01065, 0.01065");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.005884, 0.005873, 0.005857, 0.005831, 0.005813, 0.005772, 0.005759, \
                  0.005754, 0.005742, 0.005709");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01367, 0.01394, 0.01427, 0.01454, 0.01477, 0.01496, 0.01507, \
                  0.01513, 0.01518, 0.01521");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.009506, -0.009486, -0.009456, -0.009439, -0.00943, -0.009435, \
                  -0.009457, -0.009449, -0.009452, -0.009455");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.0118, 0.01064, 0.009908, 0.009721, 0.009632, 0.009608, 0.009571, \
                  0.00955, 0.009526, 0.009514");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.009475, -0.009468, -0.009454, -0.009447, -0.009436, -0.009453, \
                  -0.009459, -0.009468, -0.009467, -0.009465");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01069, 0.01068, 0.01065, 0.01064, 0.01064, 0.01065, 0.01065, \
                  0.01063, 0.01062, 0.01061");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.005948, -0.005949, -0.005933, -0.005938, -0.005949, -0.005976, \
                  -0.005995, -0.006013, -0.006037, -0.006066");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.0101, 0.009625, 0.009495, 0.009457, 0.009455, 0.009474, 0.009469, \
                  0.009473, 0.009468, 0.009466");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.009488, -0.009471, -0.00944, -0.009428, -0.009427, -0.009442, \
                  -0.009457, -0.009451, -0.009449, -0.009451");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01142, 0.01051, 0.009818, 0.009595, 0.009521, 0.009499, 0.009466, \
                  0.009448, 0.009435, 0.009423");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.009468, -0.009476, -0.009455, -0.009445, -0.009442, -0.009464, \
                  -0.009473, -0.009464, -0.009466, -0.009466");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01092, 0.01012, 0.009684, 0.009527, 0.009484, 0.009457, 0.009435, \
                  0.00942, 0.009407, 0.009394");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.009488, -0.009471, -0.009455, -0.009455, -0.009453, -0.009457, \
                  -0.009458, -0.009464, -0.009461, -0.009455");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.3592 ;
      max_transition : 7.4 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1143, 0.112, 0.1082, 0.1059, 0.1045, 0.1037, 0.1031, 0.1028, 0.1025, 0.1023",\
                 "0.1144, 0.1122, 0.1084, 0.1061, 0.1047, 0.1038, 0.1033, 0.1029, 0.1026, 0.1025",\
                 "0.1165, 0.1141, 0.1101, 0.1077, 0.1063, 0.1054, 0.1048, 0.1045, 0.1043, 0.1041",\
                 "0.1291, 0.1259, 0.1203, 0.1167, 0.1145, 0.1131, 0.1122, 0.1117, 0.1113, 0.1111",\
                 "0.1551, 0.1509, 0.1426, 0.1363, 0.1322, 0.1298, 0.1281, 0.1271, 0.1264, 0.1259",\
                 "0.1937, 0.1884, 0.1772, 0.1676, 0.1612, 0.1569, 0.1542, 0.1523, 0.151, 0.1502",\
                 "0.2445, 0.2383, 0.2244, 0.2113, 0.2019, 0.1953, 0.1911, 0.188, 0.186, 0.1845",\
                 "0.3078, 0.301, 0.2845, 0.2677, 0.2549, 0.2458, 0.2393, 0.2349, 0.2317, 0.2294",\
                 "0.3836, 0.3763, 0.3574, 0.3372, 0.3209, 0.3088, 0.2999, 0.2936, 0.289, 0.2857",\
                 "0.4726, 0.4646, 0.4441, 0.4203, 0.4002, 0.3848, 0.3733, 0.3647, 0.3585, 0.3538");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.08096, 0.07745, 0.07148, 0.06746, 0.06524, 0.06433, 0.06404, 0.06446, 0.06494, 0.06685",\
                 "0.08076, 0.07727, 0.07129, 0.06728, 0.06506, 0.06418, 0.06382, 0.06384, 0.06458, 0.06639",\
                 "0.08223, 0.07873, 0.07263, 0.06851, 0.06621, 0.06523, 0.06483, 0.06482, 0.06533, 0.06783",\
                 "0.09196, 0.08812, 0.08132, 0.07621, 0.07337, 0.072, 0.07124, 0.07162, 0.0712, 0.07447",\
                 "0.1121, 0.1077, 0.09974, 0.09346, 0.0891, 0.08668, 0.08535, 0.08512, 0.08452, 0.08712",\
                 "0.144, 0.1389, 0.1291, 0.1207, 0.115, 0.111, 0.1084, 0.1072, 0.1067, 0.109",\
                 "0.1872, 0.1814, 0.1696, 0.1588, 0.1507, 0.1457, 0.142, 0.1392, 0.1382, 0.1405",\
                 "0.2416, 0.2351, 0.2215, 0.2077, 0.1972, 0.1896, 0.1857, 0.1821, 0.1798, 0.1815",\
                 "0.3078, 0.3008, 0.2846, 0.2689, 0.256, 0.2454, 0.2388, 0.2353, 0.2324, 0.2358",\
                 "0.3853, 0.3778, 0.3599, 0.3419, 0.3263, 0.3136, 0.304, 0.2977, 0.2954, 0.3028");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1284, 0.1257, 0.1212, 0.1182, 0.1164, 0.1153, 0.1145, 0.1141, 0.1138, 0.1135",\
                 "0.1282, 0.1256, 0.121, 0.1181, 0.1162, 0.1151, 0.1145, 0.114, 0.1137, 0.1134",\
                 "0.1301, 0.1273, 0.1226, 0.1196, 0.1178, 0.1167, 0.116, 0.1155, 0.1152, 0.115",\
                 "0.1427, 0.1393, 0.1332, 0.1289, 0.1263, 0.1248, 0.1238, 0.1231, 0.1227, 0.1223",\
                 "0.1702, 0.1657, 0.1569, 0.15, 0.1454, 0.1426, 0.1408, 0.1396, 0.1388, 0.1382",\
                 "0.2112, 0.2059, 0.1941, 0.1839, 0.1767, 0.1719, 0.1688, 0.1667, 0.1653, 0.1643",\
                 "0.2657, 0.2594, 0.2449, 0.231, 0.2206, 0.2133, 0.2084, 0.205, 0.2026, 0.2009",\
                 "0.3333, 0.3265, 0.3095, 0.2916, 0.2776, 0.2674, 0.2604, 0.2553, 0.2517, 0.2489",\
                 "0.4147, 0.4072, 0.388, 0.3664, 0.3488, 0.3352, 0.3253, 0.3182, 0.3129, 0.3091",\
                 "0.5102, 0.502, 0.481, 0.456, 0.4343, 0.4172, 0.4043, 0.3946, 0.3874, 0.3821");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.081, 0.0774, 0.07143, 0.06736, 0.06531, 0.0644, 0.06422, 0.06388, 0.06472, 0.06613",\
                 "0.08056, 0.0771, 0.07118, 0.06703, 0.06491, 0.06404, 0.06368, 0.06374, 0.06429, 0.06639",\
                 "0.0815, 0.07797, 0.0719, 0.06764, 0.06549, 0.06469, 0.06415, 0.0642, 0.06483, 0.06675",\
                 "0.09018, 0.08643, 0.0797, 0.07488, 0.07204, 0.07077, 0.07001, 0.07032, 0.07001, 0.07267",\
                 "0.1101, 0.1056, 0.09779, 0.09169, 0.08745, 0.08521, 0.08445, 0.08328, 0.08344, 0.08568",\
                 "0.1424, 0.1373, 0.1275, 0.1191, 0.1135, 0.11, 0.1076, 0.1058, 0.1063, 0.108",\
                 "0.1865, 0.1808, 0.1688, 0.1581, 0.1502, 0.1453, 0.1421, 0.1393, 0.138, 0.1405",\
                 "0.2422, 0.2359, 0.2219, 0.2089, 0.1979, 0.1909, 0.1867, 0.1837, 0.1814, 0.1838",\
                 "0.3099, 0.3032, 0.2874, 0.2715, 0.2588, 0.249, 0.2421, 0.2386, 0.2361, 0.2397",\
                 "0.3899, 0.3828, 0.3652, 0.3469, 0.3311, 0.3187, 0.3094, 0.3036, 0.301, 0.3079");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1425, 0.1395, 0.1342, 0.1306, 0.1283, 0.1269, 0.1261, 0.1255, 0.1251, 0.1248",\
                 "0.142, 0.1391, 0.1337, 0.1301, 0.1279, 0.1265, 0.1256, 0.125, 0.1246, 0.1243",\
                 "0.1439, 0.1408, 0.1354, 0.1317, 0.1294, 0.128, 0.1271, 0.1265, 0.1261, 0.1259",\
                 "0.1567, 0.153, 0.1463, 0.1414, 0.1384, 0.1366, 0.1354, 0.1346, 0.1341, 0.1337",\
                 "0.1858, 0.1811, 0.1718, 0.1641, 0.1591, 0.1559, 0.1539, 0.1525, 0.1515, 0.1508",\
                 "0.2302, 0.2248, 0.2124, 0.2013, 0.1934, 0.188, 0.1845, 0.1821, 0.1805, 0.1793",\
                 "0.2899, 0.2836, 0.2685, 0.2534, 0.242, 0.2339, 0.2284, 0.2245, 0.2218, 0.2198",\
                 "0.3647, 0.3576, 0.3401, 0.3211, 0.3058, 0.2944, 0.2862, 0.2804, 0.2763, 0.2731",\
                 "0.455, 0.4474, 0.4276, 0.4048, 0.3854, 0.3702, 0.359, 0.3507, 0.3446, 0.3402",\
                 "0.5617, 0.5535, 0.5319, 0.5055, 0.4819, 0.4624, 0.4476, 0.4364, 0.4281, 0.4218");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.08095, 0.07738, 0.07143, 0.06743, 0.06524, 0.06429, 0.06407, 0.0641, 0.0649, 0.06711",\
                 "0.08063, 0.07702, 0.07116, 0.06707, 0.06491, 0.0639, 0.06382, 0.06348, 0.06407, 0.06639",\
                 "0.08088, 0.07737, 0.07131, 0.06728, 0.06495, 0.06397, 0.06375, 0.06348, 0.06433, 0.06603",\
                 "0.08857, 0.08477, 0.07823, 0.07344, 0.07085, 0.06962, 0.06901, 0.0687, 0.06944, 0.07123",\
                 "0.1085, 0.1041, 0.0963, 0.09072, 0.08655, 0.08445, 0.08333, 0.08264, 0.08272, 0.0847",\
                 "0.1421, 0.1371, 0.1273, 0.1189, 0.1138, 0.1104, 0.108, 0.1066, 0.1063, 0.1084",\
                 "0.1885, 0.1829, 0.1708, 0.1601, 0.1521, 0.1479, 0.1446, 0.1423, 0.1412, 0.1425",\
                 "0.2477, 0.2416, 0.2275, 0.2143, 0.2039, 0.1966, 0.1927, 0.1897, 0.1879, 0.1898",\
                 "0.32, 0.3135, 0.2976, 0.2813, 0.2678, 0.2582, 0.2515, 0.2488, 0.2466, 0.2495",\
                 "0.4059, 0.399, 0.3814, 0.3627, 0.3468, 0.3336, 0.3247, 0.3186, 0.3167, 0.3226");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.2653, 0.2962, 0.3812, 0.5127, 0.6969, 0.9461, 1.272, 1.683, 2.184, 2.783",\
                 "0.2791, 0.3099, 0.395, 0.5264, 0.7105, 0.9599, 1.286, 1.696, 2.198, 2.796",\
                 "0.331, 0.3617, 0.4464, 0.578, 0.762, 1.011, 1.337, 1.747, 2.249, 2.847",\
                 "0.43, 0.4614, 0.5465, 0.6779, 0.8616, 1.111, 1.436, 1.847, 2.348, 2.945",\
                 "0.5503, 0.5846, 0.6755, 0.8109, 0.9966, 1.245, 1.57, 1.979, 2.48, 3.078",\
                 "0.6831, 0.7215, 0.8209, 0.9645, 1.155, 1.406, 1.73, 2.138, 2.639, 3.235",\
                 "0.8287, 0.8702, 0.9792, 1.132, 1.333, 1.589, 1.916, 2.325, 2.823, 3.419",\
                 "0.987, 1.033, 1.151, 1.315, 1.524, 1.791, 2.127, 2.539, 3.038, 3.633",\
                 "1.158, 1.208, 1.335, 1.512, 1.731, 2.007, 2.353, 2.776, 3.282, 3.878",\
                 "1.345, 1.398, 1.535, 1.723, 1.953, 2.238, 2.593, 3.029, 3.547, 4.153");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.3785, 0.4174, 0.5322, 0.7265, 1.014, 1.416, 1.944, 2.612, 3.427, 4.397",\
                 "0.3843, 0.4233, 0.538, 0.7323, 1.02, 1.422, 1.95, 2.617, 3.432, 4.401",\
                 "0.4112, 0.4502, 0.5645, 0.7589, 1.047, 1.448, 1.976, 2.644, 3.459, 4.429",\
                 "0.4663, 0.5055, 0.6193, 0.8124, 1.1, 1.5, 2.028, 2.695, 3.51, 4.481",\
                 "0.5255, 0.5657, 0.6801, 0.8731, 1.16, 1.559, 2.085, 2.752, 3.564, 4.537",\
                 "0.5802, 0.6222, 0.7399, 0.9338, 1.22, 1.618, 2.143, 2.808, 3.62, 4.592",\
                 "0.623, 0.6673, 0.7904, 0.9888, 1.278, 1.676, 2.2, 2.863, 3.674, 4.645",\
                 "0.6514, 0.6989, 0.8272, 1.031, 1.326, 1.73, 2.256, 2.917, 3.727, 4.694",\
                 "0.6645, 0.715, 0.8498, 1.058, 1.36, 1.771, 2.306, 2.97, 3.779, 4.745",\
                 "0.6582, 0.712, 0.854, 1.07, 1.377, 1.797, 2.341, 3.015, 3.829, 4.794");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1125, 0.1449, 0.2423, 0.4203, 0.7024, 1.116, 1.674, 2.382, 3.246, 4.277",\
                 "0.1122, 0.1448, 0.2423, 0.4199, 0.702, 1.116, 1.672, 2.382, 3.242, 4.277",\
                 "0.1129, 0.1457, 0.2433, 0.4205, 0.7025, 1.118, 1.674, 2.379, 3.241, 4.277",\
                 "0.1248, 0.1561, 0.2497, 0.4242, 0.704, 1.117, 1.674, 2.379, 3.241, 4.276",\
                 "0.1528, 0.1852, 0.2758, 0.442, 0.7134, 1.121, 1.676, 2.378, 3.243, 4.277",\
                 "0.188, 0.2226, 0.315, 0.4776, 0.7378, 1.131, 1.678, 2.381, 3.245, 4.275",\
                 "0.225, 0.263, 0.3612, 0.5206, 0.781, 1.163, 1.692, 2.385, 3.243, 4.273",\
                 "0.265, 0.3088, 0.4118, 0.5706, 0.829, 1.212, 1.735, 2.409, 3.252, 4.275",\
                 "0.3056, 0.3548, 0.4662, 0.6268, 0.8844, 1.269, 1.797, 2.471, 3.292, 4.289",\
                 "0.35, 0.4006, 0.5224, 0.6912, 0.9416, 1.328, 1.862, 2.547, 3.367, 4.346");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1564, 0.2043, 0.3673, 0.6832, 1.192, 1.924, 2.894, 4.119, 5.604, 7.385",\
                 "0.1563, 0.2043, 0.3676, 0.6832, 1.191, 1.922, 2.894, 4.11, 5.604, 7.382",\
                 "0.1562, 0.2042, 0.3673, 0.6833, 1.192, 1.924, 2.894, 4.117, 5.603, 7.386",\
                 "0.1599, 0.208, 0.3699, 0.6844, 1.191, 1.921, 2.894, 4.119, 5.603, 7.385",\
                 "0.1706, 0.2178, 0.3786, 0.6928, 1.195, 1.925, 2.895, 4.119, 5.603, 7.383",\
                 "0.1884, 0.2366, 0.394, 0.7054, 1.203, 1.929, 2.895, 4.118, 5.602, 7.384",\
                 "0.211, 0.262, 0.418, 0.7274, 1.221, 1.937, 2.899, 4.114, 5.604, 7.396",\
                 "0.2358, 0.2864, 0.4456, 0.755, 1.255, 1.966, 2.914, 4.122, 5.613, 7.38",\
                 "0.2656, 0.3184, 0.4754, 0.7846, 1.291, 2.01, 2.951, 4.144, 5.616, 7.399",\
                 "0.2944, 0.3524, 0.5116, 0.8182, 1.329, 2.06, 3.011, 4.195, 5.652, 7.4");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.2904, 0.3228, 0.4105, 0.544, 0.7288, 0.9784, 1.304, 1.715, 2.216, 2.814",\
                 "0.3032, 0.3356, 0.4232, 0.5567, 0.7416, 0.9911, 1.317, 1.728, 2.229, 2.826",\
                 "0.3551, 0.3873, 0.4748, 0.6081, 0.7929, 1.042, 1.368, 1.779, 2.28, 2.879",\
                 "0.4598, 0.4922, 0.5797, 0.7127, 0.8972, 1.146, 1.472, 1.882, 2.384, 2.981",\
                 "0.594, 0.6296, 0.7226, 0.859, 1.045, 1.293, 1.618, 2.028, 2.528, 3.126",\
                 "0.7484, 0.7874, 0.8888, 1.033, 1.223, 1.473, 1.797, 2.205, 2.705, 3.301",\
                 "0.9222, 0.9656, 1.076, 1.23, 1.429, 1.683, 2.008, 2.416, 2.915, 3.511",\
                 "1.117, 1.164, 1.285, 1.449, 1.657, 1.92, 2.252, 2.662, 3.16, 3.755",\
                 "1.335, 1.386, 1.516, 1.692, 1.911, 2.184, 2.524, 2.943, 3.445, 4.04",\
                 "1.576, 1.631, 1.772, 1.961, 2.189, 2.471, 2.821, 3.25, 3.764, 4.364");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.4049, 0.444, 0.5587, 0.7529, 1.041, 1.443, 1.971, 2.638, 3.452, 4.422",\
                 "0.4084, 0.4477, 0.5624, 0.7566, 1.045, 1.446, 1.975, 2.641, 3.456, 4.425",\
                 "0.4208, 0.46, 0.5744, 0.7684, 1.057, 1.458, 1.986, 2.652, 3.467, 4.437",\
                 "0.4524, 0.4919, 0.6061, 0.7994, 1.087, 1.488, 2.015, 2.683, 3.497, 4.469",\
                 "0.4898, 0.5299, 0.6458, 0.8394, 1.127, 1.526, 2.053, 2.719, 3.53, 4.503",\
                 "0.5178, 0.5608, 0.681, 0.8771, 1.164, 1.563, 2.088, 2.752, 3.567, 4.538",\
                 "0.5284, 0.5742, 0.7002, 0.9019, 1.195, 1.595, 2.119, 2.782, 3.592, 4.564",\
                 "0.5176, 0.566, 0.6984, 0.9069, 1.207, 1.616, 2.144, 2.806, 3.615, 4.583",\
                 "0.4827, 0.5343, 0.6742, 0.8893, 1.198, 1.616, 2.154, 2.822, 3.631, 4.597",\
                 "0.4216, 0.4764, 0.6234, 0.8463, 1.162, 1.589, 2.141, 2.822, 3.639, 4.605");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1217, 0.155, 0.2516, 0.4254, 0.7055, 1.118, 1.674, 2.379, 3.242, 4.277",\
                 "0.1212, 0.1547, 0.2512, 0.4257, 0.7055, 1.119, 1.674, 2.381, 3.246, 4.276",\
                 "0.1216, 0.155, 0.2513, 0.4259, 0.7052, 1.119, 1.675, 2.382, 3.247, 4.273",\
                 "0.1313, 0.1632, 0.257, 0.429, 0.7076, 1.12, 1.676, 2.381, 3.245, 4.273",\
                 "0.1596, 0.1912, 0.282, 0.4452, 0.7154, 1.122, 1.676, 2.381, 3.246, 4.275",\
                 "0.194, 0.2294, 0.3208, 0.4776, 0.7378, 1.131, 1.677, 2.383, 3.242, 4.272",\
                 "0.233, 0.272, 0.3686, 0.524, 0.7756, 1.157, 1.691, 2.386, 3.246, 4.268",\
                 "0.2742, 0.318, 0.4222, 0.5744, 0.8258, 1.204, 1.725, 2.402, 3.249, 4.276",\
                 "0.3186, 0.3668, 0.4796, 0.6328, 0.8814, 1.259, 1.781, 2.451, 3.279, 4.283",\
                 "0.3638, 0.4166, 0.5402, 0.6994, 0.9404, 1.319, 1.847, 2.523, 3.34, 4.327");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1564, 0.2043, 0.3674, 0.6832, 1.192, 1.923, 2.894, 4.112, 5.603, 7.378",\
                 "0.1561, 0.2042, 0.3677, 0.6832, 1.191, 1.923, 2.894, 4.11, 5.604, 7.379",\
                 "0.1563, 0.2042, 0.3674, 0.6831, 1.19, 1.924, 2.894, 4.112, 5.602, 7.378",\
                 "0.1609, 0.2082, 0.3701, 0.685, 1.193, 1.921, 2.894, 4.119, 5.604, 7.383",\
                 "0.1724, 0.2192, 0.3792, 0.6922, 1.196, 1.924, 2.894, 4.113, 5.602, 7.379",\
                 "0.191, 0.241, 0.399, 0.708, 1.203, 1.929, 2.896, 4.111, 5.615, 7.383",\
                 "0.2138, 0.2652, 0.425, 0.7356, 1.23, 1.94, 2.898, 4.118, 5.603, 7.382",\
                 "0.2378, 0.2924, 0.4542, 0.7678, 1.269, 1.976, 2.917, 4.122, 5.615, 7.381",\
                 "0.264, 0.322, 0.4886, 0.8022, 1.312, 2.03, 2.966, 4.152, 5.619, 7.385",\
                 "0.2916, 0.352, 0.5246, 0.8386, 1.355, 2.088, 3.039, 4.217, 5.663, 7.404");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.3122, 0.3458, 0.4365, 0.5722, 0.7584, 1.008, 1.334, 1.745, 2.246, 2.844",\
                 "0.3237, 0.3572, 0.4479, 0.5837, 0.77, 1.02, 1.346, 1.757, 2.258, 2.855",\
                 "0.3757, 0.4092, 0.4995, 0.6352, 0.8214, 1.071, 1.398, 1.808, 2.309, 2.907",\
                 "0.4849, 0.5183, 0.6081, 0.7432, 0.9291, 1.179, 1.505, 1.915, 2.416, 3.013",\
                 "0.6333, 0.6694, 0.7642, 0.902, 1.089, 1.337, 1.662, 2.071, 2.572, 3.17",\
                 "0.81, 0.8495, 0.9522, 1.097, 1.287, 1.537, 1.861, 2.269, 2.769, 3.366",\
                 "1.015, 1.058, 1.171, 1.326, 1.524, 1.777, 2.101, 2.509, 3.008, 3.604",\
                 "1.251, 1.299, 1.421, 1.587, 1.794, 2.056, 2.385, 2.794, 3.292, 3.886",\
                 "1.521, 1.572, 1.704, 1.883, 2.1, 2.371, 2.71, 3.125, 3.625, 4.219",\
                 "1.826, 1.881, 2.024, 2.215, 2.443, 2.724, 3.072, 3.498, 4.008, 4.605");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.4187, 0.4579, 0.5726, 0.7669, 1.055, 1.456, 1.985, 2.652, 3.467, 4.437",\
                 "0.4225, 0.4616, 0.5761, 0.7706, 1.059, 1.46, 1.989, 2.655, 3.469, 4.443",\
                 "0.4242, 0.4634, 0.5778, 0.772, 1.06, 1.461, 1.99, 2.657, 3.472, 4.441",\
                 "0.4321, 0.4714, 0.5856, 0.7795, 1.067, 1.468, 1.996, 2.662, 3.476, 4.447",\
                 "0.4394, 0.4801, 0.5964, 0.7909, 1.078, 1.478, 2.005, 2.671, 3.482, 4.456",\
                 "0.4298, 0.4734, 0.5959, 0.7948, 1.084, 1.482, 2.008, 2.673, 3.486, 4.456",\
                 "0.3951, 0.442, 0.5713, 0.7781, 1.075, 1.478, 2.003, 2.666, 3.478, 4.448",\
                 "0.3306, 0.3811, 0.5183, 0.7329, 1.04, 1.455, 1.987, 2.65, 3.46, 4.427",\
                 "0.2343, 0.2878, 0.4329, 0.6561, 0.9729, 1.4, 1.946, 2.62, 3.43, 4.396",\
                 "0.1019, 0.1582, 0.312, 0.5445, 0.8708, 1.31, 1.873, 2.562, 3.385, 4.352");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1297, 0.1638, 0.2601, 0.4327, 0.7101, 1.122, 1.677, 2.383, 3.245, 4.277",\
                 "0.1297, 0.1638, 0.2609, 0.4328, 0.7103, 1.121, 1.674, 2.381, 3.244, 4.272",\
                 "0.1301, 0.1639, 0.2608, 0.4333, 0.7103, 1.121, 1.676, 2.381, 3.243, 4.274",\
                 "0.1374, 0.1699, 0.2651, 0.4362, 0.7116, 1.122, 1.677, 2.381, 3.245, 4.275",\
                 "0.1646, 0.1982, 0.2898, 0.4508, 0.7202, 1.125, 1.677, 2.383, 3.247, 4.277",\
                 "0.1998, 0.2368, 0.3282, 0.483, 0.7398, 1.133, 1.68, 2.382, 3.246, 4.277",\
                 "0.2416, 0.2818, 0.3778, 0.528, 0.7774, 1.158, 1.691, 2.386, 3.247, 4.269",\
                 "0.2842, 0.3292, 0.4338, 0.5826, 0.8284, 1.201, 1.722, 2.4, 3.251, 4.277",\
                 "0.3308, 0.379, 0.4912, 0.6438, 0.886, 1.26, 1.775, 2.443, 3.273, 4.282",\
                 "0.3804, 0.435, 0.5584, 0.7126, 0.9506, 1.322, 1.842, 2.51, 3.328, 4.317");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003473, 0.01215, 0.02873, 0.05455, 0.09078, 0.1385, 0.1985, 0.2718, 0.3592");
          values("0.1563, 0.2043, 0.3674, 0.6832, 1.192, 1.924, 2.894, 4.118, 5.604, 7.385",\
                 "0.1563, 0.2042, 0.3671, 0.6831, 1.191, 1.924, 2.894, 4.112, 5.601, 7.384",\
                 "0.156, 0.2042, 0.3675, 0.683, 1.19, 1.924, 2.895, 4.112, 5.605, 7.383",\
                 "0.1597, 0.2072, 0.3696, 0.6845, 1.192, 1.924, 2.889, 4.112, 5.602, 7.379",\
                 "0.1732, 0.2216, 0.381, 0.6922, 1.196, 1.923, 2.894, 4.115, 5.603, 7.383",\
                 "0.1936, 0.245, 0.4038, 0.712, 1.206, 1.925, 2.892, 4.111, 5.604, 7.381",\
                 "0.2166, 0.2712, 0.4348, 0.7476, 1.241, 1.945, 2.897, 4.116, 5.607, 7.382",\
                 "0.2442, 0.3, 0.4686, 0.7848, 1.288, 1.995, 2.928, 4.124, 5.606, 7.394",\
                 "0.2674, 0.3282, 0.5056, 0.8258, 1.339, 2.06, 2.996, 4.168, 5.628, 7.394",\
                 "0.2984, 0.362, 0.5426, 0.8686, 1.394, 2.133, 3.082, 4.255, 5.682, 7.415");
        }
      }
    }
  }

