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

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&!A3" ;
      value : "4.5894e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&A3" ;
      value : "4.5894e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&!A3" ;
      value : "4.5894e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&A3" ;
      value : "4.5894e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&!A3" ;
      value : "5.7684e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&A3" ;
      value : "5.7684e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&!A3" ;
      value : "6.9147e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&A3" ;
      value : "6.4206e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "6.9147e-05" ;
    }

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01205, 0.01202, 0.01197, 0.01196, 0.01197, 0.01198, 0.01198, \
                  0.01198, 0.01198, 0.01198");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.007987, -0.008002, -0.007994, -0.00799, -0.007999, -0.008027, \
                  -0.008044, -0.008044, -0.008065, -0.008095");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01204, 0.01202, 0.01198, 0.01196, 0.01197, 0.01199, 0.01198, \
                  0.01199, 0.01198, 0.01199");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.008001, -0.007995, -0.008003, -0.00799, -0.008007, -0.008029, \
                  -0.008042, -0.008054, -0.008064, -0.008103");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.012, 0.012, 0.01197, 0.01196, 0.01197, 0.012, 0.01199, 0.01199, \
                  0.01198, 0.01198");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.004049, 0.004048, 0.004003, 0.003982, 0.003961, 0.00393, 0.003903, \
                  0.003875, 0.003829, 0.003765");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.0138, 0.01384, 0.01396, 0.01415, 0.01432, 0.01449, 0.01458, \
                  0.01463, 0.01464, 0.01466");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.01033, -0.01033, -0.01029, -0.01027, -0.01028, -0.01028, -0.01029, \
                  -0.01029, -0.01029, -0.01029");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01165, 0.01046, 0.01031, 0.01029, 0.0103, 0.01031, 0.01031, \
                  0.01032, 0.01031, 0.01032");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.0103, -0.0103, -0.01028, -0.01027, -0.01027, -0.01028, -0.01029, \
                  -0.0103, -0.01029, -0.0103");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01188, 0.01186, 0.01185, 0.01182, 0.01183, 0.01183, 0.01183, \
                  0.01182, 0.0118, 0.01177");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.008762, -0.008763, -0.008754, -0.008752, -0.008769, -0.008792, \
                  -0.008815, -0.008845, -0.008881, -0.008942");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01037, 0.01035, 0.01028, 0.0103, 0.0103, 0.01032, 0.01032, 0.01032, \
                  0.01031, 0.01032");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.01032, -0.0103, -0.01028, -0.01027, -0.01027, -0.01028, -0.01029, \
                  -0.01028, -0.01028, -0.01028");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01036, 0.01034, 0.01029, 0.01031, 0.01029, 0.01032, 0.01032, \
                  0.01032, 0.01031, 0.01032");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.01031, -0.01029, -0.01028, -0.01027, -0.01027, -0.01029, -0.01029, \
                  -0.01028, -0.01029, -0.01029");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01069, 0.01035, 0.01029, 0.01029, 0.0103, 0.01031, 0.01032, \
                  0.01031, 0.01032, 0.01032");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.01032, -0.01031, -0.0103, -0.01026, -0.01027, -0.01029, -0.01029, \
                  -0.01028, -0.01029, -0.01032");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.7138 ;
      max_transition : 11 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1057, 0.1057, 0.1063, 0.1076, 0.1082, 0.1085, 0.1087, 0.1088, 0.1088, 0.1089",\
                 "0.1054, 0.1053, 0.1061, 0.1072, 0.1079, 0.1081, 0.1084, 0.1085, 0.1085, 0.1085",\
                 "0.1041, 0.1039, 0.1045, 0.1058, 0.1064, 0.1068, 0.1071, 0.1072, 0.1072, 0.1073",\
                 "0.1053, 0.1046, 0.1048, 0.1056, 0.1063, 0.1068, 0.107, 0.1073, 0.1073, 0.1074",\
                 "0.1103, 0.1089, 0.1079, 0.1082, 0.1085, 0.1089, 0.1092, 0.1094, 0.1096, 0.1097",\
                 "0.1183, 0.116, 0.1141, 0.1134, 0.1136, 0.1137, 0.114, 0.1142, 0.1143, 0.1144",\
                 "0.1288, 0.1255, 0.1225, 0.121, 0.1208, 0.1209, 0.1211, 0.1213, 0.1214, 0.1215",\
                 "0.1421, 0.1382, 0.1341, 0.1318, 0.1311, 0.1309, 0.131, 0.1311, 0.1311, 0.1312",\
                 "0.1588, 0.1542, 0.1487, 0.1458, 0.1444, 0.1439, 0.1437, 0.1437, 0.1437, 0.1438",\
                 "0.179, 0.1736, 0.1669, 0.1627, 0.1608, 0.1599, 0.1594, 0.1593, 0.1592, 0.1592");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.06426, 0.06373, 0.0639, 0.0649, 0.06654, 0.06778, 0.06898, 0.07042, 0.07324, 0.09382",\
                 "0.0639, 0.06341, 0.06355, 0.06463, 0.06615, 0.06739, 0.06892, 0.07072, 0.07264, 0.09377",\
                 "0.06319, 0.06273, 0.06271, 0.06373, 0.06531, 0.06673, 0.06778, 0.06922, 0.07207, 0.09478",\
                 "0.06466, 0.06401, 0.06333, 0.06394, 0.06525, 0.06655, 0.06814, 0.06922, 0.07272, 0.09801",\
                 "0.0686, 0.06736, 0.06611, 0.06619, 0.06708, 0.06844, 0.07, 0.07102, 0.07459, 0.1054",\
                 "0.07483, 0.07325, 0.07111, 0.07045, 0.07143, 0.07237, 0.0733, 0.07432, 0.07923, 0.1186",\
                 "0.08365, 0.08163, 0.07889, 0.07717, 0.07752, 0.07936, 0.07984, 0.08056, 0.08577, 0.1389",\
                 "0.09528, 0.09266, 0.08933, 0.08716, 0.08577, 0.0868, 0.08929, 0.091, 0.09764, 0.1701",\
                 "0.1099, 0.1068, 0.1025, 0.09955, 0.09831, 0.09751, 0.09901, 0.1037, 0.1162, 0.224",\
                 "0.1275, 0.1237, 0.1187, 0.1156, 0.1139, 0.1125, 0.1126, 0.1155, 0.1443, 0.3198");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1178, 0.1175, 0.1179, 0.1188, 0.1195, 0.1198, 0.1201, 0.1202, 0.1203, 0.1204",\
                 "0.1173, 0.1169, 0.1174, 0.1185, 0.119, 0.1194, 0.1196, 0.1197, 0.1198, 0.1198",\
                 "0.1162, 0.1158, 0.1163, 0.1173, 0.1179, 0.1182, 0.1185, 0.1187, 0.1187, 0.1188",\
                 "0.1173, 0.1166, 0.1164, 0.1172, 0.1178, 0.1183, 0.1186, 0.1188, 0.1189, 0.119",\
                 "0.1225, 0.121, 0.1197, 0.1197, 0.1202, 0.1206, 0.1209, 0.1211, 0.1213, 0.1213",\
                 "0.1308, 0.1283, 0.126, 0.1253, 0.1253, 0.1256, 0.1258, 0.126, 0.1261, 0.1261",\
                 "0.1416, 0.1385, 0.135, 0.1335, 0.1331, 0.1331, 0.1331, 0.1333, 0.1334, 0.1335",\
                 "0.1552, 0.1514, 0.1471, 0.1446, 0.1437, 0.1434, 0.1434, 0.1435, 0.1434, 0.1435",\
                 "0.1723, 0.1676, 0.1621, 0.1588, 0.1573, 0.1567, 0.1565, 0.1564, 0.1564, 0.1565",\
                 "0.1927, 0.1874, 0.1805, 0.1764, 0.1742, 0.1732, 0.1727, 0.1726, 0.1724, 0.1724");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.06418, 0.06369, 0.06396, 0.06487, 0.06651, 0.06799, 0.06967, 0.07072, 0.07294, 0.09394",\
                 "0.06392, 0.06352, 0.06352, 0.06463, 0.06627, 0.06748, 0.06871, 0.07012, 0.07294, 0.0942",\
                 "0.06313, 0.06262, 0.06277, 0.0637, 0.06516, 0.06682, 0.06799, 0.07042, 0.07237, 0.09491",\
                 "0.06386, 0.06322, 0.06293, 0.06352, 0.06498, 0.06649, 0.06769, 0.06952, 0.07212, 0.09771",\
                 "0.06689, 0.06575, 0.06461, 0.06514, 0.06624, 0.06769, 0.0688, 0.07042, 0.07369, 0.1043",\
                 "0.07248, 0.07098, 0.06913, 0.06877, 0.06984, 0.07087, 0.07183, 0.07282, 0.07773, 0.1172",\
                 "0.08059, 0.07884, 0.0764, 0.07477, 0.07554, 0.07723, 0.07798, 0.07846, 0.08364, 0.1354",\
                 "0.09188, 0.08954, 0.08654, 0.08425, 0.08373, 0.08479, 0.08704, 0.0877, 0.09459, 0.165",\
                 "0.106, 0.103, 0.09911, 0.09676, 0.09585, 0.09496, 0.0964, 0.101, 0.1132, 0.2173",\
                 "0.1232, 0.1197, 0.1151, 0.112, 0.1102, 0.1096, 0.1099, 0.1126, 0.1415, 0.3098");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1294, 0.1289, 0.1289, 0.1297, 0.1303, 0.1307, 0.1309, 0.1311, 0.1312, 0.1313",\
                 "0.1285, 0.1279, 0.128, 0.1288, 0.1295, 0.1298, 0.13, 0.1302, 0.1303, 0.1303",\
                 "0.1278, 0.1271, 0.1272, 0.128, 0.1287, 0.1291, 0.1293, 0.1295, 0.1296, 0.1297",\
                 "0.1288, 0.128, 0.1276, 0.1282, 0.1289, 0.1294, 0.1297, 0.1299, 0.1301, 0.1302",\
                 "0.1343, 0.1327, 0.1312, 0.1311, 0.1314, 0.1318, 0.1322, 0.1323, 0.1325, 0.1326",\
                 "0.1428, 0.1404, 0.1379, 0.1369, 0.1368, 0.137, 0.1371, 0.1374, 0.1375, 0.1376",\
                 "0.1541, 0.1509, 0.1475, 0.1454, 0.1448, 0.1449, 0.1449, 0.145, 0.1451, 0.1452",\
                 "0.1683, 0.1644, 0.1597, 0.1571, 0.156, 0.1556, 0.1556, 0.1556, 0.1556, 0.1556",\
                 "0.1857, 0.1811, 0.1753, 0.172, 0.1703, 0.1696, 0.1693, 0.1692, 0.1692, 0.1692",\
                 "0.2067, 0.2015, 0.1945, 0.1902, 0.188, 0.1869, 0.1863, 0.1861, 0.1859, 0.1859");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.06414, 0.06366, 0.06385, 0.06491, 0.06648, 0.06787, 0.06919, 0.07013, 0.07295, 0.09407",\
                 "0.06395, 0.06342, 0.06359, 0.06458, 0.06615, 0.06766, 0.06883, 0.06983, 0.07235, 0.09433",\
                 "0.06315, 0.0628, 0.06272, 0.06377, 0.06531, 0.06679, 0.06778, 0.06983, 0.07327, 0.09629",\
                 "0.06332, 0.06274, 0.06251, 0.06323, 0.06462, 0.06631, 0.06763, 0.06983, 0.07302, 0.09866",\
                 "0.06547, 0.06446, 0.06363, 0.06452, 0.06561, 0.06697, 0.06832, 0.07073, 0.07339, 0.103",\
                 "0.07015, 0.06914, 0.0674, 0.06731, 0.06897, 0.06985, 0.07114, 0.07313, 0.07621, 0.1145",\
                 "0.07806, 0.07641, 0.07448, 0.07361, 0.07413, 0.07582, 0.07708, 0.07846, 0.08362, 0.1315",\
                 "0.08937, 0.08729, 0.0844, 0.08285, 0.08229, 0.08356, 0.08635, 0.0871, 0.09422, 0.161",\
                 "0.1037, 0.1011, 0.09765, 0.09545, 0.09447, 0.09397, 0.09604, 0.09927, 0.1124, 0.21",\
                 "0.1215, 0.1183, 0.1144, 0.1116, 0.1096, 0.1094, 0.1089, 0.1129, 0.1391, 0.2992");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.3997, 0.4544, 0.5856, 0.7745, 1.039, 1.401, 1.875, 2.473, 3.202, 4.071",\
                 "0.426, 0.4805, 0.6119, 0.8011, 1.065, 1.427, 1.901, 2.499, 3.229, 4.098",\
                 "0.5187, 0.5731, 0.7041, 0.8932, 1.158, 1.52, 1.994, 2.592, 3.32, 4.19",\
                 "0.6994, 0.7546, 0.8867, 1.077, 1.341, 1.703, 2.177, 2.775, 3.504, 4.373",\
                 "0.9173, 0.9805, 1.125, 1.322, 1.589, 1.951, 2.425, 3.023, 3.752, 4.622",\
                 "1.153, 1.223, 1.383, 1.59, 1.862, 2.225, 2.7, 3.297, 4.026, 4.894",\
                 "1.415, 1.491, 1.664, 1.884, 2.162, 2.526, 3.001, 3.598, 4.327, 5.195",\
                 "1.709, 1.79, 1.977, 2.208, 2.492, 2.858, 3.333, 3.93, 4.659, 5.527",\
                 "2.036, 2.123, 2.322, 2.568, 2.859, 3.228, 3.702, 4.298, 5.028, 5.896",\
                 "2.395, 2.488, 2.701, 2.964, 3.264, 3.637, 4.112, 4.708, 5.436, 6.305");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.4557, 0.5269, 0.7161, 1.025, 1.488, 2.134, 2.985, 4.055, 5.36, 6.919",\
                 "0.4724, 0.5436, 0.7328, 1.041, 1.505, 2.151, 3.001, 4.069, 5.375, 6.935",\
                 "0.5355, 0.6067, 0.7958, 1.104, 1.567, 2.214, 3.064, 4.136, 5.441, 6.999",\
                 "0.6508, 0.7228, 0.9123, 1.22, 1.683, 2.33, 3.179, 4.252, 5.557, 7.116",\
                 "0.76, 0.8348, 1.029, 1.339, 1.803, 2.449, 3.299, 4.371, 5.677, 7.235",\
                 "0.847, 0.9261, 1.126, 1.437, 1.901, 2.549, 3.398, 4.47, 5.777, 7.335",\
                 "0.9126, 0.9968, 1.204, 1.516, 1.979, 2.627, 3.478, 4.547, 5.853, 7.413",\
                 "0.9568, 1.045, 1.262, 1.577, 2.039, 2.685, 3.535, 4.607, 5.912, 7.469",\
                 "0.9756, 1.069, 1.297, 1.618, 2.079, 2.723, 3.573, 4.644, 5.951, 7.507",\
                 "0.9659, 1.064, 1.305, 1.635, 2.097, 2.741, 3.589, 4.659, 5.966, 7.522");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1195, 0.1693, 0.3029, 0.5466, 0.9455, 1.53, 2.308, 3.297, 4.504, 5.926",\
                 "0.1196, 0.1694, 0.3025, 0.5457, 0.9456, 1.529, 2.308, 3.293, 4.502, 5.926",\
                 "0.1197, 0.1695, 0.3035, 0.5466, 0.9448, 1.53, 2.308, 3.296, 4.496, 5.935",\
                 "0.1268, 0.1758, 0.3072, 0.5486, 0.9468, 1.53, 2.311, 3.297, 4.501, 5.94",\
                 "0.1546, 0.2072, 0.335, 0.5638, 0.9508, 1.531, 2.31, 3.295, 4.5, 5.942",\
                 "0.1808, 0.239, 0.3704, 0.591, 0.9672, 1.537, 2.312, 3.296, 4.502, 5.94",\
                 "0.2052, 0.2682, 0.4076, 0.6206, 0.9826, 1.545, 2.315, 3.296, 4.498, 5.931",\
                 "0.2288, 0.2952, 0.4448, 0.6516, 1.002, 1.553, 2.32, 3.298, 4.495, 5.929",\
                 "0.2546, 0.325, 0.4842, 0.688, 1.025, 1.564, 2.325, 3.303, 4.499, 5.929",\
                 "0.2812, 0.3564, 0.5282, 0.7322, 1.055, 1.578, 2.328, 3.306, 4.504, 5.93");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1505, 0.2302, 0.4715, 0.9475, 1.724, 2.827, 4.282, 6.117, 8.358, 11.02",\
                 "0.1507, 0.2299, 0.4715, 0.9466, 1.723, 2.827, 4.283, 6.12, 8.362, 11.02",\
                 "0.1508, 0.2299, 0.4719, 0.9484, 1.724, 2.828, 4.282, 6.115, 8.356, 11.01",\
                 "0.1556, 0.235, 0.4744, 0.9482, 1.722, 2.829, 4.284, 6.112, 8.353, 11.02",\
                 "0.1696, 0.2492, 0.487, 0.9564, 1.726, 2.828, 4.284, 6.108, 8.352, 11.01",\
                 "0.1876, 0.2686, 0.4998, 0.962, 1.733, 2.833, 4.281, 6.112, 8.355, 11.02",\
                 "0.2062, 0.2894, 0.5158, 0.9674, 1.733, 2.833, 4.284, 6.111, 8.338, 11.01",\
                 "0.225, 0.313, 0.536, 0.9758, 1.735, 2.834, 4.287, 6.111, 8.343, 11.01",\
                 "0.2466, 0.3384, 0.5628, 0.9876, 1.737, 2.838, 4.284, 6.114, 8.341, 11.01",\
                 "0.2688, 0.3648, 0.597, 1.008, 1.747, 2.834, 4.284, 6.113, 8.34, 11");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.4459, 0.5016, 0.6346, 0.8251, 1.09, 1.452, 1.927, 2.524, 3.253, 4.122",\
                 "0.4714, 0.5272, 0.6603, 0.8504, 1.115, 1.477, 1.952, 2.549, 3.279, 4.148",\
                 "0.5649, 0.6209, 0.7539, 0.9439, 1.209, 1.571, 2.046, 2.643, 3.373, 4.241",\
                 "0.7506, 0.8067, 0.9401, 1.131, 1.396, 1.758, 2.232, 2.83, 3.559, 4.428",\
                 "0.9886, 1.052, 1.195, 1.392, 1.658, 2.02, 2.495, 3.092, 3.821, 4.69",\
                 "1.244, 1.314, 1.473, 1.68, 1.951, 2.315, 2.789, 3.386, 4.115, 4.983",\
                 "1.526, 1.603, 1.776, 1.994, 2.271, 2.634, 3.11, 3.707, 4.435, 5.303",\
                 "1.842, 1.925, 2.111, 2.34, 2.623, 2.989, 3.463, 4.06, 4.789, 5.658",\
                 "2.197, 2.284, 2.483, 2.725, 3.014, 3.381, 3.856, 4.453, 5.182, 6.051",\
                 "2.589, 2.682, 2.894, 3.149, 3.447, 3.817, 4.292, 4.889, 5.618, 6.486");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.4864, 0.5576, 0.7468, 1.055, 1.518, 2.165, 3.015, 4.087, 5.392, 6.951",\
                 "0.5032, 0.5745, 0.7636, 1.072, 1.535, 2.182, 3.033, 4.103, 5.408, 6.966",\
                 "0.5516, 0.6226, 0.8117, 1.12, 1.583, 2.229, 3.079, 4.148, 5.456, 7.017",\
                 "0.6364, 0.7089, 0.8994, 1.207, 1.671, 2.317, 3.166, 4.239, 5.546, 7.104",\
                 "0.725, 0.8004, 0.9963, 1.308, 1.771, 2.417, 3.268, 4.338, 5.645, 7.204",\
                 "0.7975, 0.8768, 1.079, 1.392, 1.856, 2.504, 3.353, 4.425, 5.732, 7.29",\
                 "0.8485, 0.9325, 1.142, 1.458, 1.922, 2.568, 3.42, 4.489, 5.796, 7.355",\
                 "0.8746, 0.9639, 1.183, 1.503, 1.966, 2.612, 3.462, 4.532, 5.838, 7.393",\
                 "0.8731, 0.9664, 1.198, 1.525, 1.989, 2.634, 3.483, 4.553, 5.859, 7.415",\
                 "0.8397, 0.9383, 1.183, 1.518, 1.986, 2.63, 3.479, 4.547, 5.853, 7.41");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1256, 0.1751, 0.3074, 0.5486, 0.9464, 1.531, 2.309, 3.295, 4.502, 5.934",\
                 "0.1254, 0.1749, 0.3072, 0.5491, 0.9477, 1.532, 2.311, 3.298, 4.498, 5.938",\
                 "0.1256, 0.1751, 0.3076, 0.5484, 0.9462, 1.531, 2.311, 3.293, 4.503, 5.932",\
                 "0.1296, 0.1786, 0.3102, 0.5496, 0.9472, 1.532, 2.311, 3.296, 4.502, 5.931",\
                 "0.1568, 0.207, 0.333, 0.5618, 0.9508, 1.532, 2.311, 3.298, 4.497, 5.936",\
                 "0.1846, 0.2402, 0.368, 0.5882, 0.965, 1.537, 2.312, 3.297, 4.497, 5.936",\
                 "0.2102, 0.2698, 0.4042, 0.6166, 0.981, 1.545, 2.316, 3.296, 4.496, 5.929",\
                 "0.2332, 0.2974, 0.4406, 0.6476, 0.9996, 1.553, 2.318, 3.298, 4.495, 5.932",\
                 "0.2568, 0.3262, 0.4772, 0.6798, 1.02, 1.562, 2.322, 3.302, 4.499, 5.926",\
                 "0.283, 0.3558, 0.5162, 0.717, 1.047, 1.572, 2.328, 3.306, 4.5, 5.93");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.151, 0.2303, 0.4718, 0.9478, 1.725, 2.829, 4.285, 6.114, 8.354, 11.02",\
                 "0.1508, 0.2299, 0.4723, 0.9478, 1.724, 2.827, 4.282, 6.117, 8.359, 11.02",\
                 "0.1507, 0.23, 0.4726, 0.9474, 1.725, 2.825, 4.284, 6.12, 8.362, 11.02",\
                 "0.1564, 0.2356, 0.4746, 0.9482, 1.723, 2.829, 4.284, 6.109, 8.348, 11.02",\
                 "0.168, 0.25, 0.4872, 0.9552, 1.725, 2.826, 4.284, 6.118, 8.352, 11.02",\
                 "0.1832, 0.2668, 0.5014, 0.9614, 1.73, 2.828, 4.281, 6.111, 8.346, 11.02",\
                 "0.2002, 0.2866, 0.5188, 0.97, 1.732, 2.83, 4.282, 6.104, 8.348, 11.01",\
                 "0.2202, 0.3098, 0.5406, 0.979, 1.737, 2.83, 4.282, 6.106, 8.346, 11",\
                 "0.2412, 0.3348, 0.5686, 0.9958, 1.74, 2.835, 4.281, 6.108, 8.337, 11",\
                 "0.2614, 0.3602, 0.6018, 1.017, 1.751, 2.837, 4.284, 6.107, 8.34, 10.99");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.4851, 0.5424, 0.6782, 0.8703, 1.136, 1.499, 1.973, 2.571, 3.301, 4.169",\
                 "0.5089, 0.5663, 0.702, 0.8939, 1.16, 1.523, 1.997, 2.595, 3.324, 4.193",\
                 "0.6041, 0.6614, 0.7971, 0.9894, 1.255, 1.618, 2.093, 2.69, 3.42, 4.288",\
                 "0.7935, 0.8508, 0.9864, 1.178, 1.444, 1.807, 2.282, 2.879, 3.608, 4.478",\
                 "1.048, 1.111, 1.255, 1.452, 1.719, 2.081, 2.556, 3.153, 3.882, 4.752",\
                 "1.323, 1.394, 1.553, 1.759, 2.03, 2.393, 2.868, 3.465, 4.194, 5.063",\
                 "1.625, 1.702, 1.876, 2.092, 2.369, 2.733, 3.208, 3.805, 4.534, 5.402",\
                 "1.963, 2.045, 2.232, 2.46, 2.742, 3.108, 3.582, 4.18, 4.909, 5.778",\
                 "2.344, 2.432, 2.63, 2.869, 3.157, 3.525, 4, 4.597, 5.326, 6.196",\
                 "2.768, 2.861, 3.071, 3.324, 3.619, 3.989, 4.464, 5.061, 5.789, 6.658");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.5016, 0.5728, 0.7621, 1.071, 1.534, 2.181, 3.03, 4.102, 5.407, 6.966",\
                 "0.5197, 0.5909, 0.7801, 1.088, 1.552, 2.199, 3.048, 4.12, 5.422, 6.98",\
                 "0.5585, 0.63, 0.8189, 1.127, 1.591, 2.237, 3.088, 4.155, 5.464, 7.017",\
                 "0.6151, 0.6876, 0.8779, 1.186, 1.649, 2.295, 3.145, 4.215, 5.523, 7.076",\
                 "0.6692, 0.7446, 0.9406, 1.252, 1.716, 2.362, 3.213, 4.282, 5.591, 7.149",\
                 "0.7114, 0.7901, 0.9924, 1.307, 1.771, 2.417, 3.267, 4.337, 5.644, 7.202",\
                 "0.7339, 0.8172, 1.027, 1.344, 1.808, 2.455, 3.304, 4.374, 5.68, 7.237",\
                 "0.7282, 0.8163, 1.036, 1.358, 1.822, 2.468, 3.317, 4.387, 5.692, 7.248",\
                 "0.688, 0.7813, 1.013, 1.344, 1.811, 2.456, 3.305, 4.374, 5.68, 7.235",\
                 "0.6127, 0.7108, 0.9555, 1.296, 1.768, 2.415, 3.263, 4.332, 5.637, 7.192");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1318, 0.1814, 0.313, 0.5531, 0.9503, 1.533, 2.311, 3.294, 4.501, 5.937",\
                 "0.1314, 0.1813, 0.3135, 0.553, 0.9505, 1.533, 2.312, 3.295, 4.502, 5.936",\
                 "0.1316, 0.1815, 0.3131, 0.5528, 0.9506, 1.533, 2.312, 3.295, 4.502, 5.937",\
                 "0.1332, 0.1834, 0.3144, 0.5534, 0.949, 1.533, 2.311, 3.299, 4.498, 5.937",\
                 "0.1582, 0.2086, 0.3332, 0.5618, 0.9528, 1.533, 2.312, 3.298, 4.495, 5.937",\
                 "0.187, 0.2414, 0.3674, 0.5876, 0.965, 1.536, 2.312, 3.297, 4.501, 5.936",\
                 "0.213, 0.273, 0.4036, 0.6148, 0.9806, 1.545, 2.315, 3.298, 4.497, 5.932",\
                 "0.2374, 0.301, 0.4396, 0.6442, 0.9982, 1.553, 2.319, 3.298, 4.496, 5.93",\
                 "0.2596, 0.3276, 0.4742, 0.6752, 1.017, 1.561, 2.323, 3.303, 4.498, 5.927",\
                 "0.284, 0.3556, 0.5102, 0.7072, 1.039, 1.574, 2.328, 3.306, 4.506, 5.932");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.00592, 0.02319, 0.05617, 0.1075, 0.1796, 0.2745, 0.394, 0.5399, 0.7138");
          values("0.1509, 0.2302, 0.4725, 0.9484, 1.723, 2.829, 4.283, 6.113, 8.354, 11.02",\
                 "0.1507, 0.2304, 0.4715, 0.9484, 1.722, 2.829, 4.284, 6.112, 8.362, 11.02",\
                 "0.1516, 0.2306, 0.4724, 0.9468, 1.724, 2.825, 4.278, 6.12, 8.362, 11.03",\
                 "0.1554, 0.235, 0.4738, 0.9482, 1.725, 2.824, 4.285, 6.12, 8.361, 11.03",\
                 "0.1654, 0.2472, 0.4866, 0.953, 1.726, 2.827, 4.282, 6.121, 8.355, 11.02",\
                 "0.177, 0.2626, 0.5004, 0.9616, 1.727, 2.826, 4.281, 6.115, 8.356, 11.02",\
                 "0.1918, 0.2794, 0.5168, 0.9706, 1.73, 2.83, 4.279, 6.111, 8.347, 11.02",\
                 "0.2106, 0.3014, 0.5382, 0.9806, 1.735, 2.828, 4.277, 6.103, 8.345, 11.01",\
                 "0.2316, 0.3264, 0.567, 0.9986, 1.744, 2.834, 4.278, 6.105, 8.332, 11",\
                 "0.253, 0.3522, 0.601, 1.025, 1.76, 2.841, 4.287, 6.106, 8.334, 10.99");
        }
      }
    }
  }

