/*
 * 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_2) {
    area : 30.732800 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.05526, 0.05522, 0.05511, 0.05498, 0.05498, 0.05496, 0.05494, \
                  0.05493, 0.05491, 0.05488");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.0122, -0.01219, -0.01223, -0.01221, -0.01222, -0.01222, -0.01225, \
                  -0.01224, -0.01226, -0.01224");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.02906, 0.02899, 0.02896, 0.02891, 0.02889, 0.02892, 0.02894, \
                  0.02894, 0.02893, 0.02891");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.01237, -0.01235, -0.01237, -0.0124, -0.01237, -0.01237, -0.01242, \
                  -0.01242, -0.01242, -0.01241");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.02904, 0.029, 0.02898, 0.02893, 0.02893, 0.02891, 0.02894, 0.02895, \
                  0.02893, 0.02891");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.01236, -0.01235, -0.01238, -0.01238, -0.01241, -0.01239, -0.01242, \
                  -0.01242, -0.01241, -0.01242");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.02732, 0.02733, 0.02732, 0.02733, 0.02726, 0.02732, 0.02731, \
                  0.02731, 0.02728, 0.02723");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.01329, -0.01328, -0.0133, -0.01334, -0.01334, -0.01335, -0.0134, \
                  -0.01342, -0.01344, -0.01344");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.04002, 0.04002, 0.03989, 0.0398, 0.03983, 0.03985, 0.0399, 0.03996, \
                  0.03992, 0.03989");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03224, -0.03474, -0.0381, -0.03874, -0.03895, -0.03913, -0.03924, \
                  -0.03928, -0.03934, -0.0394");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.02437, 0.02441, 0.02435, 0.02441, 0.02441, 0.02442, 0.02447, \
                  0.02448, 0.02447, 0.02445");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.02339, -0.0233, -0.02326, -0.02311, -0.02289, -0.02261, -0.02237, \
                  -0.02209, -0.02185, -0.02162");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.03987, 0.03985, 0.03986, 0.03977, 0.03986, 0.03985, 0.03991, \
                  0.03995, 0.0399, 0.0399");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03486, -0.03729, -0.03847, -0.03879, -0.039, -0.03913, -0.03931, \
                  -0.03936, -0.03938, -0.03938");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.03989, 0.03992, 0.0398, 0.03983, 0.03984, 0.03984, 0.03985, \
                  0.0399, 0.03994, 0.03987");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03388, -0.0349, -0.0367, -0.03757, -0.03815, -0.0384, -0.03862, \
                  -0.03878, -0.03891, -0.03899");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.03988, 0.03986, 0.03986, 0.03971, 0.03984, 0.03991, 0.03991, \
                  0.03993, 0.03994, 0.03989");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.03738, -0.0378, -0.03845, -0.03879, -0.03898, -0.03913, -0.03931, \
                  -0.03936, -0.03937, -0.03939");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.2625 ;
      max_transition : 5.2 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("-0.006291, -0.00592, -0.005015, -0.004447, -0.004105, -0.003885, -0.003775, -0.003702, -0.003646, -0.003605",\
                 "-0.005451, -0.005001, -0.003973, -0.003028, -0.002414, -0.002038, -0.001835, -0.00169, -0.001572, -0.001502",\
                 "0.0001756, 0.0001726, 0.000334, 0.0004702, 0.0006476, 0.0007416, 0.0008013, 0.0008579, 0.0008485, 0.0008969",\
                 "0.01518, 0.01446, 0.01243, 0.01032, 0.00849, 0.007037, 0.005847, 0.004994, 0.00435, 0.003857",\
                 "0.04426, 0.04245, 0.03762, 0.03178, 0.02636, 0.02182, 0.01813, 0.01527, 0.01286, 0.01101",\
                 "0.0895, 0.08694, 0.07934, 0.06886, 0.05847, 0.04948, 0.04186, 0.03553, 0.03023, 0.02594",\
                 "0.1527, 0.1492, 0.1388, 0.1239, 0.1079, 0.09294, 0.08008, 0.06898, 0.05961, 0.05168",\
                 "0.2345, 0.2303, 0.2175, 0.1983, 0.1766, 0.1551, 0.1357, 0.1188, 0.1041, 0.09129",\
                 "0.3359, 0.331, 0.3163, 0.2933, 0.266, 0.2379, 0.2113, 0.1873, 0.1661, 0.1476",\
                 "0.4576, 0.4524, 0.4361, 0.4095, 0.3773, 0.3428, 0.3086, 0.2768, 0.2483, 0.2228");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1263, 0.1268, 0.1276, 0.1284, 0.1291, 0.1299, 0.1306, 0.1313, 0.1325, 0.1335",\
                 "0.1253, 0.1256, 0.1265, 0.1275, 0.1284, 0.1293, 0.1303, 0.1311, 0.132, 0.1332",\
                 "0.132, 0.1315, 0.1304, 0.1297, 0.1297, 0.13, 0.1306, 0.1315, 0.1322, 0.1334",\
                 "0.1527, 0.1513, 0.1477, 0.1433, 0.1398, 0.1374, 0.1361, 0.1355, 0.1354, 0.1357",\
                 "0.1889, 0.1867, 0.1806, 0.1725, 0.1644, 0.1574, 0.1524, 0.1485, 0.1462, 0.1448",\
                 "0.2429, 0.2397, 0.2306, 0.2189, 0.2061, 0.194, 0.1837, 0.175, 0.1683, 0.1633",\
                 "0.3163, 0.3122, 0.3004, 0.2841, 0.2667, 0.2499, 0.2334, 0.2185, 0.2064, 0.197",\
                 "0.4104, 0.4055, 0.3912, 0.3704, 0.3475, 0.3249, 0.3032, 0.2831, 0.2642, 0.248",\
                 "0.5261, 0.5209, 0.5043, 0.4794, 0.4508, 0.4225, 0.3948, 0.3685, 0.343, 0.3199",\
                 "0.6651, 0.6592, 0.6411, 0.6124, 0.5782, 0.5434, 0.5091, 0.4765, 0.4448, 0.4151");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.02001, 0.01998, 0.02008, 0.02019, 0.02027, 0.02033, 0.02041, 0.02036, 0.02038, 0.02039",\
                 "0.01965, 0.01966, 0.0198, 0.01999, 0.02015, 0.02016, 0.0202, 0.02025, 0.02028, 0.0203",\
                 "0.02238, 0.02225, 0.02182, 0.02132, 0.02102, 0.02081, 0.02072, 0.02058, 0.02049, 0.02041",\
                 "0.03621, 0.03537, 0.03318, 0.03061, 0.02831, 0.02642, 0.02501, 0.024, 0.02321, 0.02265",\
                 "0.0664, 0.06464, 0.05975, 0.05347, 0.04718, 0.04196, 0.03777, 0.03438, 0.0317, 0.02965",\
                 "0.1152, 0.1126, 0.1049, 0.09388, 0.08244, 0.0721, 0.06318, 0.05592, 0.05008, 0.04523",\
                 "0.1841, 0.1805, 0.17, 0.1545, 0.137, 0.1204, 0.1054, 0.09264, 0.08185, 0.07292",\
                 "0.2741, 0.2698, 0.2567, 0.2367, 0.2132, 0.1896, 0.1676, 0.1478, 0.1308, 0.1161",\
                 "0.3857, 0.3811, 0.3659, 0.3418, 0.3125, 0.2818, 0.2519, 0.2245, 0.2, 0.1782",\
                 "0.5204, 0.5154, 0.4984, 0.4708, 0.4359, 0.3984, 0.3606, 0.3247, 0.2917, 0.2619");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1557, 0.1561, 0.1568, 0.1574, 0.1579, 0.1585, 0.1594, 0.1599, 0.1615, 0.1621",\
                 "0.1537, 0.1541, 0.1553, 0.1562, 0.1574, 0.1582, 0.1588, 0.1601, 0.1612, 0.1622",\
                 "0.1545, 0.1545, 0.1547, 0.1553, 0.1561, 0.1573, 0.1584, 0.1594, 0.1601, 0.1619",\
                 "0.1707, 0.1697, 0.1671, 0.1644, 0.1626, 0.1618, 0.1615, 0.1617, 0.1621, 0.1629",\
                 "0.2076, 0.2053, 0.1996, 0.1924, 0.1856, 0.18, 0.1759, 0.1732, 0.1714, 0.1704",\
                 "0.2662, 0.2628, 0.2534, 0.2414, 0.2289, 0.2175, 0.2073, 0.1997, 0.1938, 0.1891",\
                 "0.3463, 0.3424, 0.3302, 0.3129, 0.2942, 0.2766, 0.2605, 0.2457, 0.2337, 0.2236",\
                 "0.4497, 0.445, 0.4303, 0.4082, 0.3833, 0.359, 0.3359, 0.3149, 0.2947, 0.279",\
                 "0.577, 0.5718, 0.5551, 0.5289, 0.4982, 0.4667, 0.4366, 0.4083, 0.3818, 0.3573",\
                 "0.7298, 0.7241, 0.7057, 0.676, 0.6398, 0.6004, 0.5631, 0.527, 0.4934, 0.4619");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.04352, 0.04353, 0.04343, 0.04341, 0.04347, 0.04355, 0.04355, 0.04354, 0.0436, 0.04357",\
                 "0.04136, 0.04141, 0.04137, 0.04123, 0.04125, 0.04131, 0.04128, 0.04129, 0.04129, 0.04134",\
                 "0.04224, 0.04193, 0.0413, 0.04054, 0.04014, 0.03979, 0.03965, 0.03947, 0.03938, 0.03928",\
                 "0.05598, 0.05495, 0.05244, 0.04937, 0.04672, 0.04452, 0.04303, 0.04189, 0.04112, 0.04049",\
                 "0.08902, 0.08707, 0.08134, 0.07384, 0.06681, 0.06074, 0.05603, 0.05229, 0.04948, 0.04729",\
                 "0.1447, 0.1416, 0.1324, 0.1195, 0.1059, 0.09367, 0.08356, 0.07531, 0.06876, 0.06352",\
                 "0.2248, 0.2206, 0.2078, 0.189, 0.168, 0.148, 0.1303, 0.1155, 0.1033, 0.0931",\
                 "0.33, 0.325, 0.3089, 0.2845, 0.2559, 0.2273, 0.2006, 0.1772, 0.1574, 0.1404",\
                 "0.4614, 0.4556, 0.4372, 0.4075, 0.3715, 0.334, 0.2976, 0.2642, 0.2349, 0.2095",\
                 "0.6201, 0.6137, 0.5933, 0.5592, 0.5163, 0.4698, 0.4234, 0.3796, 0.3395, 0.304");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1841, 0.1844, 0.1851, 0.1857, 0.1862, 0.187, 0.1877, 0.1883, 0.1896, 0.1907",\
                 "0.182, 0.1823, 0.1834, 0.1845, 0.1856, 0.1864, 0.1872, 0.1879, 0.1894, 0.1905",\
                 "0.1805, 0.1808, 0.1815, 0.1825, 0.1837, 0.1851, 0.1862, 0.1874, 0.1885, 0.1899",\
                 "0.1924, 0.1917, 0.1901, 0.1884, 0.1876, 0.1876, 0.1877, 0.1885, 0.1895, 0.1904",\
                 "0.2286, 0.2265, 0.2212, 0.2151, 0.209, 0.2044, 0.2012, 0.1993, 0.1978, 0.1976",\
                 "0.2932, 0.2899, 0.2804, 0.2675, 0.2551, 0.2441, 0.2344, 0.2272, 0.2215, 0.2171",\
                 "0.3851, 0.3809, 0.368, 0.3489, 0.3288, 0.3104, 0.2937, 0.2784, 0.2661, 0.2563",\
                 "0.5046, 0.4997, 0.4839, 0.46, 0.4323, 0.4052, 0.3805, 0.3575, 0.3368, 0.3186",\
                 "0.652, 0.6465, 0.6292, 0.6012, 0.5664, 0.5306, 0.497, 0.4652, 0.4368, 0.4099",\
                 "0.8288, 0.8231, 0.8041, 0.7727, 0.7324, 0.6886, 0.6451, 0.6045, 0.5662, 0.5316");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.05036, 0.05756, 0.08238, 0.1292, 0.2017, 0.3032, 0.4369, 0.605, 0.8107, 1.056",\
                 "0.05833, 0.06553, 0.09044, 0.1374, 0.2102, 0.3118, 0.4455, 0.6139, 0.8192, 1.064",\
                 "0.07628, 0.08616, 0.1169, 0.1659, 0.2383, 0.3397, 0.4733, 0.6417, 0.8467, 1.091",\
                 "0.08088, 0.09479, 0.1376, 0.2043, 0.2905, 0.3938, 0.5265, 0.6941, 0.8994, 1.144",\
                 "0.06551, 0.08426, 0.1406, 0.2273, 0.3368, 0.4658, 0.6113, 0.7787, 0.9821, 1.226",\
                 "0.0286, 0.0517, 0.1218, 0.2297, 0.3649, 0.5213, 0.6972, 0.8914, 1.102, 1.345",\
                 "-0.0318, -0.0043, 0.079, 0.2088, 0.3709, 0.557, 0.7637, 0.9903, 1.237, 1.501",\
                 "-0.117, -0.0849, 0.0125, 0.162, 0.3511, 0.5679, 0.8081, 1.069, 1.35, 1.652",\
                 "-0.2291, -0.1919, -0.0814, 0.0894, 0.3036, 0.5524, 0.8261, 1.123, 1.44, 1.779",\
                 "-0.3677, -0.3268, -0.2027, -0.0117, 0.2284, 0.5069, 0.8158, 1.15, 1.506, 1.884");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.09989, 0.1193, 0.1874, 0.3155, 0.5145, 0.7925, 1.159, 1.619, 2.182, 2.852",\
                 "0.1057, 0.1248, 0.1927, 0.3216, 0.5208, 0.7994, 1.165, 1.626, 2.188, 2.858",\
                 "0.1428, 0.1604, 0.2245, 0.3505, 0.5479, 0.8257, 1.191, 1.652, 2.213, 2.884",\
                 "0.2111, 0.2314, 0.2989, 0.4199, 0.6119, 0.8855, 1.248, 1.706, 2.267, 2.936",\
                 "0.3051, 0.329, 0.4049, 0.5358, 0.7254, 0.9919, 1.348, 1.802, 2.358, 3.024",\
                 "0.4221, 0.4509, 0.5397, 0.6842, 0.8878, 1.154, 1.502, 1.948, 2.498, 3.159",\
                 "0.5629, 0.5966, 0.701, 0.8646, 1.084, 1.368, 1.718, 2.154, 2.696, 3.349",\
                 "0.7287, 0.7684, 0.8883, 1.075, 1.317, 1.617, 1.987, 2.428, 2.961, 3.604",\
                 "0.9216, 0.9662, 1.103, 1.313, 1.583, 1.906, 2.295, 2.758, 3.295, 3.929",\
                 "1.142, 1.192, 1.346, 1.581, 1.879, 2.233, 2.644, 3.128, 3.689, 4.328");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.05399, 0.06563, 0.1061, 0.1835, 0.3038, 0.4726, 0.696, 0.9752, 1.319, 1.728",\
                 "0.05426, 0.06543, 0.1062, 0.1837, 0.3039, 0.473, 0.6959, 0.9768, 1.318, 1.725",\
                 "0.08066, 0.09136, 0.1243, 0.1875, 0.3038, 0.4722, 0.6963, 0.9768, 1.317, 1.726",\
                 "0.1242, 0.1382, 0.18, 0.2492, 0.3411, 0.4812, 0.6959, 0.9761, 1.319, 1.728",\
                 "0.1818, 0.2002, 0.2534, 0.335, 0.4432, 0.5762, 0.7437, 0.9876, 1.317, 1.726",\
                 "0.2519, 0.2746, 0.342, 0.4416, 0.5646, 0.7166, 0.8956, 1.101, 1.373, 1.738",\
                 "0.3354, 0.3628, 0.444, 0.564, 0.709, 0.8774, 1.075, 1.305, 1.557, 1.864",\
                 "0.4286, 0.4624, 0.5608, 0.701, 0.8722, 1.064, 1.281, 1.528, 1.81, 2.118",\
                 "0.53, 0.572, 0.69, 0.8556, 1.051, 1.27, 1.513, 1.78, 2.081, 2.418",\
                 "0.64, 0.6896, 0.8296, 1.023, 1.246, 1.495, 1.768, 2.06, 2.384, 2.742");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1851, 0.2207, 0.3417, 0.5676, 0.9177, 1.41, 2.054, 2.87, 3.859, 5.044",\
                 "0.1838, 0.2195, 0.3414, 0.5678, 0.9175, 1.41, 2.054, 2.87, 3.863, 5.047",\
                 "0.1865, 0.2188, 0.3385, 0.5671, 0.9179, 1.409, 2.055, 2.866, 3.854, 5.041",\
                 "0.2134, 0.2474, 0.3568, 0.5677, 0.9172, 1.408, 2.055, 2.868, 3.862, 5.039",\
                 "0.261, 0.2914, 0.4009, 0.6084, 0.9278, 1.409, 2.052, 2.867, 3.859, 5.038",\
                 "0.3314, 0.3642, 0.4722, 0.674, 0.99, 1.434, 2.054, 2.869, 3.856, 5.041",\
                 "0.4116, 0.4498, 0.5692, 0.7688, 1.08, 1.519, 2.1, 2.869, 3.856, 5.037",\
                 "0.5052, 0.548, 0.6832, 0.8958, 1.198, 1.636, 2.207, 2.939, 3.878, 5.041",\
                 "0.607, 0.6584, 0.805, 1.042, 1.352, 1.778, 2.355, 3.069, 3.968, 5.069",\
                 "0.7212, 0.7772, 0.943, 1.206, 1.537, 1.959, 2.529, 3.248, 4.116, 5.187");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.06932, 0.07693, 0.1028, 0.1507, 0.224, 0.326, 0.4599, 0.6283, 0.8336, 1.078",\
                 "0.0767, 0.08431, 0.1102, 0.1581, 0.2314, 0.3335, 0.4673, 0.6356, 0.8411, 1.086",\
                 "0.1009, 0.1098, 0.1377, 0.1854, 0.2583, 0.3602, 0.494, 0.6622, 0.8675, 1.112",\
                 "0.1174, 0.1296, 0.1679, 0.2301, 0.312, 0.4139, 0.5468, 0.7144, 0.9193, 1.164",\
                 "0.1177, 0.1333, 0.1832, 0.2628, 0.3663, 0.4904, 0.6323, 0.7992, 1.003, 1.246",\
                 "0.09954, 0.1192, 0.1803, 0.278, 0.4047, 0.5539, 0.7249, 0.915, 1.124, 1.365",\
                 "0.0631, 0.0855, 0.1577, 0.274, 0.4239, 0.601, 0.7998, 1.021, 1.263, 1.524",\
                 "0.0067, 0.0325, 0.1148, 0.2482, 0.4216, 0.6268, 0.8567, 1.109, 1.383, 1.681",\
                 "-0.0705, -0.0417, 0.0509, 0.2004, 0.3972, 0.6293, 0.891, 1.177, 1.486, 1.817",\
                 "-0.1702, -0.1377, -0.0348, 0.1303, 0.3493, 0.6085, 0.9014, 1.222, 1.566, 1.934");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1491, 0.1689, 0.2366, 0.365, 0.5635, 0.8416, 1.207, 1.668, 2.231, 2.899",\
                 "0.1529, 0.1727, 0.2412, 0.3703, 0.5694, 0.8479, 1.214, 1.675, 2.238, 2.907",\
                 "0.1722, 0.192, 0.2596, 0.3878, 0.587, 0.866, 1.232, 1.693, 2.254, 2.926",\
                 "0.2151, 0.236, 0.306, 0.4325, 0.6276, 0.9032, 1.268, 1.727, 2.289, 2.959",\
                 "0.2899, 0.3123, 0.3854, 0.5147, 0.7088, 0.9779, 1.337, 1.791, 2.349, 3.015",\
                 "0.3866, 0.4129, 0.496, 0.633, 0.8308, 1.1, 1.45, 1.897, 2.448, 3.11",\
                 "0.5026, 0.5338, 0.6296, 0.7832, 0.99, 1.264, 1.615, 2.054, 2.596, 3.249",\
                 "0.6383, 0.6747, 0.7842, 0.9577, 1.185, 1.467, 1.824, 2.264, 2.798, 3.441",\
                 "0.795, 0.8358, 0.9608, 1.155, 1.406, 1.71, 2.075, 2.522, 3.058, 3.692",\
                 "0.9734, 1.019, 1.159, 1.375, 1.653, 1.984, 2.369, 2.823, 3.366, 4.005");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.07912, 0.09133, 0.1328, 0.211, 0.3318, 0.5012, 0.723, 1.003, 1.344, 1.751",\
                 "0.07877, 0.09108, 0.133, 0.2111, 0.3321, 0.5013, 0.7234, 1.003, 1.344, 1.751",\
                 "0.1009, 0.1108, 0.143, 0.2125, 0.332, 0.5013, 0.723, 1.003, 1.344, 1.751",\
                 "0.1521, 0.1649, 0.2045, 0.2701, 0.3614, 0.5073, 0.723, 1.003, 1.344, 1.75",\
                 "0.2198, 0.2353, 0.284, 0.3615, 0.4658, 0.5954, 0.7666, 1.013, 1.344, 1.75",\
                 "0.3009, 0.321, 0.381, 0.4731, 0.5912, 0.7392, 0.9152, 1.121, 1.397, 1.764",\
                 "0.3976, 0.4224, 0.4948, 0.604, 0.741, 0.9038, 1.097, 1.324, 1.576, 1.885",\
                 "0.5088, 0.537, 0.6244, 0.7534, 0.9132, 1.095, 1.305, 1.549, 1.828, 2.136",\
                 "0.6338, 0.6688, 0.772, 0.9208, 1.105, 1.312, 1.542, 1.802, 2.1, 2.434",\
                 "0.7704, 0.8132, 0.9328, 1.108, 1.317, 1.548, 1.805, 2.09, 2.403, 2.757");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1922, 0.2255, 0.343, 0.5677, 0.9189, 1.409, 2.054, 2.869, 3.858, 5.047",\
                 "0.1926, 0.2256, 0.3431, 0.5678, 0.9185, 1.407, 2.054, 2.868, 3.859, 5.046",\
                 "0.2019, 0.2319, 0.3445, 0.5679, 0.9171, 1.41, 2.053, 2.869, 3.857, 5.041",\
                 "0.2341, 0.2641, 0.3697, 0.5752, 0.9175, 1.41, 2.052, 2.864, 3.862, 5.046",\
                 "0.2886, 0.3144, 0.4141, 0.6146, 0.9363, 1.411, 2.054, 2.863, 3.859, 5.044",\
                 "0.3696, 0.397, 0.4894, 0.674, 0.987, 1.44, 2.058, 2.864, 3.856, 5.046",\
                 "0.4632, 0.4932, 0.5952, 0.7746, 1.065, 1.503, 2.099, 2.883, 3.861, 5.046",\
                 "0.5676, 0.601, 0.7142, 0.9054, 1.186, 1.602, 2.178, 2.932, 3.887, 5.041",\
                 "0.6826, 0.7214, 0.8442, 1.055, 1.345, 1.74, 2.295, 3.025, 3.948, 5.083",\
                 "0.8068, 0.849, 0.9874, 1.222, 1.53, 1.928, 2.455, 3.163, 4.057, 5.158");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.07415, 0.08291, 0.1117, 0.1633, 0.2396, 0.3438, 0.4792, 0.6486, 0.8548, 1.1",\
                 "0.08108, 0.08961, 0.1182, 0.1694, 0.2457, 0.35, 0.4854, 0.6548, 0.861, 1.106",\
                 "0.109, 0.118, 0.1464, 0.196, 0.2716, 0.3755, 0.5108, 0.6801, 0.8862, 1.131",\
                 "0.1335, 0.1456, 0.1836, 0.2452, 0.3261, 0.4289, 0.5632, 0.7318, 0.9375, 1.182",\
                 "0.1446, 0.1599, 0.2083, 0.2859, 0.387, 0.509, 0.6492, 0.8167, 1.021, 1.265",\
                 "0.141, 0.1599, 0.2183, 0.312, 0.4346, 0.5803, 0.7476, 0.9349, 1.142, 1.384",\
                 "0.1241, 0.1451, 0.2129, 0.3236, 0.4674, 0.6378, 0.8315, 1.048, 1.286, 1.545",\
                 "0.0917, 0.1157, 0.1922, 0.3184, 0.4829, 0.6789, 0.9009, 1.146, 1.415, 1.709",\
                 "0.0457, 0.0722, 0.1566, 0.2966, 0.4816, 0.703, 0.9536, 1.229, 1.529, 1.854",\
                 "-0.0154, 0.0134, 0.1059, 0.2579, 0.4632, 0.7091, 0.9867, 1.295, 1.627, 1.985");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.17, 0.1898, 0.258, 0.386, 0.5843, 0.8629, 1.228, 1.689, 2.252, 2.921",\
                 "0.1747, 0.1947, 0.2634, 0.3925, 0.5916, 0.8699, 1.236, 1.697, 2.26, 2.93",\
                 "0.1901, 0.2099, 0.2781, 0.4073, 0.6065, 0.8861, 1.252, 1.714, 2.277, 2.946",\
                 "0.219, 0.2393, 0.3084, 0.4352, 0.6317, 0.9087, 1.274, 1.734, 2.297, 2.967",\
                 "0.2701, 0.2925, 0.3642, 0.4915, 0.6854, 0.9557, 1.315, 1.771, 2.33, 2.998",\
                 "0.3368, 0.3631, 0.4453, 0.5805, 0.7739, 1.042, 1.392, 1.84, 2.392, 3.053",\
                 "0.4176, 0.4472, 0.5415, 0.6936, 0.8981, 1.165, 1.514, 1.951, 2.493, 3.145",\
                 "0.5109, 0.5454, 0.6521, 0.8228, 1.048, 1.327, 1.674, 2.111, 2.642, 3.282",\
                 "0.6183, 0.6563, 0.7758, 0.9665, 1.214, 1.516, 1.875, 2.31, 2.841, 3.471",\
                 "0.7386, 0.7808, 0.9132, 1.124, 1.397, 1.725, 2.107, 2.552, 3.08, 3.711");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.09873, 0.1122, 0.1564, 0.2369, 0.3593, 0.5282, 0.7512, 1.032, 1.373, 1.78",\
                 "0.09689, 0.1103, 0.1552, 0.2365, 0.359, 0.5288, 0.7514, 1.031, 1.373, 1.779",\
                 "0.117, 0.1264, 0.1604, 0.2352, 0.358, 0.5281, 0.7507, 1.031, 1.372, 1.78",\
                 "0.1772, 0.1896, 0.2267, 0.2895, 0.3816, 0.5323, 0.7511, 1.031, 1.373, 1.78",\
                 "0.2569, 0.2721, 0.3165, 0.388, 0.4874, 0.6144, 0.7886, 1.039, 1.373, 1.78",\
                 "0.3565, 0.3751, 0.4288, 0.5104, 0.6202, 0.7614, 0.9342, 1.141, 1.421, 1.791",\
                 "0.4764, 0.4994, 0.5628, 0.6586, 0.7816, 0.9326, 1.12, 1.342, 1.594, 1.906",\
                 "0.6198, 0.643, 0.7202, 0.8344, 0.9708, 1.137, 1.334, 1.571, 1.846, 2.153",\
                 "0.7812, 0.8126, 0.9032, 1.034, 1.19, 1.372, 1.583, 1.829, 2.121, 2.451",\
                 "0.9674, 1.002, 1.109, 1.262, 1.439, 1.64, 1.866, 2.126, 2.427, 2.775");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.002805, 0.009139, 0.02124, 0.04008, 0.06653, 0.1013, 0.1452, 0.1987, 0.2625");
          values("0.1926, 0.2256, 0.3431, 0.5678, 0.9175, 1.41, 2.054, 2.867, 3.857, 5.046",\
                 "0.1933, 0.226, 0.3433, 0.5678, 0.9187, 1.409, 2.054, 2.866, 3.857, 5.043",\
                 "0.1979, 0.2291, 0.3436, 0.5681, 0.9176, 1.41, 2.055, 2.869, 3.862, 5.046",\
                 "0.2235, 0.2544, 0.3613, 0.5728, 0.9174, 1.409, 2.051, 2.863, 3.855, 5.04",\
                 "0.286, 0.3114, 0.4057, 0.6056, 0.9331, 1.411, 2.053, 2.866, 3.858, 5.044",\
                 "0.3832, 0.4094, 0.499, 0.673, 0.9786, 1.436, 2.058, 2.863, 3.855, 5.045",\
                 "0.4922, 0.5212, 0.6212, 0.7958, 1.069, 1.496, 2.097, 2.879, 3.86, 5.035",\
                 "0.614, 0.6474, 0.758, 0.9484, 1.218, 1.608, 2.173, 2.928, 3.887, 5.051",\
                 "0.7508, 0.7864, 0.9066, 1.116, 1.406, 1.782, 2.307, 3.023, 3.943, 5.089",\
                 "0.902, 0.9388, 1.068, 1.298, 1.615, 2.006, 2.501, 3.174, 4.055, 5.152");
        }
      }
    }
  }

