/*
 * 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 : "0.00044196" ;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.01871, 0.01872, 0.01871, 0.01868, 0.01867, 0.01864, 0.01858, \
                  0.01848, 0.01833, 0.01794");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.004471, -0.0045, -0.004508, -0.004512, -0.004524, -0.004526, \
                  -0.004528, -0.004527, -0.004522, -0.004517");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.009742, 0.009734, 0.009735, 0.009747, 0.009745, 0.009728, 0.009706, \
                  0.009675, 0.009611, 0.009471");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.00449, -0.004516, -0.004529, -0.004541, -0.004558, -0.004557, \
                  -0.004559, -0.004558, -0.004555, -0.004556");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.009729, 0.009739, 0.009747, 0.00974, 0.009743, 0.009732, 0.009711, \
                  0.009675, 0.009613, 0.009471");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.004487, -0.004526, -0.004532, -0.004543, -0.004556, -0.004562, \
                  -0.00456, -0.00456, -0.004556, -0.00456");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.009053, 0.009043, 0.009055, 0.009043, 0.009054, 0.00902, 0.008977, \
                  0.008906, 0.008778, 0.00855");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.00538, -0.005396, -0.005407, -0.00542, -0.005454, -0.005459, \
                  -0.005479, -0.005505, -0.005552, -0.00562");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.01345, 0.01345, 0.01343, 0.01342, 0.01346, 0.01346, 0.01345, \
                  0.01347, 0.01346, 0.01345");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01251, -0.01254, -0.01277, -0.01297, -0.0131, -0.01315, -0.01319, \
                  -0.01321, -0.01322, -0.01324");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.008519, 0.008528, 0.008545, 0.008561, 0.008584, 0.008583, 0.008586, \
                  0.008588, 0.008583, 0.008587");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01186, -0.01183, -0.01178, -0.01174, -0.01174, -0.01169, -0.01167, \
                  -0.01163, -0.01159, -0.01153");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.01342, 0.01343, 0.01341, 0.01341, 0.01344, 0.01345, 0.01346, \
                  0.01345, 0.01344, 0.01345");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01274, -0.01278, -0.0129, -0.01304, -0.01314, -0.01318, -0.01321, \
                  -0.01323, -0.01325, -0.01327");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.01344, 0.01346, 0.01344, 0.01345, 0.01346, 0.01347, 0.01347, \
                  0.01347, 0.01347, 0.01348");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.0113, -0.01161, -0.01214, -0.01253, -0.01275, -0.01286, -0.01295, \
                  -0.013, -0.01304, -0.01308");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.01341, 0.01341, 0.01341, 0.0134, 0.01346, 0.01345, 0.01345, \
                  0.01345, 0.01343, 0.01344");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01278, -0.01279, -0.01291, -0.01303, -0.01315, -0.01318, -0.01321, \
                  -0.01323, -0.01324, -0.01326");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1|A2|A3)" ;
      max_capacitance : 0.7097 ;
      max_transition : 15.6 ;
      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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.1432, 0.1384, 0.1311, 0.1272, 0.1251, 0.1238, 0.1231, 0.1225, 0.1222, 0.1219",\
                 "0.1424, 0.1376, 0.1303, 0.1264, 0.1243, 0.123, 0.1223, 0.1217, 0.1214, 0.1211",\
                 "0.1417, 0.1369, 0.1296, 0.1257, 0.1235, 0.1223, 0.1216, 0.121, 0.1207, 0.1204",\
                 "0.1436, 0.1388, 0.1314, 0.1274, 0.1254, 0.1242, 0.1234, 0.1229, 0.1226, 0.1224",\
                 "0.1521, 0.1469, 0.1386, 0.1338, 0.1313, 0.1298, 0.1289, 0.1283, 0.1279, 0.1277",\
                 "0.167, 0.161, 0.151, 0.1448, 0.1412, 0.1393, 0.1381, 0.1373, 0.1368, 0.1364",\
                 "0.1856, 0.1788, 0.1671, 0.1595, 0.155, 0.1525, 0.1509, 0.1499, 0.1492, 0.1487",\
                 "0.2083, 0.201, 0.1877, 0.1786, 0.173, 0.1699, 0.1678, 0.1665, 0.1656, 0.1648",\
                 "0.2362, 0.2283, 0.2134, 0.2027, 0.196, 0.1918, 0.189, 0.1875, 0.1862, 0.1848",\
                 "0.2696, 0.2611, 0.2443, 0.2318, 0.2238, 0.2187, 0.2152, 0.213, 0.211, 0.208");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.06221, 0.06216, 0.06327, 0.06473, 0.06621, 0.06734, 0.06818, 0.07348, 0.1173, 0.3325",\
                 "0.06265, 0.06263, 0.06366, 0.06521, 0.06657, 0.06779, 0.0692, 0.07401, 0.1187, 0.3368",\
                 "0.06365, 0.06347, 0.06386, 0.0653, 0.06666, 0.06806, 0.0695, 0.07465, 0.1246, 0.3473",\
                 "0.06804, 0.0671, 0.06651, 0.06698, 0.06807, 0.06926, 0.07069, 0.07683, 0.1331, 0.3834",\
                 "0.0753, 0.07367, 0.0715, 0.0716, 0.07203, 0.07286, 0.07426, 0.08161, 0.1483, 0.4302",\
                 "0.08658, 0.08408, 0.08076, 0.07904, 0.07947, 0.08003, 0.08049, 0.09107, 0.1734, 0.5001",\
                 "0.102, 0.09897, 0.0941, 0.09077, 0.08994, 0.09068, 0.09193, 0.1058, 0.2155, 0.6018",\
                 "0.1222, 0.1181, 0.1122, 0.1077, 0.1053, 0.1044, 0.1072, 0.1309, 0.2826, 0.7466",\
                 "0.1471, 0.1422, 0.1346, 0.1291, 0.1249, 0.1228, 0.1255, 0.1686, 0.3911, 0.9525",\
                 "0.1771, 0.171, 0.162, 0.1547, 0.1501, 0.1469, 0.1518, 0.2327, 0.5655, 1.218");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.1526, 0.1477, 0.1405, 0.1365, 0.1344, 0.1332, 0.1325, 0.1319, 0.1315, 0.1313",\
                 "0.1519, 0.1471, 0.1399, 0.1359, 0.1338, 0.1325, 0.1318, 0.1312, 0.1308, 0.1306",\
                 "0.1508, 0.1459, 0.1386, 0.1347, 0.1326, 0.1313, 0.1306, 0.1301, 0.1297, 0.1294",\
                 "0.1513, 0.1465, 0.139, 0.1349, 0.1328, 0.1316, 0.1308, 0.1303, 0.1299, 0.1297",\
                 "0.1586, 0.1533, 0.1449, 0.14, 0.1374, 0.1359, 0.1349, 0.1343, 0.1339, 0.1336",\
                 "0.1711, 0.1654, 0.1559, 0.15, 0.1468, 0.145, 0.1438, 0.1431, 0.1426, 0.1422",\
                 "0.1887, 0.1825, 0.1719, 0.1651, 0.1612, 0.1589, 0.1575, 0.1566, 0.1559, 0.1554",\
                 "0.2122, 0.2056, 0.1937, 0.1855, 0.1807, 0.1778, 0.176, 0.1749, 0.174, 0.1734",\
                 "0.242, 0.235, 0.2215, 0.2117, 0.2058, 0.2021, 0.1998, 0.1983, 0.1972, 0.196",\
                 "0.2782, 0.2705, 0.2554, 0.2439, 0.2366, 0.232, 0.2291, 0.227, 0.2252, 0.2226");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.07117, 0.0709, 0.07146, 0.07288, 0.07418, 0.07528, 0.07648, 0.08094, 0.1258, 0.3377",\
                 "0.07107, 0.0708, 0.07138, 0.07279, 0.07415, 0.07513, 0.07648, 0.08087, 0.1259, 0.3433",\
                 "0.07119, 0.07087, 0.07118, 0.07237, 0.07379, 0.07486, 0.07618, 0.08121, 0.1306, 0.3594",\
                 "0.07523, 0.07423, 0.07334, 0.07375, 0.07472, 0.07594, 0.07737, 0.08333, 0.1409, 0.3913",\
                 "0.08256, 0.08096, 0.07869, 0.07837, 0.07889, 0.07963, 0.08103, 0.08864, 0.1565, 0.4409",\
                 "0.09425, 0.09212, 0.08864, 0.08671, 0.08708, 0.08731, 0.08778, 0.09857, 0.1842, 0.5143",\
                 "0.1107, 0.1077, 0.1031, 0.0994, 0.09833, 0.09928, 0.1005, 0.1146, 0.2285, 0.6234",\
                 "0.1322, 0.1283, 0.1223, 0.118, 0.1152, 0.1149, 0.1174, 0.1422, 0.3008, 0.7767",\
                 "0.159, 0.1544, 0.147, 0.1413, 0.1373, 0.135, 0.1376, 0.1848, 0.4186, 0.9919",\
                 "0.1915, 0.1857, 0.1772, 0.1698, 0.1649, 0.1615, 0.1675, 0.256, 0.607, 1.269");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.1616, 0.1567, 0.1495, 0.1455, 0.1434, 0.1422, 0.1415, 0.1409, 0.1405, 0.1402",\
                 "0.1609, 0.1561, 0.1489, 0.1449, 0.1428, 0.1415, 0.1408, 0.1402, 0.1399, 0.1396",\
                 "0.1597, 0.1549, 0.1477, 0.1437, 0.1415, 0.1403, 0.1396, 0.139, 0.1387, 0.1384",\
                 "0.1595, 0.1547, 0.1473, 0.1432, 0.1411, 0.1399, 0.1392, 0.1386, 0.1383, 0.138",\
                 "0.1648, 0.1596, 0.1515, 0.1468, 0.1443, 0.1429, 0.142, 0.1414, 0.141, 0.1407",\
                 "0.1762, 0.1706, 0.1616, 0.1561, 0.153, 0.1513, 0.1503, 0.1495, 0.1491, 0.1487",\
                 "0.195, 0.1891, 0.1788, 0.1721, 0.1685, 0.1664, 0.165, 0.1641, 0.1635, 0.1631",\
                 "0.2222, 0.2157, 0.204, 0.196, 0.1913, 0.1884, 0.1867, 0.1855, 0.1847, 0.184",\
                 "0.2574, 0.2503, 0.2368, 0.2271, 0.2211, 0.2173, 0.215, 0.2135, 0.2124, 0.2112",\
                 "0.3, 0.2924, 0.2771, 0.2655, 0.2579, 0.2531, 0.2501, 0.2479, 0.2462, 0.2439");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.08044, 0.08001, 0.08021, 0.0814, 0.08264, 0.08364, 0.08503, 0.08981, 0.1345, 0.3489",\
                 "0.07956, 0.07915, 0.07936, 0.0805, 0.0818, 0.0831, 0.08389, 0.08831, 0.1358, 0.353",\
                 "0.07881, 0.07822, 0.07819, 0.07933, 0.0806, 0.08169, 0.08296, 0.08828, 0.1369, 0.3674",\
                 "0.08237, 0.08142, 0.08022, 0.08023, 0.08147, 0.08235, 0.08411, 0.0898, 0.1466, 0.3993",\
                 "0.0903, 0.08845, 0.08603, 0.08548, 0.08549, 0.08658, 0.08803, 0.09565, 0.1637, 0.4509",\
                 "0.103, 0.1006, 0.09691, 0.09454, 0.09491, 0.09501, 0.09584, 0.1062, 0.1934, 0.529",\
                 "0.1214, 0.1182, 0.1133, 0.1094, 0.108, 0.1088, 0.1095, 0.1247, 0.2417, 0.6417",\
                 "0.1461, 0.142, 0.1359, 0.131, 0.1282, 0.1265, 0.1297, 0.1554, 0.3195, 0.8051",\
                 "0.1771, 0.1722, 0.1649, 0.1584, 0.154, 0.1513, 0.1543, 0.2046, 0.4486, 1.033",\
                 "0.2148, 0.209, 0.2, 0.1924, 0.1869, 0.183, 0.1898, 0.2869, 0.6548, 1.324");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("1.102, 1.203, 1.457, 1.809, 2.242, 2.769, 3.411, 4.193, 5.135, 6.254",\
                 "1.116, 1.217, 1.471, 1.823, 2.256, 2.783, 3.425, 4.207, 5.149, 6.268",\
                 "1.203, 1.304, 1.558, 1.909, 2.343, 2.87, 3.512, 4.294, 5.236, 6.355",\
                 "1.421, 1.522, 1.774, 2.126, 2.56, 3.086, 3.728, 4.511, 5.453, 6.572",\
                 "1.782, 1.883, 2.136, 2.487, 2.921, 3.447, 4.09, 4.872, 5.814, 6.933",\
                 "2.223, 2.329, 2.589, 2.947, 3.387, 3.917, 4.562, 5.343, 6.286, 7.404",\
                 "2.74, 2.851, 3.121, 3.484, 3.93, 4.466, 5.116, 5.901, 6.844, 7.963",\
                 "3.346, 3.462, 3.743, 4.115, 4.566, 5.106, 5.757, 6.545, 7.492, 8.612",\
                 "4.046, 4.168, 4.462, 4.845, 5.304, 5.848, 6.502, 7.29, 8.238, 9.361",\
                 "4.845, 4.973, 5.28, 5.679, 6.149, 6.701, 7.359, 8.15, 9.095, 10.22");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.4142, 0.4901, 0.7171, 1.127, 1.762, 2.65, 3.818, 5.289, 7.092, 9.227",\
                 "0.4461, 0.522, 0.7485, 1.159, 1.793, 2.682, 3.852, 5.324, 7.123, 9.251",\
                 "0.554, 0.6294, 0.8548, 1.265, 1.9, 2.788, 3.959, 5.432, 7.226, 9.366",\
                 "0.6952, 0.7743, 1.003, 1.41, 2.045, 2.934, 4.101, 5.569, 7.373, 9.51",\
                 "0.7887, 0.874, 1.11, 1.517, 2.151, 3.037, 4.207, 5.674, 7.47, 9.608",\
                 "0.8274, 0.9194, 1.166, 1.574, 2.204, 3.09, 4.256, 5.728, 7.521, 9.663",\
                 "0.8007, 0.9001, 1.16, 1.573, 2.202, 3.086, 4.252, 5.72, 7.514, 9.658",\
                 "0.7019, 0.8083, 1.085, 1.507, 2.137, 3.021, 4.185, 5.652, 7.446, 9.582",\
                 "0.5249, 0.6381, 0.9322, 1.366, 2, 2.888, 4.052, 5.519, 7.312, 9.446",\
                 "0.2683, 0.3887, 0.6981, 1.145, 1.786, 2.679, 3.852, 5.317, 7.108, 9.244");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.3254, 0.4206, 0.6696, 1.042, 1.556, 2.268, 3.229, 4.485, 6.047, 7.94",\
                 "0.3254, 0.4204, 0.668, 1.042, 1.555, 2.267, 3.228, 4.485, 6.043, 7.941",\
                 "0.3256, 0.4206, 0.6696, 1.042, 1.557, 2.268, 3.228, 4.48, 6.043, 7.939",\
                 "0.3252, 0.4206, 0.6672, 1.042, 1.557, 2.268, 3.231, 4.485, 6.043, 7.938",\
                 "0.337, 0.4304, 0.675, 1.048, 1.562, 2.271, 3.232, 4.484, 6.052, 7.93",\
                 "0.3754, 0.4688, 0.7066, 1.077, 1.584, 2.287, 3.241, 4.489, 6.051, 7.939",\
                 "0.4112, 0.508, 0.7426, 1.108, 1.613, 2.315, 3.263, 4.504, 6.054, 7.945",\
                 "0.4458, 0.5476, 0.7848, 1.142, 1.64, 2.335, 3.284, 4.522, 6.074, 7.946",\
                 "0.484, 0.594, 0.836, 1.184, 1.676, 2.358, 3.296, 4.534, 6.088, 7.964",\
                 "0.528, 0.642, 0.894, 1.24, 1.724, 2.398, 3.326, 4.546, 6.094, 7.972");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.1756, 0.2743, 0.6245, 1.333, 2.448, 4.015, 6.071, 8.676, 11.85, 15.61",\
                 "0.1754, 0.274, 0.6244, 1.332, 2.447, 4.015, 6.075, 8.672, 11.85, 15.62",\
                 "0.1752, 0.2748, 0.6246, 1.335, 2.448, 4.015, 6.076, 8.679, 11.84, 15.61",\
                 "0.1956, 0.2944, 0.6326, 1.334, 2.448, 4.012, 6.076, 8.674, 11.84, 15.62",\
                 "0.2216, 0.322, 0.6496, 1.34, 2.45, 4.017, 6.071, 8.664, 11.84, 15.63",\
                 "0.2524, 0.3552, 0.6736, 1.347, 2.454, 4.014, 6.07, 8.666, 11.83, 15.61",\
                 "0.2844, 0.3934, 0.7102, 1.361, 2.458, 4.017, 6.071, 8.677, 11.82, 15.6",\
                 "0.3218, 0.4326, 0.754, 1.386, 2.471, 4.028, 6.074, 8.661, 11.85, 15.59",\
                 "0.3596, 0.4752, 0.8036, 1.419, 2.5, 4.042, 6.083, 8.668, 11.83, 15.6",\
                 "0.3992, 0.5178, 0.8584, 1.458, 2.526, 4.08, 6.114, 8.692, 11.83, 15.6");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("1.275, 1.376, 1.629, 1.981, 2.414, 2.941, 3.584, 4.365, 5.307, 6.427",\
                 "1.292, 1.393, 1.646, 1.998, 2.432, 2.959, 3.601, 4.383, 5.325, 6.444",\
                 "1.36, 1.461, 1.714, 2.066, 2.499, 3.026, 3.669, 4.451, 5.393, 6.512",\
                 "1.498, 1.599, 1.852, 2.203, 2.636, 3.164, 3.806, 4.588, 5.53, 6.649",\
                 "1.737, 1.84, 2.097, 2.45, 2.885, 3.413, 4.056, 4.838, 5.78, 6.899",\
                 "2.065, 2.172, 2.438, 2.802, 3.247, 3.781, 4.425, 5.208, 6.15, 7.268",\
                 "2.493, 2.602, 2.876, 3.249, 3.702, 4.243, 4.895, 5.681, 6.625, 7.743",\
                 "3.014, 3.129, 3.411, 3.793, 4.255, 4.803, 5.458, 6.248, 7.194, 8.313",\
                 "3.623, 3.743, 4.035, 4.43, 4.904, 5.46, 6.121, 6.913, 7.86, 8.982",\
                 "4.315, 4.44, 4.746, 5.156, 5.647, 6.216, 6.886, 7.682, 8.631, 9.753");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.4626, 0.5394, 0.7673, 1.178, 1.813, 2.702, 3.868, 5.339, 7.133, 9.269",\
                 "0.4926, 0.5694, 0.7972, 1.208, 1.843, 2.732, 3.9, 5.367, 7.161, 9.298",\
                 "0.5995, 0.676, 0.9027, 1.314, 1.949, 2.838, 4.005, 5.476, 7.271, 9.41",\
                 "0.7597, 0.839, 1.067, 1.475, 2.109, 2.998, 4.165, 5.637, 7.432, 9.567",\
                 "0.8801, 0.9652, 1.2, 1.607, 2.241, 3.128, 4.295, 5.767, 7.562, 9.7",\
                 "0.9493, 1.041, 1.285, 1.693, 2.324, 3.21, 4.376, 5.848, 7.642, 9.781",\
                 "0.9601, 1.057, 1.314, 1.726, 2.356, 3.24, 4.406, 5.875, 7.669, 9.806",\
                 "0.9061, 1.01, 1.282, 1.702, 2.333, 3.217, 4.382, 5.849, 7.643, 9.782",\
                 "0.7835, 0.895, 1.182, 1.613, 2.248, 3.135, 4.3, 5.768, 7.559, 9.695",\
                 "0.5911, 0.7091, 1.012, 1.454, 2.095, 2.989, 4.158, 5.627, 7.418, 9.554");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.3256, 0.4206, 0.6686, 1.042, 1.557, 2.267, 3.23, 4.484, 6.05, 7.938",\
                 "0.3252, 0.421, 0.6686, 1.043, 1.555, 2.268, 3.23, 4.484, 6.049, 7.938",\
                 "0.3262, 0.421, 0.669, 1.042, 1.557, 2.268, 3.229, 4.485, 6.05, 7.938",\
                 "0.3262, 0.4214, 0.6694, 1.043, 1.557, 2.268, 3.229, 4.486, 6.044, 7.94",\
                 "0.3456, 0.4406, 0.6842, 1.055, 1.564, 2.273, 3.235, 4.486, 6.052, 7.939",\
                 "0.3668, 0.4656, 0.7174, 1.088, 1.594, 2.293, 3.246, 4.487, 6.054, 7.943",\
                 "0.3892, 0.4908, 0.7444, 1.121, 1.627, 2.325, 3.268, 4.508, 6.061, 7.945",\
                 "0.4174, 0.5222, 0.78, 1.16, 1.661, 2.354, 3.292, 4.524, 6.074, 7.956",\
                 "0.452, 0.562, 0.826, 1.206, 1.708, 2.386, 3.32, 4.54, 6.082, 7.958",\
                 "0.496, 0.608, 0.88, 1.266, 1.772, 2.444, 3.36, 4.566, 6.096, 7.974");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.1789, 0.2787, 0.628, 1.337, 2.449, 4.013, 6.07, 8.669, 11.82, 15.6",\
                 "0.1791, 0.2787, 0.6282, 1.335, 2.449, 4.012, 6.072, 8.667, 11.83, 15.6",\
                 "0.1787, 0.2781, 0.6282, 1.337, 2.453, 4.014, 6.073, 8.666, 11.83, 15.61",\
                 "0.195, 0.293, 0.633, 1.334, 2.451, 4.013, 6.069, 8.671, 11.84, 15.6",\
                 "0.2192, 0.3192, 0.6496, 1.341, 2.45, 4.012, 6.072, 8.675, 11.83, 15.6",\
                 "0.2468, 0.351, 0.6714, 1.348, 2.456, 4.015, 6.069, 8.664, 11.83, 15.6",\
                 "0.2774, 0.3844, 0.7032, 1.361, 2.459, 4.018, 6.073, 8.679, 11.83, 15.62",\
                 "0.3112, 0.4226, 0.7438, 1.384, 2.473, 4.026, 6.075, 8.665, 11.83, 15.6",\
                 "0.347, 0.462, 0.7888, 1.414, 2.499, 4.047, 6.092, 8.668, 11.83, 15.62",\
                 "0.3832, 0.501, 0.84, 1.45, 2.524, 4.076, 6.118, 8.686, 11.83, 15.6");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("1.341, 1.442, 1.695, 2.047, 2.48, 3.007, 3.65, 4.431, 5.373, 6.493",\
                 "1.365, 1.466, 1.719, 2.071, 2.505, 3.032, 3.674, 4.456, 5.398, 6.517",\
                 "1.437, 1.538, 1.792, 2.143, 2.577, 3.104, 3.746, 4.528, 5.47, 6.589",\
                 "1.547, 1.649, 1.901, 2.253, 2.686, 3.213, 3.856, 4.638, 5.58, 6.699",\
                 "1.714, 1.816, 2.072, 2.426, 2.861, 3.389, 4.031, 4.813, 5.755, 6.874",\
                 "1.945, 2.051, 2.315, 2.679, 3.122, 3.655, 4.3, 5.083, 6.025, 7.144",\
                 "2.271, 2.38, 2.651, 3.024, 3.477, 4.018, 4.669, 5.454, 6.398, 7.517",\
                 "2.684, 2.798, 3.079, 3.464, 3.928, 4.477, 5.134, 5.925, 6.871, 7.99",\
                 "3.166, 3.286, 3.582, 3.983, 4.464, 5.028, 5.693, 6.488, 7.435, 8.555",\
                 "3.71, 3.837, 4.148, 4.57, 5.074, 5.658, 6.34, 7.142, 8.093, 9.215");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.4883, 0.5673, 0.7996, 1.214, 1.851, 2.741, 3.909, 5.379, 7.175, 9.314",\
                 "0.5159, 0.595, 0.8272, 1.242, 1.879, 2.768, 3.936, 5.406, 7.201, 9.34",\
                 "0.6231, 0.7011, 0.9322, 1.346, 1.983, 2.873, 4.041, 5.512, 7.304, 9.444",\
                 "0.7968, 0.8772, 1.107, 1.518, 2.154, 3.043, 4.21, 5.683, 7.477, 9.617",\
                 "0.939, 1.024, 1.261, 1.671, 2.305, 3.194, 4.362, 5.832, 7.627, 9.767",\
                 "1.035, 1.126, 1.371, 1.782, 2.413, 3.301, 4.468, 5.939, 7.731, 9.87",\
                 "1.079, 1.177, 1.435, 1.848, 2.479, 3.365, 4.531, 6, 7.796, 9.935",\
                 "1.07, 1.175, 1.446, 1.868, 2.5, 3.385, 4.55, 6.018, 7.81, 9.95",\
                 "1.004, 1.115, 1.403, 1.835, 2.471, 3.359, 4.526, 5.994, 7.786, 9.922",\
                 "0.8801, 0.9981, 1.302, 1.746, 2.39, 3.284, 4.455, 5.924, 7.715, 9.852");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.3254, 0.4206, 0.6682, 1.042, 1.555, 2.267, 3.23, 4.485, 6.049, 7.938",\
                 "0.3252, 0.4206, 0.6682, 1.041, 1.557, 2.268, 3.228, 4.48, 6.046, 7.939",\
                 "0.3254, 0.4206, 0.6684, 1.041, 1.557, 2.268, 3.227, 4.482, 6.044, 7.941",\
                 "0.3258, 0.4212, 0.668, 1.043, 1.557, 2.266, 3.229, 4.485, 6.05, 7.938",\
                 "0.3404, 0.4358, 0.6806, 1.052, 1.563, 2.272, 3.231, 4.484, 6.049, 7.941",\
                 "0.3594, 0.4586, 0.7106, 1.084, 1.589, 2.29, 3.242, 4.489, 6.052, 7.941",\
                 "0.381, 0.4826, 0.7382, 1.117, 1.625, 2.321, 3.266, 4.5, 6.06, 7.934",\
                 "0.4134, 0.5184, 0.78, 1.162, 1.67, 2.358, 3.296, 4.519, 6.066, 7.95",\
                 "0.454, 0.566, 0.836, 1.224, 1.732, 2.412, 3.334, 4.544, 6.086, 7.948",\
                 "0.5, 0.618, 0.9, 1.302, 1.82, 2.498, 3.404, 4.592, 6.108, 7.966");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.005892, 0.02306, 0.05585, 0.1069, 0.1786, 0.2729, 0.3918, 0.5368, 0.7097");
          values("0.1864, 0.2876, 0.6384, 1.345, 2.454, 4.015, 6.075, 8.677, 11.84, 15.61",\
                 "0.1857, 0.2874, 0.6382, 1.343, 2.454, 4.016, 6.074, 8.666, 11.84, 15.6",\
                 "0.1853, 0.2864, 0.6374, 1.343, 2.454, 4.015, 6.076, 8.668, 11.84, 15.6",\
                 "0.1978, 0.2972, 0.6394, 1.341, 2.454, 4.016, 6.075, 8.668, 11.82, 15.61",\
                 "0.222, 0.3232, 0.6544, 1.345, 2.457, 4.017, 6.075, 8.678, 11.83, 15.61",\
                 "0.2498, 0.353, 0.6762, 1.354, 2.457, 4.022, 6.071, 8.662, 11.84, 15.6",\
                 "0.2806, 0.387, 0.7066, 1.366, 2.464, 4.023, 6.077, 8.665, 11.83, 15.61",\
                 "0.3148, 0.424, 0.746, 1.39, 2.478, 4.035, 6.085, 8.665, 11.85, 15.59",\
                 "0.3504, 0.464, 0.7914, 1.422, 2.505, 4.05, 6.094, 8.674, 11.83, 15.6",\
                 "0.388, 0.506, 0.846, 1.46, 2.538, 4.082, 6.116, 8.684, 11.84, 15.6");
        }
      }
    }
  }

