/*
 * 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_mcu9t5v0__or3_4) {
    area : 62.092800 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.02518, 0.0252, 0.0252, 0.0252, 0.02517, 0.02516, 0.0251, 0.02504, \
                  0.02494, 0.02481");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.005867, -0.005887, -0.005923, -0.005936, -0.00594, -0.005954, \
                  -0.005952, -0.00596, -0.005953, -0.005958");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.0138, 0.01381, 0.01382, 0.01384, 0.01381, 0.01383, 0.0138, 0.01377, \
                  0.01373, 0.01367");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.005912, -0.005929, -0.005973, -0.005974, -0.005983, -0.005999, \
                  -0.005993, -0.005996, -0.005997, -0.005999");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.01363, 0.01365, 0.01367, 0.01368, 0.01365, 0.01367, 0.01365, \
                  0.01361, 0.01358, 0.01352");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.005898, -0.005931, -0.00597, -0.00598, -0.00598, -0.005999, \
                  -0.005996, -0.005999, -0.005994, -0.005994");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.0108, 0.01078, 0.01079, 0.01082, 0.01081, 0.01082, 0.01076, \
                  0.01071, 0.01063, 0.01053");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.007495, -0.007517, -0.007538, -0.007569, -0.00757, -0.007603, \
                  -0.007618, -0.007628, -0.007662, -0.007681");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.01731, 0.01729, 0.01729, 0.01728, 0.0173, 0.01733, 0.01733, \
                  0.01733, 0.01733, 0.01731");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.01372, -0.01423, -0.01553, -0.01635, -0.01667, -0.01684, -0.01691, \
                  -0.01695, -0.01698, -0.017");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.01099, 0.01098, 0.01103, 0.01103, 0.01106, 0.01108, 0.01108, \
                  0.01109, 0.01109, 0.01108");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.01135, -0.01134, -0.01138, -0.01137, -0.01135, -0.01136, -0.01137, \
                  -0.01139, -0.01139, -0.01143");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.01727, 0.01726, 0.01728, 0.01728, 0.0173, 0.01731, 0.01732, \
                  0.01732, 0.01731, 0.0173");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.01552, -0.01598, -0.01634, -0.01659, -0.01669, -0.01682, -0.01689, \
                  -0.01692, -0.01694, -0.01696");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.01765, 0.01763, 0.01766, 0.01764, 0.01766, 0.01769, 0.01768, \
                  0.01766, 0.01768, 0.01768");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.01436, -0.0147, -0.01527, -0.01577, -0.01608, -0.01634, -0.01647, \
                  -0.01655, -0.01663, -0.01667");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.0172, 0.01723, 0.01722, 0.01722, 0.01725, 0.01726, 0.01728, \
                  0.01727, 0.01727, 0.01727");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.016, -0.01618, -0.01639, -0.01659, -0.01671, -0.01682, -0.01688, \
                  -0.01692, -0.01695, -0.01696");
        }
      }
    }

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

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.1695, 0.1642, 0.1542, 0.148, 0.1445, 0.1425, 0.1412, 0.1404, 0.1398, 0.1394",\
                 "0.1685, 0.1633, 0.1534, 0.147, 0.1436, 0.1416, 0.1404, 0.1395, 0.1389, 0.1385",\
                 "0.1673, 0.162, 0.1522, 0.1459, 0.1423, 0.1404, 0.1392, 0.1384, 0.1378, 0.1373",\
                 "0.168, 0.1628, 0.1529, 0.1466, 0.1432, 0.1412, 0.14, 0.1392, 0.1387, 0.1382",\
                 "0.1734, 0.1679, 0.1576, 0.1509, 0.1473, 0.1452, 0.144, 0.1431, 0.1426, 0.1421",\
                 "0.1866, 0.1807, 0.1689, 0.1606, 0.1559, 0.1533, 0.1516, 0.1506, 0.1499, 0.1494",\
                 "0.2044, 0.1978, 0.1844, 0.1744, 0.1685, 0.165, 0.1628, 0.1614, 0.1604, 0.1598",\
                 "0.2259, 0.2188, 0.2036, 0.1918, 0.1847, 0.1803, 0.1775, 0.1757, 0.1745, 0.1736",\
                 "0.2519, 0.2442, 0.2275, 0.2138, 0.2052, 0.1999, 0.1963, 0.194, 0.1924, 0.1913",\
                 "0.2827, 0.2746, 0.2565, 0.2406, 0.2303, 0.2238, 0.2196, 0.2166, 0.2146, 0.2132");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.06882, 0.06907, 0.07051, 0.07262, 0.07413, 0.07544, 0.07673, 0.07794, 0.07942, 0.08513",\
                 "0.06919, 0.06919, 0.07073, 0.07281, 0.07448, 0.07582, 0.07712, 0.07814, 0.07962, 0.08612",\
                 "0.07, 0.07001, 0.07092, 0.07295, 0.07454, 0.07629, 0.07752, 0.07853, 0.08041, 0.08736",\
                 "0.07398, 0.07339, 0.07314, 0.07402, 0.07575, 0.07726, 0.07851, 0.08051, 0.08199, 0.08841",\
                 "0.08036, 0.07893, 0.0773, 0.07772, 0.07834, 0.07964, 0.08108, 0.08289, 0.08437, 0.09268",\
                 "0.09013, 0.08812, 0.0849, 0.08372, 0.0844, 0.08528, 0.08603, 0.08725, 0.08952, 0.09766",\
                 "0.1039, 0.1011, 0.09676, 0.09378, 0.09308, 0.09409, 0.09534, 0.09596, 0.09744, 0.1076",\
                 "0.122, 0.1181, 0.1124, 0.1084, 0.1058, 0.1057, 0.1076, 0.1089, 0.1101, 0.1229",\
                 "0.1446, 0.1396, 0.1321, 0.1271, 0.1228, 0.1216, 0.1221, 0.1244, 0.1269, 0.1436",\
                 "0.1719, 0.1658, 0.1567, 0.1497, 0.1449, 0.1416, 0.1415, 0.1418, 0.1463, 0.1722");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.1815, 0.1763, 0.1663, 0.16, 0.1566, 0.1546, 0.1534, 0.1525, 0.1519, 0.1514",\
                 "0.1808, 0.1755, 0.1656, 0.1592, 0.1558, 0.1538, 0.1525, 0.1517, 0.1511, 0.1507",\
                 "0.1794, 0.1741, 0.1642, 0.1579, 0.1543, 0.1524, 0.1511, 0.1503, 0.1497, 0.1493",\
                 "0.1787, 0.1734, 0.1633, 0.1568, 0.1535, 0.1515, 0.1503, 0.1495, 0.1489, 0.1485",\
                 "0.1823, 0.1768, 0.1664, 0.1594, 0.1556, 0.1533, 0.1519, 0.1511, 0.1504, 0.15",\
                 "0.1927, 0.1868, 0.1751, 0.1669, 0.1623, 0.1595, 0.1579, 0.1568, 0.1561, 0.1555",\
                 "0.2077, 0.2015, 0.1886, 0.1792, 0.1738, 0.1705, 0.1685, 0.1671, 0.1662, 0.1655",\
                 "0.2282, 0.2215, 0.2077, 0.1969, 0.1905, 0.1864, 0.1839, 0.1822, 0.1811, 0.1803",\
                 "0.2545, 0.2476, 0.2325, 0.2199, 0.2122, 0.2073, 0.2042, 0.2022, 0.2007, 0.1997",\
                 "0.287, 0.2796, 0.263, 0.2488, 0.2395, 0.2335, 0.2297, 0.227, 0.2253, 0.2241");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.08227, 0.08219, 0.08294, 0.08467, 0.08634, 0.08791, 0.08922, 0.09063, 0.0925, 0.09742",\
                 "0.08224, 0.08206, 0.08288, 0.08465, 0.08628, 0.08789, 0.08902, 0.09003, 0.09211, 0.09762",\
                 "0.08212, 0.08188, 0.0825, 0.08407, 0.08566, 0.08747, 0.08882, 0.08983, 0.09092, 0.09748",\
                 "0.08514, 0.08447, 0.08385, 0.08465, 0.08624, 0.08771, 0.08882, 0.09023, 0.09191, 0.09872",\
                 "0.09131, 0.09008, 0.0881, 0.08813, 0.08859, 0.08991, 0.09159, 0.093, 0.09408, 0.1014",\
                 "0.1013, 0.09915, 0.09583, 0.09427, 0.09503, 0.09591, 0.09654, 0.09756, 0.09943, 0.1079",\
                 "0.1154, 0.1125, 0.1083, 0.1054, 0.1046, 0.1055, 0.1064, 0.1067, 0.1081, 0.1184",\
                 "0.1344, 0.1307, 0.1251, 0.121, 0.1187, 0.118, 0.1195, 0.1206, 0.1216, 0.1344",\
                 "0.1582, 0.1535, 0.1465, 0.1407, 0.1373, 0.1355, 0.1355, 0.1378, 0.1402, 0.158",\
                 "0.1871, 0.1814, 0.1727, 0.1659, 0.161, 0.1573, 0.1567, 0.1572, 0.1624, 0.1893");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.1932, 0.1879, 0.1779, 0.1716, 0.1683, 0.1662, 0.165, 0.1641, 0.1635, 0.1631",\
                 "0.1925, 0.1872, 0.1772, 0.171, 0.1676, 0.1655, 0.1643, 0.1634, 0.1628, 0.1623",\
                 "0.191, 0.1857, 0.1758, 0.1694, 0.166, 0.164, 0.1628, 0.1619, 0.1613, 0.1609",\
                 "0.1901, 0.1848, 0.1748, 0.1683, 0.1649, 0.1629, 0.1617, 0.1609, 0.1603, 0.1598",\
                 "0.1918, 0.1864, 0.1761, 0.1693, 0.1656, 0.1636, 0.1622, 0.1614, 0.1608, 0.1603",\
                 "0.1998, 0.194, 0.1827, 0.175, 0.1707, 0.1681, 0.1666, 0.1655, 0.1648, 0.1643",\
                 "0.2137, 0.2076, 0.1954, 0.1865, 0.1814, 0.1782, 0.1763, 0.1751, 0.1742, 0.1736",\
                 "0.2357, 0.2293, 0.2158, 0.2053, 0.1991, 0.1953, 0.1929, 0.1913, 0.1902, 0.1894",\
                 "0.2659, 0.2591, 0.2442, 0.2318, 0.2242, 0.2194, 0.2165, 0.2144, 0.213, 0.212",\
                 "0.304, 0.2968, 0.2804, 0.2661, 0.2569, 0.2508, 0.2469, 0.2443, 0.2424, 0.2411");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.09447, 0.09401, 0.09448, 0.096, 0.09767, 0.09916, 0.1002, 0.1014, 0.1027, 0.1076",\
                 "0.0936, 0.09316, 0.09367, 0.09518, 0.09691, 0.09839, 0.09944, 0.1006, 0.1019, 0.1076",\
                 "0.09242, 0.09206, 0.09238, 0.09374, 0.09531, 0.09688, 0.09805, 0.09946, 0.1005, 0.1063",\
                 "0.09499, 0.09405, 0.09331, 0.09382, 0.09505, 0.09662, 0.09805, 0.09926, 0.1009, 0.1064",\
                 "0.1012, 0.09984, 0.09755, 0.09722, 0.09757, 0.09882, 0.1, 0.1012, 0.1027, 0.1098",\
                 "0.1119, 0.1096, 0.1062, 0.1044, 0.1048, 0.1051, 0.1058, 0.1066, 0.1087, 0.1171",\
                 "0.1276, 0.1246, 0.1197, 0.1165, 0.1154, 0.1159, 0.1169, 0.1169, 0.119, 0.1293",\
                 "0.149, 0.145, 0.1391, 0.1345, 0.1315, 0.131, 0.1325, 0.1328, 0.134, 0.1473",\
                 "0.1764, 0.1715, 0.1641, 0.1579, 0.1536, 0.1513, 0.1513, 0.1536, 0.1554, 0.1739",\
                 "0.2101, 0.2041, 0.195, 0.1877, 0.1819, 0.1787, 0.1769, 0.1774, 0.1823, 0.2101");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.7798, 0.8337, 0.9731, 1.168, 1.406, 1.685, 2.011, 2.394, 2.844, 3.371",\
                 "0.7843, 0.8382, 0.9777, 1.172, 1.411, 1.689, 2.015, 2.398, 2.848, 3.376",\
                 "0.8234, 0.8772, 1.016, 1.211, 1.449, 1.728, 2.054, 2.437, 2.887, 3.415",\
                 "0.9324, 0.9862, 1.125, 1.32, 1.558, 1.837, 2.163, 2.545, 2.996, 3.523",\
                 "1.128, 1.181, 1.319, 1.513, 1.751, 2.029, 2.356, 2.738, 3.189, 3.716",\
                 "1.39, 1.444, 1.584, 1.778, 2.018, 2.297, 2.624, 3.006, 3.458, 3.984",\
                 "1.692, 1.749, 1.893, 2.091, 2.334, 2.617, 2.947, 3.332, 3.782, 4.31",\
                 "2.041, 2.101, 2.252, 2.453, 2.699, 2.986, 3.319, 3.707, 4.16, 4.689",\
                 "2.444, 2.506, 2.663, 2.872, 3.123, 3.412, 3.746, 4.136, 4.591, 5.122",\
                 "2.902, 2.966, 3.13, 3.348, 3.605, 3.899, 4.236, 4.628, 5.085, 5.617");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.2723, 0.3136, 0.4373, 0.6568, 0.9935, 1.464, 2.082, 2.86, 3.81, 4.944",\
                 "0.2891, 0.3303, 0.4539, 0.6734, 1.01, 1.48, 2.099, 2.875, 3.824, 4.96",\
                 "0.3469, 0.3879, 0.5107, 0.7299, 1.067, 1.537, 2.154, 2.933, 3.885, 5.017",\
                 "0.4302, 0.4727, 0.5963, 0.8139, 1.151, 1.621, 2.239, 3.018, 3.969, 5.102",\
                 "0.4881, 0.5339, 0.6619, 0.8799, 1.216, 1.686, 2.304, 3.083, 4.032, 5.161",\
                 "0.5134, 0.5621, 0.6956, 0.9151, 1.249, 1.719, 2.335, 3.113, 4.063, 5.192",\
                 "0.5016, 0.5536, 0.6945, 0.9166, 1.25, 1.718, 2.335, 3.112, 4.06, 5.19",\
                 "0.4472, 0.5031, 0.6525, 0.8804, 1.214, 1.682, 2.298, 3.074, 4.022, 5.152",\
                 "0.3481, 0.4071, 0.5646, 0.8006, 1.136, 1.605, 2.221, 2.997, 3.944, 5.074",\
                 "0.2016, 0.2637, 0.43, 0.6738, 1.014, 1.484, 2.104, 2.88, 3.826, 4.956");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.242, 0.292, 0.4255, 0.6286, 0.891, 1.235, 1.681, 2.253, 2.974, 3.857",\
                 "0.2419, 0.2926, 0.4252, 0.6278, 0.891, 1.234, 1.681, 2.256, 2.975, 3.858",\
                 "0.2419, 0.2922, 0.4254, 0.6284, 0.892, 1.234, 1.682, 2.255, 2.977, 3.857",\
                 "0.242, 0.293, 0.425, 0.6278, 0.8924, 1.234, 1.681, 2.255, 2.977, 3.856",\
                 "0.2408, 0.2914, 0.425, 0.6288, 0.8942, 1.235, 1.682, 2.256, 2.973, 3.858",\
                 "0.2646, 0.3132, 0.4416, 0.6402, 0.903, 1.242, 1.686, 2.258, 2.978, 3.855",\
                 "0.2926, 0.3426, 0.4676, 0.662, 0.9252, 1.262, 1.702, 2.268, 2.983, 3.86",\
                 "0.3198, 0.3718, 0.4984, 0.6872, 0.9458, 1.282, 1.722, 2.288, 3.003, 3.873",\
                 "0.349, 0.4028, 0.5334, 0.7198, 0.9708, 1.304, 1.738, 2.304, 3.016, 3.886",\
                 "0.382, 0.4372, 0.5738, 0.7568, 1.006, 1.332, 1.761, 2.322, 3.026, 3.898");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.1164, 0.1701, 0.3578, 0.7366, 1.333, 2.174, 3.278, 4.674, 6.377, 8.41",\
                 "0.1167, 0.1704, 0.3579, 0.7353, 1.333, 2.174, 3.28, 4.67, 6.375, 8.4",\
                 "0.1172, 0.171, 0.3577, 0.7351, 1.333, 2.173, 3.278, 4.675, 6.372, 8.4",\
                 "0.1278, 0.181, 0.3622, 0.7356, 1.332, 2.177, 3.279, 4.673, 6.374, 8.399",\
                 "0.1452, 0.199, 0.3756, 0.7414, 1.334, 2.173, 3.282, 4.678, 6.372, 8.399",\
                 "0.163, 0.2196, 0.3928, 0.7484, 1.339, 2.177, 3.278, 4.667, 6.367, 8.398",\
                 "0.185, 0.2422, 0.4146, 0.7588, 1.342, 2.178, 3.28, 4.676, 6.381, 8.39",\
                 "0.209, 0.2682, 0.4432, 0.776, 1.351, 2.183, 3.284, 4.673, 6.382, 8.393",\
                 "0.236, 0.2946, 0.475, 0.7996, 1.364, 2.193, 3.29, 4.677, 6.374, 8.395",\
                 "0.2618, 0.3238, 0.5078, 0.828, 1.384, 2.214, 3.305, 4.684, 6.377, 8.397");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.9474, 1.001, 1.141, 1.335, 1.574, 1.852, 2.178, 2.561, 3.012, 3.539",\
                 "0.9544, 1.008, 1.148, 1.342, 1.581, 1.859, 2.185, 2.568, 3.019, 3.546",\
                 "0.9896, 1.043, 1.183, 1.377, 1.616, 1.894, 2.22, 2.603, 3.053, 3.581",\
                 "1.06, 1.114, 1.253, 1.448, 1.686, 1.965, 2.291, 2.674, 3.124, 3.651",\
                 "1.182, 1.236, 1.375, 1.569, 1.807, 2.086, 2.412, 2.795, 3.246, 3.773",\
                 "1.352, 1.408, 1.552, 1.752, 1.994, 2.275, 2.602, 2.986, 3.437, 3.964",\
                 "1.583, 1.64, 1.788, 1.991, 2.24, 2.528, 2.86, 3.246, 3.698, 4.225",\
                 "1.874, 1.933, 2.085, 2.294, 2.548, 2.841, 3.177, 3.567, 4.022, 4.551",\
                 "2.221, 2.282, 2.439, 2.655, 2.914, 3.213, 3.554, 3.947, 4.404, 4.936",\
                 "2.619, 2.682, 2.846, 3.068, 3.337, 3.643, 3.991, 4.389, 4.848, 5.381");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.3081, 0.3503, 0.4747, 0.6947, 1.032, 1.503, 2.12, 2.9, 3.849, 4.98",\
                 "0.3242, 0.3661, 0.4907, 0.7108, 1.048, 1.519, 2.137, 2.914, 3.865, 4.995",\
                 "0.3809, 0.4227, 0.5468, 0.7666, 1.104, 1.575, 2.193, 2.971, 3.919, 5.052",\
                 "0.475, 0.5176, 0.6411, 0.8596, 1.197, 1.667, 2.286, 3.063, 4.013, 5.142",\
                 "0.5508, 0.5961, 0.7235, 0.9421, 1.278, 1.748, 2.367, 3.145, 4.093, 5.223",\
                 "0.5959, 0.644, 0.7764, 0.9957, 1.33, 1.8, 2.417, 3.195, 4.144, 5.276",\
                 "0.6057, 0.6569, 0.7965, 1.018, 1.352, 1.82, 2.438, 3.214, 4.164, 5.295",\
                 "0.5781, 0.633, 0.7791, 1.006, 1.34, 1.807, 2.424, 3.201, 4.149, 5.28",\
                 "0.5094, 0.5669, 0.7219, 0.9542, 1.291, 1.759, 2.376, 3.152, 4.1, 5.23",\
                 "0.3972, 0.4581, 0.622, 0.8622, 1.201, 1.673, 2.291, 3.067, 4.014, 5.144");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.2422, 0.2922, 0.4254, 0.6282, 0.891, 1.235, 1.681, 2.254, 2.973, 3.858",\
                 "0.2423, 0.2922, 0.4252, 0.628, 0.8908, 1.236, 1.682, 2.255, 2.975, 3.855",\
                 "0.2418, 0.2926, 0.425, 0.6284, 0.891, 1.234, 1.681, 2.255, 2.977, 3.855",\
                 "0.2424, 0.2924, 0.4256, 0.6284, 0.8916, 1.234, 1.681, 2.256, 2.977, 3.858",\
                 "0.2476, 0.2974, 0.4296, 0.6314, 0.894, 1.237, 1.682, 2.255, 2.978, 3.858",\
                 "0.2668, 0.3184, 0.4518, 0.6506, 0.911, 1.248, 1.691, 2.262, 2.98, 3.858",\
                 "0.2828, 0.3358, 0.472, 0.6746, 0.9376, 1.273, 1.709, 2.274, 2.987, 3.862",\
                 "0.3022, 0.3566, 0.4946, 0.7004, 0.9618, 1.298, 1.733, 2.297, 3.005, 3.876",\
                 "0.326, 0.382, 0.5234, 0.7288, 0.995, 1.329, 1.759, 2.319, 3.021, 3.886",\
                 "0.3538, 0.4112, 0.557, 0.7658, 1.034, 1.366, 1.794, 2.343, 3.041, 3.905");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.1205, 0.175, 0.3615, 0.7379, 1.335, 2.175, 3.278, 4.678, 6.386, 8.409",\
                 "0.1205, 0.1747, 0.3617, 0.7379, 1.335, 2.175, 3.28, 4.672, 6.384, 8.399",\
                 "0.1206, 0.1744, 0.3615, 0.7371, 1.335, 2.18, 3.286, 4.683, 6.374, 8.408",\
                 "0.128, 0.1811, 0.3634, 0.7378, 1.335, 2.173, 3.282, 4.673, 6.374, 8.397",\
                 "0.144, 0.1976, 0.3758, 0.7422, 1.336, 2.175, 3.286, 4.678, 6.373, 8.397",\
                 "0.1608, 0.2166, 0.3908, 0.7488, 1.339, 2.179, 3.279, 4.673, 6.373, 8.399",\
                 "0.1808, 0.237, 0.4108, 0.7574, 1.343, 2.179, 3.283, 4.676, 6.366, 8.397",\
                 "0.2044, 0.2608, 0.4358, 0.7726, 1.352, 2.184, 3.29, 4.675, 6.382, 8.397",\
                 "0.2268, 0.2864, 0.465, 0.7948, 1.363, 2.196, 3.292, 4.678, 6.373, 8.407",\
                 "0.2522, 0.3138, 0.4982, 0.8212, 1.383, 2.21, 3.304, 4.685, 6.378, 8.402");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("1.008, 1.062, 1.201, 1.396, 1.634, 1.913, 2.239, 2.622, 3.072, 3.599",\
                 "1.019, 1.073, 1.212, 1.407, 1.645, 1.924, 2.25, 2.633, 3.083, 3.61",\
                 "1.059, 1.113, 1.253, 1.447, 1.686, 1.964, 2.29, 2.673, 3.123, 3.65",\
                 "1.125, 1.179, 1.318, 1.512, 1.751, 2.03, 2.356, 2.739, 3.189, 3.716",\
                 "1.216, 1.27, 1.41, 1.604, 1.842, 2.121, 2.447, 2.83, 3.28, 3.808",\
                 "1.335, 1.39, 1.534, 1.732, 1.973, 2.254, 2.582, 2.965, 3.415, 3.942",\
                 "1.498, 1.555, 1.702, 1.906, 2.153, 2.44, 2.771, 3.157, 3.609, 4.136",\
                 "1.72, 1.779, 1.93, 2.139, 2.392, 2.685, 3.022, 3.412, 3.867, 4.395",\
                 "1.995, 2.056, 2.213, 2.43, 2.692, 2.993, 3.336, 3.73, 4.188, 4.719",\
                 "2.318, 2.381, 2.545, 2.771, 3.044, 3.356, 3.708, 4.11, 4.572, 5.106");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.3224, 0.3659, 0.4944, 0.7181, 1.058, 1.53, 2.148, 2.927, 3.876, 5.008",\
                 "0.3373, 0.3808, 0.5091, 0.7329, 1.073, 1.545, 2.163, 2.942, 3.891, 5.023",\
                 "0.3941, 0.4374, 0.5647, 0.7879, 1.128, 1.599, 2.219, 2.997, 3.947, 5.078",\
                 "0.4957, 0.5387, 0.6648, 0.8857, 1.224, 1.696, 2.315, 3.093, 4.043, 5.175",\
                 "0.584, 0.6299, 0.7593, 0.9795, 1.317, 1.788, 2.407, 3.185, 4.135, 5.266",\
                 "0.6439, 0.6922, 0.8268, 1.048, 1.384, 1.854, 2.472, 3.25, 4.199, 5.331",\
                 "0.6725, 0.7241, 0.8646, 1.088, 1.423, 1.892, 2.51, 3.287, 4.236, 5.368",\
                 "0.6674, 0.7225, 0.8701, 1.098, 1.433, 1.902, 2.519, 3.296, 4.245, 5.375",\
                 "0.6267, 0.6848, 0.8408, 1.075, 1.412, 1.882, 2.499, 3.276, 4.224, 5.354",\
                 "0.5494, 0.6107, 0.7749, 1.018, 1.358, 1.831, 2.449, 3.227, 4.175, 5.304");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.2421, 0.2922, 0.425, 0.6278, 0.8914, 1.236, 1.681, 2.256, 2.976, 3.858",\
                 "0.2422, 0.2922, 0.425, 0.6284, 0.892, 1.234, 1.682, 2.256, 2.976, 3.858",\
                 "0.242, 0.292, 0.4254, 0.628, 0.8914, 1.233, 1.682, 2.254, 2.974, 3.856",\
                 "0.2418, 0.2928, 0.4256, 0.6276, 0.8912, 1.234, 1.681, 2.253, 2.973, 3.857",\
                 "0.245, 0.2958, 0.4278, 0.63, 0.893, 1.235, 1.682, 2.255, 2.974, 3.857",\
                 "0.2606, 0.312, 0.4458, 0.6464, 0.9054, 1.244, 1.687, 2.258, 2.977, 3.859",\
                 "0.2762, 0.329, 0.4654, 0.6688, 0.9324, 1.268, 1.707, 2.272, 2.984, 3.863",\
                 "0.2966, 0.3504, 0.4896, 0.695, 0.9608, 1.299, 1.732, 2.294, 3, 3.874",\
                 "0.323, 0.3788, 0.522, 0.732, 0.9986, 1.335, 1.766, 2.32, 3.02, 3.882",\
                 "0.354, 0.4122, 0.56, 0.775, 1.051, 1.387, 1.814, 2.36, 3.051, 3.906");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.0101, 0.04206, 0.1031, 0.1982, 0.3316, 0.5071, 0.7283, 0.9983, 1.32");
          values("0.1264, 0.1822, 0.3708, 0.7463, 1.341, 2.179, 3.28, 4.674, 6.375, 8.4",\
                 "0.1269, 0.182, 0.3709, 0.7462, 1.341, 2.178, 3.281, 4.672, 6.374, 8.396",\
                 "0.1253, 0.1806, 0.37, 0.7465, 1.34, 2.179, 3.282, 4.675, 6.374, 8.397",\
                 "0.1308, 0.1847, 0.37, 0.7444, 1.34, 2.179, 3.281, 4.672, 6.375, 8.401",\
                 "0.1468, 0.2016, 0.381, 0.7476, 1.34, 2.177, 3.282, 4.673, 6.375, 8.402",\
                 "0.1634, 0.22, 0.3956, 0.7542, 1.345, 2.183, 3.282, 4.671, 6.37, 8.401",\
                 "0.185, 0.2422, 0.4156, 0.7632, 1.349, 2.184, 3.286, 4.674, 6.373, 8.4",\
                 "0.2072, 0.2644, 0.4402, 0.7796, 1.357, 2.191, 3.293, 4.677, 6.383, 8.396",\
                 "0.233, 0.2922, 0.4696, 0.8012, 1.37, 2.202, 3.295, 4.683, 6.377, 8.408",\
                 "0.2588, 0.3196, 0.5038, 0.8278, 1.392, 2.216, 3.309, 4.69, 6.381, 8.403");
        }
      }
    }
  }

