/*
 * 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_4) {
    area : 57.075200 ;

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

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

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

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

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

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

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

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

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

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

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

    pin(A1) {
      capacitance : 0.01626 ;
      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.1868, 0.1867, 0.1863, 0.1861, 0.1859, 0.1859, 0.1858, 0.1856, \
                  0.1854, 0.1851");
        }

        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.03438, -0.03435, -0.03441, -0.03439, -0.03437, -0.03446, -0.03448, \
                  -0.03443, -0.03441, -0.03441");
        }
      }

      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.1017, 0.1015, 0.1014, 0.1013, 0.1012, 0.1013, 0.1012, 0.1011, \
                  0.1011, 0.1009");
        }

        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.03423, -0.03423, -0.03425, -0.03428, -0.03427, -0.03437, -0.03437, \
                  -0.03437, -0.03436, -0.03436");
        }
      }

      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.1016, 0.1014, 0.1012, 0.1012, 0.1011, 0.1011, 0.1011, 0.101, \
                  0.1009, 0.1008");
        }

        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.03423, -0.03421, -0.03426, -0.03425, -0.03423, -0.03437, -0.03438, \
                  -0.03437, -0.03436, -0.03437");
        }
      }
    }

    pin(A2) {
      capacitance : 0.01678 ;
      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.08486, 0.08479, 0.08482, 0.08478, 0.08466, 0.0848, 0.08477, \
                  0.0846, 0.08438, 0.08414");
        }

        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.04311, -0.04303, -0.04315, -0.04319, -0.04324, -0.04335, -0.04339, \
                  -0.04344, -0.0435, -0.04359");
        }
      }

      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.1277, 0.1276, 0.1274, 0.1273, 0.1273, 0.1275, 0.1274, 0.1275, \
                  0.1275, 0.1275");
        }

        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.1154, -0.1151, -0.1157, -0.1179, -0.1204, -0.1221, -0.123, \
                  -0.1236, -0.124, -0.1243");
        }
      }

      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.07046, 0.07052, 0.07049, 0.07053, 0.07049, 0.07075, 0.07074, \
                  0.07072, 0.0708, 0.07073");
        }

        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.1107, -0.1102, -0.1095, -0.1092, -0.1088, -0.1086, -0.1082, \
                  -0.1079, -0.1075, -0.1073");
        }
      }
    }

    pin(A3) {
      capacitance : 0.01647 ;
      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.1276, 0.1274, 0.1271, 0.1272, 0.1274, 0.1275, 0.1275, 0.1275, \
                  0.1275, 0.1275");
        }

        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.1227, -0.1226, -0.1228, -0.1236, -0.1242, -0.1252, -0.1254, \
                  -0.1257, -0.1258, -0.1259");
        }
      }

      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.1277, 0.1277, 0.1273, 0.1273, 0.1275, 0.1275, 0.1276, 0.1275, \
                  0.1276, 0.1276");
        }

        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.1058, -0.1072, -0.1117, -0.116, -0.1188, -0.1209, -0.1219, \
                  -0.1226, -0.1231, -0.1235");
        }
      }

      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.1276, 0.1273, 0.127, 0.1271, 0.1273, 0.1275, 0.1274, 0.1274, \
                  0.1275, 0.1275");
        }

        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.1232, -0.1232, -0.1232, -0.1237, -0.1242, -0.1251, -0.1254, \
                  -0.1257, -0.1259, -0.126");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.3194 ;
      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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("-0.02151, -0.02058, -0.01909, -0.01786, -0.01714, -0.01666, -0.01642, -0.01621, -0.01611, -0.01601",\
                 "-0.02153, -0.02056, -0.01791, -0.01522, -0.01347, -0.01227, -0.01149, -0.011, -0.01067, -0.01041",\
                 "-0.01002, -0.009573, -0.008314, -0.006613, -0.005011, -0.00396, -0.003251, -0.002699, -0.002295, -0.002023",\
                 "0.01958, 0.01878, 0.01677, 0.01465, 0.01247, 0.01083, 0.009465, 0.008318, 0.007512, 0.006777",\
                 "0.07263, 0.07041, 0.06423, 0.0563, 0.04831, 0.04122, 0.0352, 0.03013, 0.02606, 0.02267",\
                 "0.1569, 0.1534, 0.1424, 0.127, 0.1108, 0.09583, 0.08263, 0.07132, 0.06176, 0.05372",\
                 "0.2775, 0.2722, 0.2566, 0.2333, 0.2074, 0.1824, 0.1594, 0.1392, 0.122, 0.107",\
                 "0.4363, 0.4299, 0.4099, 0.379, 0.3425, 0.3059, 0.2714, 0.2403, 0.2126, 0.1885",\
                 "0.6361, 0.6283, 0.6042, 0.5661, 0.5193, 0.4702, 0.423, 0.3791, 0.3392, 0.3037",\
                 "0.8777, 0.8692, 0.8416, 0.7965, 0.7404, 0.6791, 0.6176, 0.5597, 0.5061, 0.4577");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.3773, 0.3779, 0.3793, 0.3806, 0.3821, 0.3832, 0.3847, 0.3867, 0.3882, 0.3904",\
                 "0.3723, 0.3732, 0.3752, 0.3776, 0.3799, 0.3818, 0.3837, 0.3855, 0.3871, 0.39",\
                 "0.3806, 0.38, 0.3793, 0.3795, 0.3805, 0.382, 0.3835, 0.3857, 0.3873, 0.3903",\
                 "0.4193, 0.4173, 0.4117, 0.405, 0.3995, 0.396, 0.394, 0.3932, 0.3931, 0.3942",\
                 "0.4906, 0.4873, 0.4771, 0.4629, 0.4485, 0.4357, 0.4263, 0.4186, 0.4138, 0.4123",\
                 "0.5966, 0.5916, 0.5771, 0.556, 0.5328, 0.5102, 0.4896, 0.4731, 0.4602, 0.4508",\
                 "0.74, 0.7338, 0.7151, 0.6873, 0.6553, 0.6226, 0.591, 0.5619, 0.5387, 0.5196",\
                 "0.9244, 0.9171, 0.8943, 0.8595, 0.8185, 0.7763, 0.7336, 0.6932, 0.6561, 0.6261",\
                 "1.152, 1.144, 1.118, 1.076, 1.026, 0.9729, 0.9199, 0.8673, 0.8174, 0.7771",\
                 "1.426, 1.417, 1.387, 1.34, 1.281, 1.217, 1.152, 1.088, 1.026, 0.9781");
        }
      }

      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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.07605, 0.07597, 0.07597, 0.07606, 0.07618, 0.07631, 0.07642, 0.07646, 0.07644, 0.07648",\
                 "0.07627, 0.0762, 0.07623, 0.0764, 0.07658, 0.07666, 0.07674, 0.07681, 0.07695, 0.07699",\
                 "0.07789, 0.07776, 0.07731, 0.07702, 0.07695, 0.07675, 0.07664, 0.07664, 0.07663, 0.07657",\
                 "0.09615, 0.09548, 0.09325, 0.09019, 0.08743, 0.08487, 0.08292, 0.08137, 0.08028, 0.07947",\
                 "0.1454, 0.1433, 0.1373, 0.129, 0.1204, 0.1125, 0.1058, 0.1003, 0.09591, 0.09229",\
                 "0.2329, 0.2296, 0.2189, 0.2031, 0.1858, 0.1692, 0.1546, 0.1422, 0.1316, 0.1228",\
                 "0.3626, 0.3576, 0.3422, 0.3184, 0.2905, 0.2627, 0.2371, 0.2148, 0.1951, 0.1787",\
                 "0.5373, 0.5309, 0.5106, 0.4782, 0.4394, 0.399, 0.3601, 0.3248, 0.2936, 0.2663",\
                 "0.7592, 0.7515, 0.7267, 0.6862, 0.636, 0.5824, 0.529, 0.4787, 0.4332, 0.3925",\
                 "1.029, 1.021, 0.9921, 0.9441, 0.8832, 0.8157, 0.7473, 0.6813, 0.6192, 0.5629");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.5308, 0.5314, 0.5323, 0.5335, 0.5347, 0.5358, 0.5373, 0.5383, 0.5398, 0.5428",\
                 "0.5252, 0.5261, 0.5282, 0.5306, 0.5326, 0.5346, 0.5363, 0.5375, 0.5398, 0.5424",\
                 "0.5188, 0.5193, 0.5215, 0.5243, 0.5277, 0.5305, 0.5332, 0.5357, 0.538, 0.541",\
                 "0.5323, 0.5316, 0.5306, 0.5297, 0.5301, 0.5314, 0.5334, 0.5356, 0.5376, 0.54",\
                 "0.5862, 0.584, 0.5776, 0.5692, 0.5617, 0.5561, 0.5524, 0.5501, 0.5488, 0.5504",\
                 "0.6904, 0.686, 0.6729, 0.6555, 0.6371, 0.6206, 0.6064, 0.5949, 0.5871, 0.5822",\
                 "0.8447, 0.8387, 0.8205, 0.7929, 0.7625, 0.7329, 0.7055, 0.6815, 0.6616, 0.6478",\
                 "1.048, 1.041, 1.018, 0.9824, 0.9397, 0.8967, 0.8554, 0.8172, 0.7819, 0.7569",\
                 "1.302, 1.293, 1.267, 1.223, 1.17, 1.114, 1.059, 1.006, 0.9567, 0.9171",\
                 "1.607, 1.598, 1.568, 1.519, 1.456, 1.387, 1.317, 1.249, 1.184, 1.133");
        }
      }

      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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.1558, 0.1557, 0.1556, 0.1554, 0.1555, 0.1556, 0.1557, 0.1558, 0.1558, 0.1558",\
                 "0.1496, 0.1495, 0.1494, 0.1492, 0.1492, 0.1493, 0.1495, 0.1495, 0.1495, 0.1495",\
                 "0.1441, 0.1439, 0.1434, 0.1427, 0.1419, 0.1417, 0.1415, 0.1414, 0.1412, 0.1411",\
                 "0.1588, 0.1581, 0.1554, 0.1519, 0.1486, 0.1457, 0.1437, 0.1422, 0.141, 0.1402",\
                 "0.2103, 0.2082, 0.2011, 0.1913, 0.1812, 0.1725, 0.165, 0.159, 0.1544, 0.1509",\
                 "0.3077, 0.3034, 0.291, 0.2723, 0.2518, 0.2327, 0.216, 0.202, 0.1904, 0.1811",\
                 "0.4567, 0.4508, 0.4318, 0.4029, 0.3697, 0.3364, 0.3066, 0.2804, 0.2582, 0.2396",\
                 "0.6608, 0.6532, 0.6281, 0.5887, 0.5409, 0.4916, 0.445, 0.4032, 0.3668, 0.3351",\
                 "0.9223, 0.9129, 0.8822, 0.8323, 0.7701, 0.7036, 0.6382, 0.5776, 0.5231, 0.4756",\
                 "1.242, 1.232, 1.196, 1.137, 1.061, 0.9766, 0.8915, 0.81, 0.7352, 0.6677");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.6241, 0.6246, 0.6256, 0.6267, 0.6279, 0.6292, 0.6305, 0.6315, 0.6339, 0.6369",\
                 "0.6186, 0.6196, 0.6217, 0.624, 0.6262, 0.628, 0.6298, 0.6312, 0.633, 0.636",\
                 "0.6109, 0.6118, 0.6141, 0.6174, 0.6209, 0.6239, 0.6267, 0.6291, 0.6312, 0.6345",\
                 "0.6166, 0.6161, 0.6163, 0.6169, 0.619, 0.6213, 0.6241, 0.6264, 0.6294, 0.633",\
                 "0.6613, 0.6595, 0.6545, 0.6486, 0.6437, 0.64, 0.6382, 0.6377, 0.6379, 0.6386",\
                 "0.7642, 0.76, 0.7484, 0.7324, 0.7165, 0.7019, 0.69, 0.6804, 0.673, 0.6704",\
                 "0.9317, 0.9257, 0.907, 0.8791, 0.849, 0.8208, 0.7947, 0.7717, 0.7534, 0.7399",\
                 "1.163, 1.155, 1.131, 1.092, 1.047, 1.003, 0.9611, 0.9222, 0.8877, 0.8595",\
                 "1.456, 1.447, 1.418, 1.372, 1.313, 1.252, 1.191, 1.136, 1.084, 1.042",\
                 "1.811, 1.802, 1.769, 1.716, 1.647, 1.569, 1.49, 1.416, 1.346, 1.291");
        }
      }

      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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.09487, 0.1044, 0.1371, 0.1988, 0.2942, 0.4281, 0.6039, 0.8253, 1.096, 1.418",\
                 "0.1055, 0.1149, 0.1481, 0.2102, 0.3062, 0.4402, 0.6162, 0.8378, 1.108, 1.431",\
                 "0.1406, 0.1519, 0.188, 0.2501, 0.346, 0.48, 0.656, 0.8774, 1.148, 1.471",\
                 "0.1653, 0.1811, 0.2311, 0.3131, 0.4211, 0.5557, 0.7309, 0.9518, 1.222, 1.544",\
                 "0.1641, 0.1848, 0.251, 0.3572, 0.4955, 0.6606, 0.8487, 1.069, 1.337, 1.659",\
                 "0.1321, 0.1584, 0.241, 0.3738, 0.545, 0.7464, 0.9747, 1.227, 1.504, 1.823",\
                 "0.0677, 0.0995, 0.1989, 0.3587, 0.5647, 0.8058, 1.075, 1.371, 1.694, 2.039",\
                 "-0.0287, 0.0081, 0.1235, 0.3099, 0.5506, 0.8316, 1.146, 1.488, 1.857, 2.254",\
                 "-0.1608, -0.119, 0.0131, 0.2252, 0.4999, 0.8229, 1.183, 1.574, 1.991, 2.438",\
                 "-0.3296, -0.2822, -0.1337, 0.1042, 0.412, 0.7748, 1.18, 1.622, 2.093, 2.592");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.1676, 0.1917, 0.2784, 0.445, 0.7035, 1.066, 1.542, 2.141, 2.873, 3.744",\
                 "0.1737, 0.1978, 0.2847, 0.4521, 0.7117, 1.075, 1.551, 2.151, 2.882, 3.754",\
                 "0.2219, 0.2439, 0.3255, 0.4898, 0.7481, 1.111, 1.587, 2.188, 2.918, 3.789",\
                 "0.3222, 0.3465, 0.4295, 0.5839, 0.8346, 1.192, 1.665, 2.262, 2.991, 3.861",\
                 "0.4581, 0.4865, 0.5794, 0.7451, 0.9888, 1.336, 1.8, 2.39, 3.114, 3.981",\
                 "0.626, 0.6601, 0.7683, 0.9508, 1.211, 1.556, 2.009, 2.589, 3.304, 4.163",\
                 "0.8253, 0.8655, 0.9923, 1.199, 1.481, 1.847, 2.302, 2.87, 3.574, 4.422",\
                 "1.059, 1.104, 1.25, 1.485, 1.798, 2.188, 2.668, 3.241, 3.934, 4.769",\
                 "1.327, 1.378, 1.543, 1.808, 2.157, 2.579, 3.086, 3.687, 4.387, 5.212",\
                 "1.631, 1.69, 1.873, 2.171, 2.557, 3.019, 3.558, 4.188, 4.92, 5.753");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.1044, 0.12, 0.1742, 0.2783, 0.4399, 0.6668, 0.9666, 1.342, 1.802, 2.35",\
                 "0.1041, 0.1199, 0.1744, 0.2781, 0.4398, 0.6677, 0.9667, 1.343, 1.801, 2.351",\
                 "0.13, 0.1426, 0.1854, 0.2789, 0.44, 0.668, 0.9667, 1.342, 1.802, 2.352",\
                 "0.1922, 0.2086, 0.2617, 0.3507, 0.4755, 0.6746, 0.9662, 1.343, 1.803, 2.349",\
                 "0.2739, 0.2952, 0.3606, 0.4658, 0.6098, 0.787, 1.02, 1.353, 1.802, 2.351",\
                 "0.374, 0.4, 0.4826, 0.61, 0.7744, 0.9772, 1.216, 1.496, 1.871, 2.367",\
                 "0.4916, 0.5244, 0.6238, 0.7768, 0.9694, 1.197, 1.46, 1.764, 2.107, 2.528",\
                 "0.6272, 0.6664, 0.7846, 0.9674, 1.191, 1.45, 1.741, 2.071, 2.444, 2.86",\
                 "0.7818, 0.8278, 0.9666, 1.177, 1.439, 1.731, 2.057, 2.414, 2.815, 3.263",\
                 "0.9492, 1.003, 1.17, 1.411, 1.708, 2.037, 2.402, 2.797, 3.229, 3.704");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.3598, 0.4099, 0.5804, 0.8877, 1.356, 2.001, 2.851, 3.922, 5.229, 6.784",\
                 "0.3546, 0.4061, 0.5776, 0.8883, 1.356, 2.001, 2.854, 3.923, 5.237, 6.78",\
                 "0.346, 0.3947, 0.5679, 0.8853, 1.356, 2.002, 2.852, 3.927, 5.229, 6.781",\
                 "0.3917, 0.4322, 0.5796, 0.8732, 1.352, 2.004, 2.855, 3.928, 5.227, 6.783",\
                 "0.4482, 0.4902, 0.6424, 0.9174, 1.353, 1.997, 2.856, 3.922, 5.228, 6.782",\
                 "0.5454, 0.5884, 0.7308, 1.007, 1.427, 2.021, 2.852, 3.928, 5.237, 6.781",\
                 "0.6658, 0.7122, 0.8628, 1.13, 1.55, 2.13, 2.904, 3.925, 5.224, 6.78",\
                 "0.7988, 0.8508, 1.022, 1.303, 1.71, 2.29, 3.045, 4.012, 5.25, 6.785",\
                 "0.9488, 1.007, 1.196, 1.502, 1.921, 2.489, 3.245, 4.187, 5.372, 6.835",\
                 "1.114, 1.179, 1.388, 1.725, 2.17, 2.738, 3.48, 4.435, 5.577, 6.985");
        }
      }

      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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.1448, 0.1555, 0.1918, 0.2581, 0.3577, 0.4947, 0.6729, 0.8961, 1.168, 1.491",\
                 "0.1553, 0.166, 0.2022, 0.2684, 0.3682, 0.5052, 0.6834, 0.9067, 1.178, 1.501",\
                 "0.1946, 0.2049, 0.24, 0.3055, 0.4049, 0.5417, 0.7199, 0.9431, 1.215, 1.538",\
                 "0.2446, 0.2582, 0.3028, 0.3775, 0.4792, 0.6149, 0.7922, 1.015, 1.286, 1.609",\
                 "0.2729, 0.2905, 0.3477, 0.4432, 0.5718, 0.728, 0.9099, 1.131, 1.401, 1.722",\
                 "0.2764, 0.2979, 0.3683, 0.4864, 0.6429, 0.8325, 1.051, 1.295, 1.568, 1.887",\
                 "0.2528, 0.2786, 0.3625, 0.5027, 0.6895, 0.9139, 1.17, 1.455, 1.769, 2.107",\
                 "0.2036, 0.2326, 0.3286, 0.4906, 0.707, 0.9678, 1.264, 1.592, 1.949, 2.336",\
                 "0.1269, 0.1591, 0.2667, 0.4489, 0.6942, 0.9913, 1.329, 1.701, 2.104, 2.537",\
                 "0.0225, 0.0586, 0.1768, 0.3773, 0.652, 0.9818, 1.362, 1.779, 2.231, 2.714");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.3231, 0.3489, 0.4383, 0.6062, 0.8654, 1.227, 1.703, 2.302, 3.033, 3.906",\
                 "0.3268, 0.353, 0.4439, 0.6129, 0.8727, 1.236, 1.712, 2.311, 3.043, 3.915",\
                 "0.3513, 0.3777, 0.4684, 0.6383, 0.8996, 1.264, 1.741, 2.341, 3.074, 3.945",\
                 "0.4012, 0.4289, 0.5214, 0.6893, 0.948, 1.31, 1.786, 2.386, 3.118, 3.99",\
                 "0.4848, 0.5133, 0.6091, 0.7834, 1.041, 1.396, 1.867, 2.462, 3.19, 4.061",\
                 "0.608, 0.6397, 0.7438, 0.9232, 1.187, 1.544, 2.004, 2.59, 3.312, 4.175",\
                 "0.7627, 0.7988, 0.9165, 1.113, 1.386, 1.749, 2.212, 2.786, 3.496, 4.348",\
                 "0.9472, 0.9887, 1.12, 1.338, 1.635, 2.009, 2.479, 3.058, 3.755, 4.594",\
                 "1.158, 1.205, 1.353, 1.595, 1.92, 2.321, 2.804, 3.391, 4.093, 4.92",\
                 "1.398, 1.45, 1.614, 1.883, 2.238, 2.672, 3.182, 3.782, 4.494, 5.329");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.1795, 0.1966, 0.2539, 0.3613, 0.5255, 0.7542, 1.054, 1.431, 1.891, 2.439",\
                 "0.1793, 0.1961, 0.2536, 0.361, 0.5254, 0.7543, 1.054, 1.431, 1.891, 2.439",\
                 "0.1825, 0.1973, 0.252, 0.3597, 0.5249, 0.7541, 1.054, 1.431, 1.891, 2.439",\
                 "0.2606, 0.2755, 0.3249, 0.4078, 0.5423, 0.7552, 1.054, 1.431, 1.891, 2.439",\
                 "0.3648, 0.384, 0.4423, 0.54, 0.675, 0.8476, 1.092, 1.438, 1.891, 2.44",\
                 "0.4932, 0.5168, 0.5866, 0.7016, 0.8538, 1.046, 1.277, 1.562, 1.947, 2.451",\
                 "0.6452, 0.6726, 0.7578, 0.8924, 1.068, 1.279, 1.532, 1.829, 2.17, 2.598",\
                 "0.8194, 0.8526, 0.9542, 1.11, 1.31, 1.547, 1.824, 2.144, 2.509, 2.919",\
                 "1.019, 1.054, 1.173, 1.357, 1.583, 1.849, 2.155, 2.498, 2.889, 3.328",\
                 "1.241, 1.285, 1.42, 1.628, 1.887, 2.185, 2.522, 2.894, 3.31, 3.776");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.4007, 0.4428, 0.5966, 0.8939, 1.356, 2.003, 2.855, 3.92, 5.225, 6.782",\
                 "0.4014, 0.4438, 0.5971, 0.8936, 1.356, 2.004, 2.854, 3.926, 5.238, 6.786",\
                 "0.4057, 0.4468, 0.5994, 0.8937, 1.358, 2.002, 2.855, 3.928, 5.238, 6.796",\
                 "0.4479, 0.4862, 0.6218, 0.9005, 1.357, 2.001, 2.854, 3.928, 5.239, 6.792",\
                 "0.5162, 0.5542, 0.6938, 0.956, 1.379, 2.007, 2.856, 3.928, 5.226, 6.784",\
                 "0.6398, 0.6736, 0.7958, 1.05, 1.458, 2.051, 2.863, 3.928, 5.238, 6.782",\
                 "0.797, 0.8326, 0.9556, 1.19, 1.58, 2.149, 2.926, 3.953, 5.231, 6.785",\
                 "0.9728, 1.011, 1.142, 1.383, 1.755, 2.298, 3.05, 4.03, 5.278, 6.803",\
                 "1.163, 1.205, 1.351, 1.605, 1.983, 2.507, 3.234, 4.177, 5.375, 6.865",\
                 "1.369, 1.414, 1.569, 1.854, 2.251, 2.776, 3.47, 4.392, 5.55, 6.98");
        }
      }

      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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.1541, 0.1663, 0.2071, 0.2794, 0.3857, 0.5284, 0.7112, 0.9381, 1.213, 1.538",\
                 "0.1627, 0.1746, 0.2153, 0.2876, 0.3935, 0.5362, 0.7191, 0.9459, 1.22, 1.546",\
                 "0.203, 0.214, 0.2519, 0.3223, 0.4275, 0.5698, 0.7525, 0.9792, 1.254, 1.579",\
                 "0.2644, 0.2783, 0.3232, 0.3988, 0.5019, 0.6416, 0.8232, 1.049, 1.323, 1.648",\
                 "0.3071, 0.3246, 0.3821, 0.4771, 0.6045, 0.7592, 0.9413, 1.165, 1.437, 1.761",\
                 "0.3299, 0.3503, 0.4201, 0.5354, 0.6897, 0.876, 1.091, 1.332, 1.604, 1.926",\
                 "0.3304, 0.3557, 0.4356, 0.5725, 0.7548, 0.9734, 1.224, 1.504, 1.813, 2.149",\
                 "0.3117, 0.3401, 0.4313, 0.5871, 0.7965, 1.049, 1.337, 1.657, 2.006, 2.388",\
                 "0.2723, 0.3033, 0.406, 0.581, 0.816, 1.101, 1.427, 1.788, 2.181, 2.606",\
                 "0.2136, 0.248, 0.3591, 0.5514, 0.8121, 1.129, 1.492, 1.893, 2.333, 2.803");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.3661, 0.3923, 0.4817, 0.6492, 0.908, 1.271, 1.746, 2.345, 3.077, 3.948",\
                 "0.373, 0.3994, 0.4903, 0.6591, 0.9195, 1.282, 1.758, 2.357, 3.089, 3.961",\
                 "0.3957, 0.4221, 0.5133, 0.6835, 0.945, 1.309, 1.787, 2.387, 3.118, 3.991",\
                 "0.4313, 0.4585, 0.5501, 0.7186, 0.9783, 1.342, 1.819, 2.419, 3.151, 4.024",\
                 "0.4882, 0.5155, 0.6094, 0.7809, 1.038, 1.396, 1.869, 2.466, 3.195, 4.066",\
                 "0.5677, 0.599, 0.702, 0.8787, 1.139, 1.495, 1.958, 2.546, 3.268, 4.131",\
                 "0.6651, 0.7007, 0.8168, 1.013, 1.284, 1.642, 2.104, 2.679, 3.389, 4.242",\
                 "0.7813, 0.8227, 0.9527, 1.171, 1.467, 1.839, 2.302, 2.877, 3.574, 4.411",\
                 "0.9179, 0.9627, 1.108, 1.35, 1.673, 2.074, 2.552, 3.129, 3.826, 4.652",\
                 "1.073, 1.122, 1.282, 1.547, 1.902, 2.333, 2.843, 3.435, 4.133, 4.961");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.225, 0.2435, 0.3063, 0.4189, 0.5855, 0.8168, 1.118, 1.495, 1.956, 2.505",\
                 "0.222, 0.2411, 0.3041, 0.4165, 0.5853, 0.817, 1.117, 1.496, 1.956, 2.505",\
                 "0.2171, 0.234, 0.2944, 0.411, 0.5832, 0.8158, 1.118, 1.496, 1.957, 2.505",\
                 "0.3045, 0.3194, 0.3669, 0.4492, 0.5911, 0.8128, 1.116, 1.495, 1.957, 2.505",\
                 "0.428, 0.4453, 0.5009, 0.5932, 0.7224, 0.893, 1.145, 1.498, 1.955, 2.505",\
                 "0.5828, 0.6028, 0.6688, 0.7742, 0.917, 1.099, 1.322, 1.61, 2.002, 2.513",\
                 "0.768, 0.7942, 0.8702, 0.992, 1.151, 1.347, 1.589, 1.876, 2.215, 2.649",\
                 "0.987, 1.019, 1.109, 1.248, 1.426, 1.64, 1.896, 2.201, 2.559, 2.962",\
                 "1.242, 1.276, 1.384, 1.546, 1.743, 1.98, 2.253, 2.573, 2.946, 3.377",\
                 "1.535, 1.575, 1.695, 1.881, 2.102, 2.363, 2.662, 2.997, 3.387, 3.835");
        }

        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.003198, 0.01091, 0.02564, 0.0486, 0.0808, 0.1232, 0.1766, 0.2417, 0.3194");
          values("0.4011, 0.4436, 0.5976, 0.8941, 1.356, 2.005, 2.854, 3.925, 5.238, 6.784",\
                 "0.4024, 0.4445, 0.5986, 0.8941, 1.355, 2.003, 2.855, 3.922, 5.225, 6.784",\
                 "0.4059, 0.4481, 0.5983, 0.8944, 1.356, 2.003, 2.856, 3.928, 5.237, 6.785",\
                 "0.4341, 0.4715, 0.6118, 0.8978, 1.357, 2.002, 2.851, 3.923, 5.237, 6.782",\
                 "0.4946, 0.5314, 0.6702, 0.9386, 1.374, 2.007, 2.856, 3.928, 5.227, 6.781",\
                 "0.6342, 0.6672, 0.7844, 1.031, 1.44, 2.042, 2.866, 3.922, 5.225, 6.793",\
                 "0.8284, 0.8622, 0.9794, 1.201, 1.572, 2.135, 2.92, 3.944, 5.238, 6.783",\
                 "1.048, 1.082, 1.209, 1.441, 1.789, 2.307, 3.043, 4.025, 5.282, 6.803",\
                 "1.291, 1.328, 1.458, 1.711, 2.072, 2.563, 3.249, 4.179, 5.372, 6.867",\
                 "1.552, 1.592, 1.733, 2.003, 2.395, 2.898, 3.546, 4.424, 5.558, 6.982");
        }
      }
    }
  }

