/*
 * 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__or3_2) {
    area : 26.342400 ;

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

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

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

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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "6.6006e-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.004534 ;
      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.01672, 0.01673, 0.01672, 0.0167, 0.0167, 0.01669, 0.01667, 0.01664, \
                  0.01659, 0.01651");
        }

        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.004635, -0.004652, -0.004675, -0.004677, -0.00468, -0.004696, \
                  -0.004697, -0.004697, -0.004693, -0.004694");
        }
      }

      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.008902, 0.008916, 0.008903, 0.0089, 0.0089, 0.008918, 0.008903, \
                  0.008894, 0.008874, 0.008842");
        }

        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.00465, -0.004665, -0.004692, -0.004702, -0.004703, -0.004722, \
                  -0.004723, -0.004721, -0.004719, -0.004718");
        }
      }

      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.008898, 0.008918, 0.008913, 0.008914, 0.0089, 0.008915, 0.008907, \
                  0.00889, 0.008873, 0.00884");
        }

        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.004653, -0.004673, -0.004693, -0.0047, -0.004713, -0.004723, \
                  -0.004722, -0.004725, -0.004718, -0.004722");
        }
      }
    }

    pin(A2) {
      capacitance : 0.004141 ;
      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.008674, 0.008677, 0.008684, 0.008678, 0.008671, 0.00869, 0.008671, \
                  0.008644, 0.008597, 0.008533");
        }

        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.005177, -0.005192, -0.005198, -0.005216, -0.005225, -0.005248, \
                  -0.005253, -0.005267, -0.005286, -0.005301");
        }
      }

      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.01298, 0.01298, 0.01296, 0.01296, 0.01296, 0.01299, 0.01298, \
                  0.01298, 0.01298, 0.01298");
        }

        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.01102, -0.0117, -0.01227, -0.01248, -0.01256, -0.01264, -0.01267, \
                  -0.01269, -0.01271, -0.01273");
        }
      }

      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.00814, 0.008153, 0.008152, 0.00815, 0.008164, 0.008199, 0.008192, \
                  0.008198, 0.008194, 0.008193");
        }

        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.009091, -0.009129, -0.009162, -0.009146, -0.009161, -0.00919, \
                  -0.009174, -0.009184, -0.009196, -0.00922");
        }
      }
    }

    pin(A3) {
      capacitance : 0.004093 ;
      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.01295, 0.01298, 0.01293, 0.01294, 0.01295, 0.01298, 0.01298, \
                  0.01297, 0.01298, 0.01298");
        }

        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.01173, -0.01207, -0.01238, -0.01252, -0.01259, -0.01267, -0.0127, \
                  -0.01272, -0.01273, -0.01275");
        }
      }

      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.01298, 0.01299, 0.01293, 0.01296, 0.01294, 0.01299, 0.01299, \
                  0.01299, 0.01299, 0.01299");
        }

        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.01083, -0.01118, -0.01168, -0.01203, -0.01223, -0.01235, -0.01243, \
                  -0.01248, -0.01251, -0.01254");
        }
      }

      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.01295, 0.01298, 0.01293, 0.01295, 0.01295, 0.01298, 0.01298, \
                  0.01298, 0.01298, 0.01298");
        }

        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.01182, -0.01207, -0.01239, -0.0125, -0.01258, -0.01268, -0.0127, \
                  -0.01271, -0.01273, -0.01274");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1|A2|A3)" ;
      max_capacitance : 0.7176 ;
      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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.1206, 0.1181, 0.116, 0.1154, 0.1156, 0.1157, 0.1158, 0.1159, 0.116, 0.116",\
                 "0.1197, 0.1172, 0.1151, 0.1147, 0.1148, 0.1149, 0.115, 0.1151, 0.1152, 0.1152",\
                 "0.1187, 0.1162, 0.1141, 0.1136, 0.1137, 0.1139, 0.114, 0.1141, 0.1142, 0.1142",\
                 "0.1192, 0.1167, 0.1146, 0.114, 0.1141, 0.1143, 0.1145, 0.1146, 0.1147, 0.1148",\
                 "0.1241, 0.1211, 0.1181, 0.1169, 0.1167, 0.1168, 0.117, 0.1171, 0.1172, 0.1172",\
                 "0.1326, 0.1287, 0.1244, 0.1225, 0.1219, 0.1216, 0.1215, 0.1216, 0.1216, 0.1217",\
                 "0.1431, 0.1385, 0.133, 0.1302, 0.1289, 0.1283, 0.1282, 0.1281, 0.1281, 0.1281",\
                 "0.1555, 0.1503, 0.1439, 0.1401, 0.1381, 0.1374, 0.137, 0.1368, 0.1367, 0.1367",\
                 "0.1703, 0.1646, 0.1568, 0.1523, 0.1499, 0.1487, 0.1482, 0.1479, 0.1478, 0.1477",\
                 "0.1878, 0.1814, 0.1725, 0.1673, 0.1643, 0.1627, 0.1619, 0.1614, 0.1612, 0.161");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.05737, 0.05765, 0.05923, 0.06123, 0.06282, 0.06417, 0.06534, 0.06656, 0.06885, 0.09092",\
                 "0.05763, 0.05788, 0.05948, 0.06144, 0.06312, 0.06441, 0.06531, 0.06776, 0.06948, 0.08938",\
                 "0.05763, 0.05784, 0.05891, 0.06066, 0.06225, 0.06399, 0.06495, 0.06746, 0.06888, 0.09281",\
                 "0.05912, 0.05894, 0.05923, 0.06039, 0.06219, 0.0636, 0.0651, 0.06716, 0.06923, 0.09565",\
                 "0.06224, 0.06158, 0.06095, 0.06198, 0.06291, 0.06438, 0.06606, 0.06806, 0.07081, 0.1016",\
                 "0.06746, 0.06656, 0.06521, 0.06462, 0.06639, 0.0672, 0.06807, 0.07016, 0.07486, 0.1123",\
                 "0.07519, 0.07359, 0.07146, 0.07068, 0.07089, 0.07317, 0.07437, 0.0749, 0.08016, 0.1295",\
                 "0.08552, 0.08359, 0.08068, 0.07932, 0.0783, 0.07941, 0.08229, 0.08354, 0.08959, 0.1543",\
                 "0.09842, 0.09601, 0.09228, 0.09009, 0.08886, 0.08862, 0.09033, 0.09361, 0.1057, 0.2008",\
                 "0.1142, 0.1111, 0.1067, 0.104, 0.1024, 0.1018, 0.1015, 0.1046, 0.1312, 0.283");
        }
      }

      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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.1289, 0.1265, 0.1244, 0.1239, 0.124, 0.1241, 0.1242, 0.1243, 0.1244, 0.1244",\
                 "0.1282, 0.1258, 0.1237, 0.1233, 0.1234, 0.1234, 0.1236, 0.1237, 0.1238, 0.1238",\
                 "0.1272, 0.1247, 0.1226, 0.1221, 0.1222, 0.1224, 0.1225, 0.1226, 0.1227, 0.1227",\
                 "0.1269, 0.1244, 0.1222, 0.1216, 0.1217, 0.1219, 0.122, 0.1222, 0.1223, 0.1223",\
                 "0.1302, 0.1272, 0.1244, 0.1233, 0.1231, 0.1232, 0.1234, 0.1235, 0.1235, 0.1236",\
                 "0.1362, 0.1328, 0.1292, 0.1276, 0.1271, 0.127, 0.1271, 0.1271, 0.1272, 0.1272",\
                 "0.1453, 0.1413, 0.1368, 0.1348, 0.1339, 0.1336, 0.1335, 0.1336, 0.1336, 0.1336",\
                 "0.1574, 0.1529, 0.1475, 0.1447, 0.1433, 0.1429, 0.1428, 0.1427, 0.1427, 0.1427",\
                 "0.1725, 0.1676, 0.1611, 0.1576, 0.1558, 0.1551, 0.1547, 0.1545, 0.1544, 0.1544",\
                 "0.1911, 0.1856, 0.1781, 0.1737, 0.1713, 0.1701, 0.1695, 0.1692, 0.1691, 0.169");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.0647, 0.06494, 0.06615, 0.06783, 0.06948, 0.07093, 0.07176, 0.07302, 0.07501, 0.09408",\
                 "0.06461, 0.06485, 0.06593, 0.0678, 0.06942, 0.0706, 0.07173, 0.07332, 0.07654, 0.09434",\
                 "0.06421, 0.06437, 0.06532, 0.06687, 0.06879, 0.06997, 0.07098, 0.07212, 0.07414, 0.0955",\
                 "0.06542, 0.06519, 0.06544, 0.06663, 0.06831, 0.06979, 0.07095, 0.07182, 0.07449, 0.09919",\
                 "0.06861, 0.06767, 0.06728, 0.06786, 0.06903, 0.07051, 0.07185, 0.07302, 0.07639, 0.1055",\
                 "0.07387, 0.07276, 0.07142, 0.07122, 0.07323, 0.07351, 0.07488, 0.07602, 0.08012, 0.1168",\
                 "0.08168, 0.08028, 0.07826, 0.07713, 0.07779, 0.07984, 0.08085, 0.08195, 0.08605, 0.137",\
                 "0.09233, 0.09036, 0.08772, 0.08634, 0.08544, 0.08704, 0.08964, 0.09029, 0.097, 0.1656",\
                 "0.1059, 0.1034, 0.1004, 0.09822, 0.09699, 0.09664, 0.09843, 0.1024, 0.1144, 0.2151",\
                 "0.1223, 0.1194, 0.1153, 0.1129, 0.1107, 0.1107, 0.1105, 0.114, 0.1412, 0.3022");
        }
      }

      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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.137, 0.1345, 0.1324, 0.132, 0.1321, 0.1321, 0.1323, 0.1323, 0.1324, 0.1325",\
                 "0.1363, 0.1338, 0.1318, 0.1312, 0.1314, 0.1316, 0.1316, 0.1317, 0.1317, 0.1318",\
                 "0.1353, 0.1328, 0.1306, 0.1302, 0.1303, 0.1304, 0.1305, 0.1306, 0.1307, 0.1308",\
                 "0.1347, 0.1322, 0.13, 0.1295, 0.1295, 0.1298, 0.1299, 0.13, 0.1301, 0.1301",\
                 "0.1367, 0.1339, 0.1312, 0.1303, 0.1302, 0.1303, 0.1305, 0.1305, 0.1306, 0.1306",\
                 "0.1414, 0.1382, 0.1349, 0.1336, 0.1332, 0.1333, 0.1333, 0.1334, 0.1334, 0.1335",\
                 "0.1494, 0.1458, 0.1419, 0.1401, 0.1395, 0.1394, 0.1395, 0.1395, 0.1395, 0.1396",\
                 "0.1614, 0.1574, 0.1529, 0.1506, 0.1497, 0.1494, 0.1493, 0.1493, 0.1493, 0.1493",\
                 "0.1778, 0.1734, 0.1679, 0.1649, 0.1635, 0.1629, 0.1628, 0.1628, 0.1628, 0.1627",\
                 "0.1984, 0.1934, 0.1867, 0.1831, 0.1812, 0.1803, 0.18, 0.1798, 0.1797, 0.1796");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.07236, 0.07247, 0.07322, 0.07492, 0.07649, 0.07799, 0.07915, 0.08002, 0.08264, 0.1015",\
                 "0.07159, 0.07162, 0.07247, 0.07414, 0.07574, 0.07712, 0.0781, 0.07912, 0.08114, 0.1016",\
                 "0.07069, 0.07078, 0.07144, 0.07288, 0.07454, 0.07583, 0.0775, 0.07792, 0.08056, 0.1017",\
                 "0.07178, 0.07142, 0.07154, 0.07258, 0.07415, 0.07562, 0.07663, 0.07822, 0.08062, 0.106",\
                 "0.07507, 0.07415, 0.07368, 0.0742, 0.07511, 0.07661, 0.07825, 0.07972, 0.08219, 0.1119",\
                 "0.08057, 0.07945, 0.07794, 0.07741, 0.07886, 0.07988, 0.0808, 0.08242, 0.08592, 0.1271",\
                 "0.08903, 0.08745, 0.08556, 0.08449, 0.08441, 0.08714, 0.08755, 0.08806, 0.09307, 0.1464",\
                 "0.1005, 0.09875, 0.09622, 0.09466, 0.09383, 0.09431, 0.09742, 0.09819, 0.1059, 0.1758",\
                 "0.1154, 0.1129, 0.1098, 0.1074, 0.1068, 0.1061, 0.1075, 0.1115, 0.1248, 0.2284",\
                 "0.1335, 0.1307, 0.1267, 0.124, 0.1224, 0.1221, 0.1217, 0.1258, 0.1536, 0.3225");
        }
      }

      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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.738, 0.8115, 0.994, 1.242, 1.552, 1.939, 2.424, 3.025, 3.754, 4.623",\
                 "0.7507, 0.8242, 1.007, 1.255, 1.565, 1.952, 2.437, 3.037, 3.767, 4.635",\
                 "0.8191, 0.8926, 1.075, 1.323, 1.633, 2.021, 2.505, 3.106, 3.835, 4.704",\
                 "0.9786, 1.052, 1.234, 1.482, 1.792, 2.179, 2.664, 3.265, 3.994, 4.863",\
                 "1.232, 1.306, 1.489, 1.737, 2.047, 2.435, 2.921, 3.521, 4.249, 5.119",\
                 "1.525, 1.605, 1.796, 2.05, 2.365, 2.756, 3.242, 3.842, 4.571, 5.439",\
                 "1.849, 1.935, 2.137, 2.399, 2.719, 3.114, 3.602, 4.204, 4.933, 5.802",\
                 "2.216, 2.306, 2.519, 2.791, 3.115, 3.512, 4.001, 4.606, 5.338, 6.206",\
                 "2.634, 2.728, 2.951, 3.233, 3.563, 3.962, 4.452, 5.055, 5.787, 6.659",\
                 "3.109, 3.206, 3.438, 3.731, 4.067, 4.468, 4.96, 5.563, 6.294, 7.165");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.3025, 0.3567, 0.5192, 0.8185, 1.281, 1.928, 2.778, 3.849, 5.155, 6.72",\
                 "0.3262, 0.3802, 0.543, 0.8422, 1.305, 1.952, 2.8, 3.871, 5.178, 6.737",\
                 "0.4069, 0.4607, 0.6225, 0.9212, 1.384, 2.032, 2.88, 3.951, 5.26, 6.823",\
                 "0.5223, 0.5797, 0.743, 1.04, 1.503, 2.15, 3.002, 4.074, 5.382, 6.939",\
                 "0.6111, 0.6749, 0.8433, 1.14, 1.602, 2.248, 3.101, 4.172, 5.48, 7.036",\
                 "0.6673, 0.7378, 0.9142, 1.211, 1.671, 2.318, 3.167, 4.241, 5.547, 7.104",\
                 "0.6904, 0.7666, 0.9532, 1.251, 1.71, 2.356, 3.206, 4.276, 5.582, 7.142",\
                 "0.6755, 0.7581, 0.9575, 1.258, 1.715, 2.36, 3.21, 4.28, 5.586, 7.142",\
                 "0.618, 0.7065, 0.9203, 1.227, 1.684, 2.328, 3.177, 4.247, 5.553, 7.109",\
                 "0.5166, 0.6095, 0.8385, 1.153, 1.613, 2.257, 3.104, 4.174, 5.481, 7.036");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.2, 0.2673, 0.4416, 0.7024, 1.083, 1.624, 2.366, 3.329, 4.521, 5.954",\
                 "0.2, 0.2672, 0.4419, 0.7032, 1.082, 1.623, 2.367, 3.327, 4.523, 5.951",\
                 "0.2002, 0.2672, 0.4418, 0.7026, 1.081, 1.624, 2.367, 3.33, 4.521, 5.952",\
                 "0.1998, 0.2668, 0.4422, 0.7026, 1.082, 1.624, 2.367, 3.331, 4.52, 5.953",\
                 "0.211, 0.2756, 0.4484, 0.7064, 1.085, 1.625, 2.368, 3.33, 4.521, 5.949",\
                 "0.2388, 0.3058, 0.4736, 0.7282, 1.101, 1.635, 2.372, 3.332, 4.522, 5.948",\
                 "0.2652, 0.3364, 0.5062, 0.7518, 1.12, 1.654, 2.385, 3.336, 4.526, 5.948",\
                 "0.2884, 0.3644, 0.54, 0.778, 1.139, 1.666, 2.396, 3.35, 4.534, 5.953",\
                 "0.3098, 0.3882, 0.5728, 0.8076, 1.159, 1.676, 2.404, 3.354, 4.541, 5.962",\
                 "0.3314, 0.413, 0.6056, 0.84, 1.182, 1.692, 2.406, 3.356, 4.544, 5.968");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.1154, 0.1816, 0.4307, 0.9329, 1.723, 2.828, 4.29, 6.127, 8.359, 11.05",\
                 "0.1153, 0.1826, 0.4306, 0.933, 1.723, 2.826, 4.29, 6.125, 8.363, 11.02",\
                 "0.1161, 0.1824, 0.4309, 0.9343, 1.721, 2.827, 4.29, 6.125, 8.357, 11.05",\
                 "0.131, 0.1948, 0.434, 0.934, 1.721, 2.83, 4.286, 6.122, 8.357, 11.04",\
                 "0.152, 0.2166, 0.4428, 0.936, 1.72, 2.824, 4.28, 6.121, 8.366, 11.04",\
                 "0.174, 0.2424, 0.4558, 0.9392, 1.722, 2.826, 4.275, 6.113, 8.358, 11.03",\
                 "0.1938, 0.2684, 0.474, 0.9416, 1.725, 2.825, 4.277, 6.109, 8.348, 11.02",\
                 "0.2162, 0.297, 0.4996, 0.95, 1.729, 2.826, 4.277, 6.104, 8.337, 11.02",\
                 "0.2384, 0.3258, 0.5338, 0.9616, 1.73, 2.83, 4.279, 6.108, 8.338, 11",\
                 "0.2616, 0.3538, 0.572, 0.981, 1.739, 2.834, 4.286, 6.108, 8.338, 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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.8341, 0.9077, 1.09, 1.338, 1.648, 2.036, 2.52, 3.121, 3.85, 4.719",\
                 "0.85, 0.9234, 1.106, 1.354, 1.664, 2.051, 2.536, 3.137, 3.866, 4.735",\
                 "0.9103, 0.9839, 1.166, 1.414, 1.724, 2.112, 2.597, 3.197, 3.926, 4.795",\
                 "1.028, 1.101, 1.283, 1.531, 1.841, 2.229, 2.713, 3.314, 4.043, 4.912",\
                 "1.207, 1.282, 1.468, 1.718, 2.029, 2.417, 2.902, 3.502, 4.231, 5.1",\
                 "1.433, 1.511, 1.704, 1.963, 2.281, 2.673, 3.159, 3.759, 4.489, 5.357",\
                 "1.709, 1.792, 1.992, 2.259, 2.583, 2.98, 3.47, 4.072, 4.801, 5.669",\
                 "2.038, 2.123, 2.331, 2.606, 2.936, 3.336, 3.828, 4.432, 5.164, 6.032",\
                 "2.418, 2.507, 2.722, 3.006, 3.342, 3.747, 4.24, 4.843, 5.575, 6.446",\
                 "2.849, 2.941, 3.165, 3.46, 3.803, 4.212, 4.707, 5.311, 6.043, 6.914");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.3364, 0.391, 0.5541, 0.8533, 1.316, 1.962, 2.813, 3.883, 5.19, 6.748",\
                 "0.3591, 0.4137, 0.5768, 0.8759, 1.338, 1.985, 2.836, 3.905, 5.212, 6.771",\
                 "0.4392, 0.4936, 0.6562, 0.9551, 1.418, 2.064, 2.915, 3.986, 5.293, 6.85",\
                 "0.5672, 0.6242, 0.7873, 1.085, 1.547, 2.195, 3.045, 4.116, 5.423, 6.981",\
                 "0.6753, 0.7374, 0.9053, 1.202, 1.664, 2.311, 3.162, 4.233, 5.54, 7.097",\
                 "0.7521, 0.8208, 0.9952, 1.292, 1.753, 2.4, 3.25, 4.321, 5.627, 7.186",\
                 "0.7972, 0.8717, 1.056, 1.353, 1.813, 2.459, 3.309, 4.379, 5.686, 7.244",\
                 "0.8082, 0.8884, 1.083, 1.383, 1.842, 2.487, 3.336, 4.406, 5.713, 7.27",\
                 "0.781, 0.8665, 1.075, 1.379, 1.837, 2.481, 3.33, 4.4, 5.707, 7.264",\
                 "0.7143, 0.8044, 1.027, 1.338, 1.796, 2.442, 3.29, 4.359, 5.666, 7.223");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.2005, 0.2673, 0.4418, 0.7026, 1.083, 1.623, 2.367, 3.33, 4.523, 5.953",\
                 "0.2003, 0.2673, 0.4418, 0.7024, 1.083, 1.623, 2.367, 3.331, 4.523, 5.953",\
                 "0.2, 0.2674, 0.4426, 0.7028, 1.083, 1.624, 2.367, 3.329, 4.518, 5.954",\
                 "0.2002, 0.2676, 0.4428, 0.7026, 1.082, 1.623, 2.367, 3.327, 4.522, 5.952",\
                 "0.2128, 0.2798, 0.4526, 0.7092, 1.088, 1.626, 2.368, 3.331, 4.523, 5.95",\
                 "0.228, 0.2972, 0.4766, 0.7342, 1.105, 1.637, 2.373, 3.333, 4.522, 5.953",\
                 "0.2442, 0.316, 0.499, 0.7584, 1.127, 1.658, 2.385, 3.339, 4.522, 5.954",\
                 "0.262, 0.336, 0.523, 0.7826, 1.149, 1.671, 2.397, 3.348, 4.531, 5.953",\
                 "0.2814, 0.357, 0.5482, 0.8092, 1.171, 1.688, 2.407, 3.352, 4.535, 5.957",\
                 "0.3038, 0.383, 0.5792, 0.841, 1.196, 1.704, 2.416, 3.358, 4.538, 5.964");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.1176, 0.1844, 0.432, 0.9354, 1.723, 2.827, 4.284, 6.118, 8.357, 11.02",\
                 "0.1175, 0.1844, 0.4323, 0.9347, 1.722, 2.825, 4.285, 6.116, 8.356, 11.02",\
                 "0.118, 0.1843, 0.4321, 0.9342, 1.723, 2.828, 4.283, 6.118, 8.355, 11.01",\
                 "0.129, 0.1932, 0.4338, 0.9346, 1.723, 2.829, 4.285, 6.114, 8.356, 11.01",\
                 "0.149, 0.2132, 0.4424, 0.9364, 1.723, 2.829, 4.284, 6.117, 8.355, 11.01",\
                 "0.169, 0.2356, 0.4548, 0.94, 1.723, 2.83, 4.281, 6.111, 8.346, 11.02",\
                 "0.1884, 0.2614, 0.47, 0.943, 1.723, 2.828, 4.276, 6.112, 8.346, 11.02",\
                 "0.2086, 0.2868, 0.4924, 0.9492, 1.728, 2.827, 4.278, 6.105, 8.339, 11.02",\
                 "0.23, 0.3146, 0.52, 0.959, 1.73, 2.833, 4.279, 6.112, 8.338, 11.02",\
                 "0.2498, 0.3402, 0.554, 0.9742, 1.739, 2.837, 4.28, 6.109, 8.344, 11");
        }
      }

      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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.8722, 0.9458, 1.128, 1.376, 1.686, 2.074, 2.559, 3.159, 3.888, 4.757",\
                 "0.8925, 0.966, 1.149, 1.396, 1.706, 2.094, 2.579, 3.179, 3.909, 4.777",\
                 "0.9545, 1.028, 1.211, 1.458, 1.769, 2.156, 2.641, 3.241, 3.97, 4.839",\
                 "1.054, 1.127, 1.31, 1.557, 1.868, 2.255, 2.74, 3.34, 4.07, 4.938",\
                 "1.188, 1.263, 1.448, 1.698, 2.009, 2.396, 2.881, 3.482, 4.211, 5.08",\
                 "1.349, 1.427, 1.618, 1.876, 2.193, 2.584, 3.07, 3.671, 4.4, 5.269",\
                 "1.554, 1.635, 1.832, 2.097, 2.421, 2.817, 3.306, 3.908, 4.638, 5.507",\
                 "1.813, 1.896, 2.098, 2.371, 2.702, 3.102, 3.594, 4.196, 4.927, 5.796",\
                 "2.121, 2.207, 2.417, 2.698, 3.036, 3.441, 3.936, 4.54, 5.271, 6.14",\
                 "2.473, 2.563, 2.781, 3.073, 3.42, 3.832, 4.33, 4.935, 5.667, 6.535");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.3563, 0.4122, 0.5772, 0.8778, 1.341, 1.989, 2.839, 3.911, 5.217, 6.775",\
                 "0.3775, 0.4334, 0.5984, 0.8993, 1.363, 2.01, 2.861, 3.931, 5.239, 6.796",\
                 "0.4578, 0.5135, 0.678, 0.9783, 1.442, 2.089, 2.94, 4.01, 5.318, 6.874",\
                 "0.5959, 0.653, 0.8174, 1.116, 1.579, 2.227, 3.077, 4.148, 5.454, 7.011",\
                 "0.7192, 0.7817, 0.9506, 1.248, 1.71, 2.358, 3.209, 4.279, 5.585, 7.143",\
                 "0.8138, 0.8825, 1.057, 1.355, 1.816, 2.463, 3.314, 4.385, 5.691, 7.248",\
                 "0.8798, 0.9541, 1.138, 1.436, 1.896, 2.542, 3.392, 4.463, 5.77, 7.327",\
                 "0.9159, 0.9959, 1.19, 1.489, 1.949, 2.594, 3.444, 4.514, 5.821, 7.377",\
                 "0.9195, 1.005, 1.211, 1.514, 1.974, 2.618, 3.468, 4.537, 5.844, 7.401",\
                 "0.89, 0.9795, 1.198, 1.508, 1.968, 2.613, 3.462, 4.532, 5.839, 7.396");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.2002, 0.2674, 0.4418, 0.7026, 1.083, 1.623, 2.367, 3.331, 4.523, 5.953",\
                 "0.2002, 0.2672, 0.4416, 0.703, 1.082, 1.623, 2.367, 3.331, 4.522, 5.953",\
                 "0.2, 0.2672, 0.4422, 0.7028, 1.083, 1.623, 2.368, 3.329, 4.52, 5.947",\
                 "0.2004, 0.2676, 0.443, 0.7026, 1.083, 1.623, 2.367, 3.327, 4.519, 5.954",\
                 "0.209, 0.2766, 0.45, 0.708, 1.086, 1.625, 2.367, 3.327, 4.523, 5.946",\
                 "0.2214, 0.2908, 0.47, 0.7296, 1.102, 1.636, 2.371, 3.33, 4.518, 5.954",\
                 "0.2332, 0.3044, 0.4894, 0.752, 1.125, 1.653, 2.382, 3.335, 4.523, 5.954",\
                 "0.2462, 0.3186, 0.5078, 0.7738, 1.146, 1.671, 2.394, 3.343, 4.526, 5.956",\
                 "0.2642, 0.3382, 0.531, 0.7998, 1.168, 1.69, 2.407, 3.35, 4.53, 5.952",\
                 "0.2852, 0.3614, 0.5592, 0.8328, 1.2, 1.712, 2.422, 3.362, 4.534, 5.958");
        }

        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.005946, 0.02331, 0.05647, 0.1081, 0.1806, 0.276, 0.3961, 0.5428, 0.7176");
          values("0.1221, 0.1894, 0.4368, 0.9374, 1.723, 2.827, 4.279, 6.118, 8.356, 11.02",\
                 "0.1217, 0.1895, 0.437, 0.9389, 1.724, 2.829, 4.282, 6.116, 8.355, 11.02",\
                 "0.1213, 0.1884, 0.4367, 0.9387, 1.723, 2.828, 4.284, 6.112, 8.351, 11.01",\
                 "0.1298, 0.1948, 0.437, 0.9382, 1.724, 2.83, 4.279, 6.109, 8.348, 11.01",\
                 "0.1496, 0.2136, 0.4446, 0.9376, 1.722, 2.83, 4.284, 6.117, 8.347, 11.01",\
                 "0.17, 0.2358, 0.4552, 0.9424, 1.725, 2.83, 4.281, 6.117, 8.345, 11.02",\
                 "0.1882, 0.2604, 0.4702, 0.9456, 1.727, 2.827, 4.28, 6.113, 8.345, 11.02",\
                 "0.2066, 0.284, 0.4896, 0.9506, 1.73, 2.829, 4.281, 6.106, 8.346, 11.02",\
                 "0.2274, 0.31, 0.5164, 0.9588, 1.733, 2.831, 4.281, 6.109, 8.338, 11.02",\
                 "0.246, 0.335, 0.5476, 0.973, 1.739, 2.84, 4.283, 6.111, 8.344, 11");
        }
      }
    }
  }

