/*
 * 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__nor3_1) {
    area : 17.561600 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.04325, 0.04327, 0.04316, 0.04307, 0.04308, 0.04306, 0.04303, \
                  0.04299, 0.04295, 0.04288");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.009333, -0.009324, -0.009349, -0.009345, -0.009344, -0.009372, \
                  -0.009366, -0.009376, -0.009372, -0.009368");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.02337, 0.02333, 0.02329, 0.02327, 0.02326, 0.02329, 0.02327, \
                  0.02325, 0.02324, 0.02321");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.009512, -0.009524, -0.009515, -0.00952, -0.009534, -0.009555, \
                  -0.009554, -0.009558, -0.009559, -0.009555");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.02337, 0.02333, 0.02329, 0.02327, 0.02323, 0.02329, 0.02327, \
                  0.02325, 0.02324, 0.02321");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.009512, -0.009513, -0.009516, -0.009538, -0.009527, -0.009553, \
                  -0.00955, -0.009558, -0.009561, -0.009551");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.02007, 0.02005, 0.02005, 0.02005, 0.02006, 0.02008, 0.02007, \
                  0.02003, 0.01997, 0.01992");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.0105, -0.01051, -0.0105, -0.01052, -0.01054, -0.01058, -0.01059, \
                  -0.0106, -0.01063, -0.01065");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03198, 0.03194, 0.0319, 0.03185, 0.03182, 0.03189, 0.03189, \
                  0.03189, 0.03188, 0.0319");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.0304, -0.03032, -0.03048, -0.03083, -0.03108, -0.0313, -0.03136, \
                  -0.03141, -0.03145, -0.03148");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.01948, 0.01947, 0.01944, 0.01947, 0.01949, 0.01954, 0.01953, \
                  0.01954, 0.01954, 0.01953");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.02941, -0.02927, -0.02909, -0.02892, -0.02882, -0.02873, -0.02861, \
                  -0.0285, -0.02841, -0.0283");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03193, 0.03194, 0.03182, 0.03188, 0.03179, 0.03188, 0.03186, \
                  0.03188, 0.03187, 0.03189");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.03077, -0.03074, -0.0308, -0.03098, -0.03115, -0.03129, -0.03136, \
                  -0.03142, -0.03145, -0.03149");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03197, 0.0319, 0.0319, 0.03185, 0.03184, 0.03194, 0.03189, 0.03191, \
                  0.0319, 0.03189");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.02768, -0.02788, -0.02875, -0.02964, -0.0302, -0.03056, -0.03077, \
                  -0.03093, -0.031, -0.03107");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03191, 0.03191, 0.03181, 0.0318, 0.0318, 0.03185, 0.03188, 0.03186, \
                  0.03185, 0.03186");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.03087, -0.03086, -0.03085, -0.03097, -0.03111, -0.03129, -0.03136, \
                  -0.03142, -0.03145, -0.03148");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.07985 ;
      max_transition : 7 ;
      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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.001606, 0.001651, 0.001895, 0.002104, 0.002274, 0.002366, 0.002427, 0.002476, 0.002511, 0.002528",\
                 "0.00193, 0.00213, 0.002545, 0.003036, 0.003408, 0.003673, 0.003825, 0.003943, 0.004035, 0.004096",\
                 "0.004301, 0.004415, 0.004687, 0.005035, 0.005421, 0.00566, 0.005834, 0.005987, 0.006077, 0.006171",\
                 "0.01059, 0.01046, 0.01016, 0.009756, 0.009363, 0.008995, 0.008717, 0.00847, 0.008265, 0.008121",\
                 "0.02295, 0.02253, 0.02131, 0.01957, 0.01786, 0.01627, 0.01484, 0.01369, 0.01273, 0.01192",\
                 "0.04332, 0.04257, 0.0402, 0.03684, 0.03314, 0.02962, 0.02653, 0.02387, 0.02152, 0.01955",\
                 "0.07275, 0.07163, 0.06817, 0.0629, 0.05696, 0.05105, 0.04559, 0.04072, 0.03652, 0.03282",\
                 "0.112, 0.1106, 0.106, 0.09884, 0.09035, 0.08163, 0.07337, 0.06577, 0.05906, 0.05316",\
                 "0.1614, 0.1597, 0.1542, 0.1452, 0.1342, 0.1225, 0.1111, 0.1004, 0.09066, 0.08194",\
                 "0.2214, 0.2195, 0.2131, 0.2025, 0.1892, 0.1744, 0.1596, 0.1455, 0.1325, 0.1204");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.09941, 0.09951, 0.09975, 0.1001, 0.1004, 0.1007, 0.1011, 0.1013, 0.1019, 0.1024",\
                 "0.09827, 0.0984, 0.09882, 0.09938, 0.0999, 0.1004, 0.1008, 0.1014, 0.1018, 0.1023",\
                 "0.09944, 0.09944, 0.09946, 0.09956, 0.09984, 0.1002, 0.1007, 0.1012, 0.1015, 0.1027",\
                 "0.1081, 0.1077, 0.1066, 0.1053, 0.1042, 0.1034, 0.1031, 0.103, 0.103, 0.1033",\
                 "0.1249, 0.1242, 0.122, 0.119, 0.1159, 0.113, 0.1108, 0.1091, 0.1081, 0.1077",\
                 "0.1504, 0.1494, 0.1463, 0.1417, 0.1364, 0.131, 0.1265, 0.1224, 0.1193, 0.1172",\
                 "0.1855, 0.1842, 0.1801, 0.1738, 0.1665, 0.1588, 0.1513, 0.1445, 0.1387, 0.1342",\
                 "0.231, 0.2294, 0.2243, 0.2163, 0.2069, 0.1969, 0.1867, 0.177, 0.1677, 0.1608",\
                 "0.2874, 0.2855, 0.2797, 0.2701, 0.2584, 0.2457, 0.2329, 0.2203, 0.2082, 0.1984",\
                 "0.3553, 0.3532, 0.3465, 0.3356, 0.3216, 0.3067, 0.2908, 0.2753, 0.2603, 0.2487");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.02302, 0.02305, 0.02306, 0.02311, 0.02315, 0.0232, 0.02323, 0.02324, 0.02326, 0.02327",\
                 "0.02301, 0.02303, 0.02307, 0.02312, 0.02319, 0.02324, 0.02327, 0.02327, 0.02334, 0.02334",\
                 "0.02344, 0.02343, 0.02336, 0.02329, 0.02334, 0.02327, 0.02328, 0.02326, 0.02326, 0.02327",\
                 "0.02807, 0.02786, 0.02741, 0.02675, 0.02611, 0.02548, 0.02501, 0.02463, 0.02439, 0.02414",\
                 "0.04022, 0.03985, 0.03844, 0.0365, 0.03447, 0.03255, 0.03087, 0.02951, 0.0284, 0.02749",\
                 "0.06191, 0.06116, 0.05871, 0.05498, 0.05081, 0.0468, 0.04317, 0.0401, 0.03744, 0.03527",\
                 "0.0942, 0.09306, 0.0894, 0.08377, 0.07708, 0.07029, 0.06395, 0.05837, 0.05354, 0.04937",\
                 "0.1377, 0.1362, 0.1314, 0.1237, 0.1143, 0.1045, 0.09483, 0.08611, 0.07829, 0.07148",\
                 "0.193, 0.1912, 0.1852, 0.1755, 0.1634, 0.1502, 0.1372, 0.1247, 0.1134, 0.1032",\
                 "0.2604, 0.2583, 0.2514, 0.2399, 0.2251, 0.2087, 0.1918, 0.1755, 0.1601, 0.1461");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.1231, 0.1232, 0.1234, 0.1237, 0.1239, 0.1243, 0.1245, 0.1249, 0.1252, 0.1257",\
                 "0.1219, 0.122, 0.1224, 0.1229, 0.1234, 0.1239, 0.1242, 0.1246, 0.1251, 0.1258",\
                 "0.1204, 0.1205, 0.1209, 0.1216, 0.1223, 0.1229, 0.1236, 0.1241, 0.1247, 0.1254",\
                 "0.1247, 0.1245, 0.1242, 0.1238, 0.1238, 0.1239, 0.1242, 0.1245, 0.1249, 0.1256",\
                 "0.1394, 0.1388, 0.1373, 0.1351, 0.133, 0.1313, 0.1301, 0.129, 0.1288, 0.1286",\
                 "0.1661, 0.1651, 0.1621, 0.1579, 0.1531, 0.1487, 0.1446, 0.1415, 0.1391, 0.1376",\
                 "0.2047, 0.2034, 0.1991, 0.1927, 0.1853, 0.1778, 0.1707, 0.1644, 0.159, 0.1553",\
                 "0.2553, 0.2537, 0.2484, 0.24, 0.2298, 0.2193, 0.209, 0.1992, 0.1905, 0.1835",\
                 "0.3183, 0.3164, 0.3102, 0.3, 0.2873, 0.2738, 0.2602, 0.2468, 0.2343, 0.2242",\
                 "0.3944, 0.3923, 0.3852, 0.3736, 0.3586, 0.3418, 0.3247, 0.3081, 0.2919, 0.279");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.04167, 0.04168, 0.04167, 0.04162, 0.04166, 0.04169, 0.04172, 0.04171, 0.04172, 0.0417",\
                 "0.04007, 0.04007, 0.04007, 0.04004, 0.04003, 0.04009, 0.04009, 0.04011, 0.04011, 0.04011",\
                 "0.03871, 0.03865, 0.03857, 0.03844, 0.03824, 0.03819, 0.03815, 0.03811, 0.03811, 0.03807",\
                 "0.0424, 0.04218, 0.04164, 0.04083, 0.04, 0.03928, 0.03879, 0.03837, 0.0381, 0.0379",\
                 "0.05509, 0.05457, 0.05298, 0.05065, 0.04832, 0.04615, 0.04429, 0.04278, 0.04162, 0.04069",\
                 "0.07925, 0.07829, 0.07534, 0.07101, 0.06612, 0.06141, 0.05719, 0.05373, 0.05087, 0.04847",\
                 "0.1164, 0.115, 0.1106, 0.1036, 0.0956, 0.0875, 0.08004, 0.07359, 0.06805, 0.06334",\
                 "0.1671, 0.1653, 0.1595, 0.15, 0.1384, 0.1264, 0.1149, 0.1045, 0.09538, 0.08745",\
                 "0.2323, 0.2301, 0.2227, 0.2108, 0.1958, 0.1795, 0.1634, 0.1483, 0.1348, 0.1228",\
                 "0.3122, 0.3095, 0.3011, 0.2867, 0.2684, 0.2478, 0.2268, 0.2066, 0.188, 0.1713");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.1463, 0.1464, 0.1466, 0.1469, 0.1472, 0.1473, 0.1477, 0.1481, 0.1485, 0.1491",\
                 "0.1451, 0.1453, 0.1457, 0.1462, 0.1466, 0.147, 0.1474, 0.1478, 0.1482, 0.149",\
                 "0.1432, 0.1434, 0.1439, 0.1446, 0.1454, 0.1461, 0.1467, 0.1472, 0.1478, 0.1488",\
                 "0.145, 0.145, 0.145, 0.1451, 0.1453, 0.1459, 0.1465, 0.147, 0.1476, 0.1484",\
                 "0.1573, 0.1568, 0.1557, 0.1541, 0.1526, 0.1514, 0.1508, 0.1505, 0.1502, 0.1507",\
                 "0.1839, 0.183, 0.1803, 0.1763, 0.1722, 0.1685, 0.1652, 0.1625, 0.1605, 0.1591",\
                 "0.2264, 0.225, 0.2206, 0.2141, 0.2067, 0.1995, 0.1927, 0.1866, 0.1815, 0.1778",\
                 "0.2844, 0.2826, 0.2769, 0.2679, 0.2571, 0.2459, 0.2353, 0.2253, 0.2164, 0.209",\
                 "0.3576, 0.3556, 0.3489, 0.3379, 0.3237, 0.3087, 0.2937, 0.2797, 0.2666, 0.2558",\
                 "0.4463, 0.444, 0.4365, 0.4238, 0.407, 0.3882, 0.3691, 0.3504, 0.3329, 0.3187");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.1175, 0.1269, 0.1589, 0.2197, 0.3143, 0.4465, 0.6205, 0.8396, 1.107, 1.427",\
                 "0.1286, 0.1379, 0.1702, 0.2315, 0.3263, 0.4591, 0.6332, 0.8525, 1.12, 1.439",\
                 "0.1671, 0.1772, 0.2103, 0.2714, 0.3662, 0.4987, 0.6729, 0.8919, 1.16, 1.479",\
                 "0.2011, 0.2152, 0.2611, 0.338, 0.4414, 0.5737, 0.7471, 0.9659, 1.233, 1.552",\
                 "0.2102, 0.2288, 0.289, 0.3888, 0.5205, 0.6809, 0.8649, 1.083, 1.348, 1.666",\
                 "0.1898, 0.2131, 0.2883, 0.4125, 0.5761, 0.7711, 0.9939, 1.242, 1.514, 1.83",\
                 "0.1372, 0.1649, 0.2556, 0.4054, 0.6019, 0.8349, 1.098, 1.389, 1.706, 2.047",\
                 "0.0519, 0.0845, 0.1896, 0.3632, 0.5936, 0.8661, 1.173, 1.508, 1.871, 2.263",\
                 "-0.0683, -0.0309, 0.0892, 0.287, 0.5497, 0.8614, 1.213, 1.596, 2.007, 2.449",\
                 "-0.2253, -0.1833, -0.0483, 0.1738, 0.4685, 0.8198, 1.215, 1.646, 2.111, 2.604");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.2424, 0.2675, 0.354, 0.5189, 0.7744, 1.133, 1.603, 2.195, 2.919, 3.78",\
                 "0.2474, 0.2723, 0.3597, 0.5256, 0.7825, 1.141, 1.612, 2.205, 2.928, 3.788",\
                 "0.288, 0.3119, 0.3975, 0.5616, 0.8175, 1.175, 1.647, 2.239, 2.962, 3.824",\
                 "0.3887, 0.413, 0.4943, 0.6512, 0.9005, 1.254, 1.721, 2.312, 3.032, 3.893",\
                 "0.5311, 0.5571, 0.6469, 0.8089, 1.051, 1.395, 1.855, 2.438, 3.156, 4.012",\
                 "0.7097, 0.7401, 0.8406, 1.016, 1.273, 1.613, 2.063, 2.637, 3.344, 4.194",\
                 "0.9215, 0.957, 1.073, 1.269, 1.544, 1.905, 2.353, 2.917, 3.612, 4.451",\
                 "1.167, 1.208, 1.341, 1.562, 1.863, 2.246, 2.72, 3.286, 3.971, 4.796",\
                 "1.449, 1.495, 1.645, 1.893, 2.227, 2.639, 3.138, 3.733, 4.424, 5.239",\
                 "1.769, 1.819, 1.987, 2.263, 2.632, 3.083, 3.611, 4.234, 4.957, 5.781");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.1407, 0.1559, 0.2097, 0.3123, 0.4722, 0.6976, 0.9935, 1.364, 1.821, 2.361",\
                 "0.1404, 0.1559, 0.2097, 0.3124, 0.4726, 0.6969, 0.9933, 1.366, 1.821, 2.363",\
                 "0.1579, 0.17, 0.2155, 0.3127, 0.4726, 0.6977, 0.9926, 1.366, 1.819, 2.365",\
                 "0.2289, 0.244, 0.293, 0.3778, 0.5019, 0.7022, 0.9921, 1.365, 1.82, 2.364",\
                 "0.3216, 0.3405, 0.3996, 0.499, 0.6364, 0.81, 1.044, 1.375, 1.819, 2.362",\
                 "0.4366, 0.4592, 0.5314, 0.6494, 0.806, 1.003, 1.238, 1.513, 1.887, 2.376",\
                 "0.5682, 0.5958, 0.6836, 0.826, 1.007, 1.226, 1.483, 1.784, 2.121, 2.536",\
                 "0.7212, 0.7526, 0.8576, 1.023, 1.237, 1.483, 1.766, 2.091, 2.459, 2.868",\
                 "0.8904, 0.9294, 1.05, 1.244, 1.485, 1.769, 2.086, 2.438, 2.832, 3.274",\
                 "1.077, 1.124, 1.265, 1.487, 1.765, 2.081, 2.434, 2.822, 3.247, 3.714");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.4759, 0.5219, 0.6786, 0.9752, 1.433, 2.069, 2.908, 3.965, 5.266, 6.791",\
                 "0.4744, 0.5201, 0.6783, 0.9739, 1.432, 2.072, 2.909, 3.968, 5.266, 6.795",\
                 "0.4655, 0.513, 0.6757, 0.9737, 1.431, 2.07, 2.913, 3.966, 5.257, 6.811",\
                 "0.4909, 0.5315, 0.6767, 0.9683, 1.432, 2.07, 2.913, 3.975, 5.267, 6.795",\
                 "0.55, 0.5918, 0.739, 1.004, 1.434, 2.069, 2.913, 3.967, 5.256, 6.795",\
                 "0.642, 0.6824, 0.8238, 1.098, 1.505, 2.092, 2.913, 3.97, 5.258, 6.795",\
                 "0.7708, 0.8118, 0.9542, 1.217, 1.631, 2.198, 2.964, 3.979, 5.255, 6.791",\
                 "0.9172, 0.9642, 1.119, 1.385, 1.789, 2.361, 3.102, 4.063, 5.284, 6.796",\
                 "1.079, 1.133, 1.304, 1.59, 1.999, 2.561, 3.306, 4.235, 5.405, 6.85",\
                 "1.257, 1.317, 1.503, 1.824, 2.25, 2.806, 3.544, 4.481, 5.609, 7.004");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.1615, 0.1713, 0.2051, 0.2681, 0.3645, 0.4984, 0.6733, 0.8934, 1.161, 1.481",\
                 "0.1718, 0.1816, 0.2155, 0.2785, 0.3749, 0.5088, 0.6838, 0.9037, 1.172, 1.491",\
                 "0.2098, 0.2195, 0.2527, 0.3155, 0.4117, 0.5455, 0.7205, 0.9404, 1.208, 1.528",\
                 "0.2621, 0.2747, 0.3162, 0.3875, 0.486, 0.6188, 0.793, 1.012, 1.28, 1.599",\
                 "0.2943, 0.3099, 0.3638, 0.455, 0.5791, 0.732, 0.911, 1.129, 1.395, 1.713",\
                 "0.301, 0.3209, 0.3876, 0.5001, 0.6521, 0.8367, 1.051, 1.292, 1.562, 1.877",\
                 "0.2821, 0.3059, 0.3848, 0.5187, 0.6999, 0.9189, 1.171, 1.452, 1.762, 2.097",\
                 "0.2362, 0.2638, 0.3533, 0.5094, 0.7194, 0.9742, 1.266, 1.588, 1.942, 2.325",\
                 "0.1629, 0.1935, 0.2959, 0.4704, 0.7088, 0.999, 1.331, 1.697, 2.096, 2.526",\
                 "0.0627, 0.0966, 0.2083, 0.4022, 0.6671, 0.9916, 1.364, 1.777, 2.223, 2.701");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.3534, 0.3782, 0.4654, 0.6298, 0.8857, 1.243, 1.714, 2.306, 3.029, 3.89",\
                 "0.3583, 0.3835, 0.4712, 0.6372, 0.8938, 1.252, 1.723, 2.315, 3.038, 3.899",\
                 "0.3807, 0.4061, 0.4943, 0.6606, 0.9181, 1.277, 1.749, 2.342, 3.065, 3.928",\
                 "0.434, 0.4599, 0.5476, 0.7108, 0.9649, 1.322, 1.792, 2.384, 3.107, 3.97",\
                 "0.5252, 0.552, 0.6429, 0.8116, 1.062, 1.411, 1.876, 2.462, 3.182, 4.039",\
                 "0.6612, 0.6904, 0.787, 0.9591, 1.216, 1.564, 2.017, 2.595, 3.306, 4.159",\
                 "0.8285, 0.8615, 0.9699, 1.156, 1.421, 1.775, 2.23, 2.796, 3.495, 4.336",\
                 "1.024, 1.061, 1.183, 1.389, 1.674, 2.04, 2.502, 3.072, 3.759, 4.587",\
                 "1.246, 1.288, 1.423, 1.652, 1.965, 2.355, 2.83, 3.407, 4.1, 4.916",\
                 "1.496, 1.543, 1.694, 1.945, 2.287, 2.71, 3.211, 3.801, 4.503, 5.327");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.2007, 0.2163, 0.2714, 0.3756, 0.5373, 0.7627, 1.059, 1.431, 1.886, 2.427",\
                 "0.2005, 0.2162, 0.2714, 0.3758, 0.5371, 0.7623, 1.059, 1.431, 1.886, 2.427",\
                 "0.2033, 0.218, 0.2706, 0.3755, 0.5364, 0.7626, 1.059, 1.431, 1.886, 2.427",\
                 "0.2814, 0.2953, 0.341, 0.4211, 0.5543, 0.7642, 1.058, 1.431, 1.886, 2.427",\
                 "0.3901, 0.4064, 0.4611, 0.5548, 0.6856, 0.8562, 1.098, 1.439, 1.886, 2.427",\
                 "0.523, 0.5436, 0.6092, 0.7172, 0.8658, 1.053, 1.283, 1.564, 1.942, 2.439",\
                 "0.6816, 0.705, 0.783, 0.9096, 1.079, 1.286, 1.536, 1.831, 2.166, 2.59",\
                 "0.8638, 0.8914, 0.9816, 1.13, 1.325, 1.556, 1.826, 2.144, 2.506, 2.912",\
                 "1.07, 1.103, 1.212, 1.379, 1.6, 1.859, 2.156, 2.497, 2.884, 3.32",\
                 "1.304, 1.34, 1.462, 1.66, 1.903, 2.196, 2.527, 2.894, 3.304, 3.764");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.4851, 0.5282, 0.6815, 0.9753, 1.433, 2.072, 2.913, 3.973, 5.265, 6.793",\
                 "0.4853, 0.5281, 0.6822, 0.9754, 1.432, 2.073, 2.911, 3.965, 5.266, 6.79",\
                 "0.488, 0.53, 0.6825, 0.9762, 1.432, 2.069, 2.912, 3.967, 5.266, 6.792",\
                 "0.5268, 0.5656, 0.7024, 0.9795, 1.433, 2.072, 2.914, 3.966, 5.256, 6.794",\
                 "0.5964, 0.6356, 0.773, 1.032, 1.45, 2.072, 2.914, 3.971, 5.257, 6.795",\
                 "0.7092, 0.7434, 0.8694, 1.123, 1.526, 2.114, 2.918, 3.965, 5.258, 6.796",\
                 "0.8618, 0.8958, 1.019, 1.255, 1.644, 2.209, 2.981, 3.988, 5.264, 6.796",\
                 "1.034, 1.073, 1.205, 1.444, 1.812, 2.357, 3.1, 4.07, 5.298, 6.801",\
                 "1.225, 1.267, 1.415, 1.669, 2.039, 2.56, 3.281, 4.216, 5.403, 6.859",\
                 "1.429, 1.477, 1.632, 1.916, 2.306, 2.829, 3.516, 4.431, 5.573, 6.987");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.1762, 0.1872, 0.2249, 0.2932, 0.3953, 0.534, 0.7129, 0.9357, 1.206, 1.527",\
                 "0.1844, 0.1955, 0.233, 0.3012, 0.4032, 0.5418, 0.7207, 0.9436, 1.214, 1.535",\
                 "0.222, 0.2324, 0.2685, 0.3357, 0.4371, 0.5754, 0.7541, 0.9768, 1.247, 1.568",\
                 "0.2853, 0.2978, 0.3396, 0.4111, 0.5109, 0.6472, 0.8251, 1.047, 1.317, 1.638",\
                 "0.3315, 0.3476, 0.4007, 0.4909, 0.6133, 0.7645, 0.9432, 1.163, 1.431, 1.751",\
                 "0.3574, 0.3773, 0.4409, 0.5519, 0.6999, 0.8811, 1.092, 1.33, 1.599, 1.916",\
                 "0.363, 0.386, 0.4614, 0.591, 0.7669, 0.9801, 1.225, 1.501, 1.806, 2.138",\
                 "0.3481, 0.3743, 0.461, 0.6087, 0.8103, 1.057, 1.339, 1.653, 2, 2.376",\
                 "0.3123, 0.3413, 0.4371, 0.6048, 0.8323, 1.109, 1.429, 1.785, 2.173, 2.593",\
                 "0.258, 0.2895, 0.3946, 0.578, 0.8308, 1.139, 1.496, 1.891, 2.325, 2.789");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.3939, 0.4192, 0.5062, 0.6708, 0.9262, 1.284, 1.754, 2.346, 3.069, 3.932",\
                 "0.4016, 0.427, 0.5146, 0.6804, 0.9369, 1.295, 1.766, 2.358, 3.082, 3.943",\
                 "0.4242, 0.4496, 0.5375, 0.7044, 0.9624, 1.322, 1.794, 2.386, 3.11, 3.972",\
                 "0.4615, 0.4872, 0.5749, 0.7396, 0.9954, 1.354, 1.825, 2.418, 3.142, 4.005",\
                 "0.5232, 0.5492, 0.6387, 0.8051, 1.057, 1.409, 1.875, 2.464, 3.185, 4.044",\
                 "0.6139, 0.6429, 0.7392, 0.9089, 1.163, 1.512, 1.967, 2.547, 3.26, 4.112",\
                 "0.7247, 0.758, 0.8652, 1.052, 1.314, 1.664, 2.118, 2.685, 3.384, 4.225",\
                 "0.8554, 0.8915, 1.012, 1.219, 1.504, 1.866, 2.32, 2.887, 3.574, 4.4",\
                 "1.003, 1.044, 1.178, 1.406, 1.717, 2.106, 2.574, 3.142, 3.829, 4.644",\
                 "1.168, 1.213, 1.36, 1.611, 1.951, 2.371, 2.87, 3.452, 4.14, 4.956");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.25, 0.2675, 0.3254, 0.4342, 0.5972, 0.8236, 1.12, 1.493, 1.947, 2.491",\
                 "0.2482, 0.266, 0.3243, 0.4325, 0.5968, 0.8239, 1.12, 1.493, 1.949, 2.49",\
                 "0.2432, 0.2592, 0.3171, 0.4276, 0.5946, 0.8229, 1.12, 1.493, 1.948, 2.49",\
                 "0.3259, 0.3392, 0.383, 0.463, 0.6031, 0.8215, 1.119, 1.493, 1.948, 2.491",\
                 "0.4525, 0.4681, 0.5188, 0.607, 0.7322, 0.9006, 1.149, 1.496, 1.948, 2.491",\
                 "0.6118, 0.6312, 0.6892, 0.7882, 0.9258, 1.105, 1.325, 1.61, 1.996, 2.5",\
                 "0.8054, 0.827, 0.8952, 1.008, 1.159, 1.353, 1.591, 1.876, 2.211, 2.639",\
                 "1.032, 1.058, 1.138, 1.267, 1.436, 1.645, 1.896, 2.198, 2.553, 2.954",\
                 "1.299, 1.329, 1.419, 1.565, 1.755, 1.985, 2.253, 2.57, 2.94, 3.366",\
                 "1.6, 1.634, 1.737, 1.906, 2.118, 2.372, 2.657, 2.991, 3.377, 3.818");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.001544, 0.003455, 0.007103, 0.01279, 0.02076, 0.03126, 0.04448, 0.06062, 0.07985");
          values("0.485, 0.5289, 0.683, 0.9763, 1.433, 2.071, 2.914, 3.972, 5.256, 6.795",\
                 "0.4852, 0.5293, 0.6821, 0.9762, 1.432, 2.07, 2.913, 3.966, 5.257, 6.795",\
                 "0.487, 0.5301, 0.6834, 0.9755, 1.433, 2.073, 2.913, 3.965, 5.254, 6.794",\
                 "0.5113, 0.5506, 0.6929, 0.9778, 1.431, 2.072, 2.909, 3.966, 5.256, 6.795",\
                 "0.5736, 0.6134, 0.7496, 1.016, 1.45, 2.073, 2.914, 3.967, 5.255, 6.791",\
                 "0.7102, 0.7434, 0.8626, 1.105, 1.509, 2.108, 2.923, 3.971, 5.257, 6.8",\
                 "0.9012, 0.935, 1.05, 1.271, 1.639, 2.197, 2.975, 3.989, 5.27, 6.794",\
                 "1.116, 1.151, 1.279, 1.507, 1.85, 2.365, 3.095, 4.066, 5.308, 6.814",\
                 "1.353, 1.392, 1.526, 1.772, 2.132, 2.618, 3.298, 4.219, 5.401, 6.879",\
                 "1.612, 1.657, 1.798, 2.064, 2.453, 2.948, 3.591, 4.46, 5.584, 6.988");
        }
      }
    }
  }

