/*
 * 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__nand3_1) {
    area : 15.366400 ;

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

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

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

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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "7.82568e-05" ;
    }

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

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

    pin(A1) {
      capacitance : 0.004325 ;
      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.01904, 0.01897, 0.01881, 0.01868, 0.01864, 0.01862, 0.0186, \
                  0.01861, 0.01861, 0.01866");
        }

        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.01061, -0.0106, -0.01059, -0.0106, -0.01061, -0.01062, -0.01063, \
                  -0.01063, -0.01063, -0.01064");
        }
      }

      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.01896, 0.01892, 0.01885, 0.0187, 0.01866, 0.01864, 0.01864, \
                  0.01862, 0.01861, 0.01864");
        }

        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.01062, -0.0106, -0.01061, -0.01061, -0.01062, -0.01062, -0.01064, \
                  -0.01065, -0.01064, -0.01063");
        }
      }

      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.01837, 0.01835, 0.01841, 0.01844, 0.01848, 0.01851, 0.01855, \
                  0.01854, 0.01852, 0.01856");
        }

        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.009568, 0.009554, 0.009255, 0.009268, 0.009318, 0.009315, 0.0093, \
                  0.009324, 0.00932, 0.009297");
        }
      }
    }

    pin(A2) {
      capacitance : 0.00414 ;
      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.02412, 0.02433, 0.02465, 0.02544, 0.02611, 0.02645, 0.02664, \
                  0.02672, 0.02686, 0.02689");
        }

        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.01644, -0.01645, -0.01632, -0.01623, -0.01621, -0.01619, -0.01619, \
                  -0.01618, -0.01617, -0.01615");
        }
      }

      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.01884, 0.01718, 0.01643, 0.01627, 0.01624, 0.01621, 0.01624, \
                  0.01622, 0.01623, 0.01621");
        }

        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.01635, -0.01634, -0.01631, -0.01623, -0.0162, -0.01618, -0.0162, \
                  -0.01617, -0.01618, -0.01616");
        }
      }

      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.01848, 0.01846, 0.01844, 0.01839, 0.01839, 0.01836, 0.01838, \
                  0.01841, 0.01836, 0.01837");
        }

        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.01256, -0.01256, -0.01254, -0.01252, -0.01256, -0.01254, -0.01256, \
                  -0.0126, -0.01259, -0.01259");
        }
      }
    }

    pin(A3) {
      capacitance : 0.004224 ;
      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.01597, 0.01643, 0.01641, 0.01632, 0.01624, 0.01621, 0.01618, \
                  0.01617, 0.01619, 0.01618");
        }

        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.01646, -0.01638, -0.01628, -0.0162, -0.01618, -0.01615, -0.01615, \
                  -0.01617, -0.01614, -0.01612");
        }
      }

      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.01708, 0.01647, 0.01636, 0.01632, 0.01626, 0.01622, 0.01623, \
                  0.01622, 0.01623, 0.01625");
        }

        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.01636, -0.01634, -0.01631, -0.01624, -0.01622, -0.01618, -0.01622, \
                  -0.01616, -0.01616, -0.01616");
        }
      }

      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.01688, 0.01597, 0.01638, 0.01616, 0.01624, 0.01612, 0.0162, \
                  0.01617, 0.01618, 0.01618");
        }

        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.01638, -0.01637, -0.01632, -0.01626, -0.01623, -0.01618, -0.01619, \
                  -0.0162, -0.01617, -0.01616");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)|(!A2)|(!A3))" ;
      max_capacitance : 0.2765 ;
      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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.01116, 0.01121, 0.01154, 0.0117, 0.01181, 0.01186, 0.01187, 0.0119, 0.01191, 0.01191",\
                 "0.01068, 0.01089, 0.01131, 0.0116, 0.01168, 0.01184, 0.01182, 0.01184, 0.01187, 0.01188",\
                 "0.01301, 0.01279, 0.01243, 0.01232, 0.01214, 0.01207, 0.01203, 0.01199, 0.01198, 0.01196",\
                 "0.02302, 0.02189, 0.01937, 0.01714, 0.01561, 0.01455, 0.01386, 0.01336, 0.013, 0.01276",\
                 "0.04272, 0.04039, 0.03495, 0.02938, 0.02495, 0.02166, 0.01929, 0.01759, 0.01635, 0.01544",\
                 "0.07284, 0.06956, 0.06101, 0.05125, 0.04276, 0.03604, 0.03086, 0.02693, 0.02394, 0.02165",\
                 "0.1142, 0.11, 0.09868, 0.08437, 0.07101, 0.05976, 0.05065, 0.04349, 0.03772, 0.03321",\
                 "0.1673, 0.1625, 0.1487, 0.13, 0.1113, 0.09468, 0.0807, 0.0692, 0.05974, 0.05207",\
                 "0.2327, 0.2273, 0.2116, 0.189, 0.1648, 0.1423, 0.1227, 0.106, 0.09198, 0.08018",\
                 "0.3113, 0.3054, 0.2878, 0.2618, 0.2324, 0.2036, 0.1778, 0.155, 0.1356, 0.1188");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.05731, 0.05788, 0.05881, 0.05897, 0.05915, 0.05903, 0.05924, 0.0592, 0.05911, 0.05817",\
                 "0.05683, 0.05739, 0.05845, 0.05949, 0.06019, 0.06094, 0.05967, 0.05977, 0.05965, 0.05961",\
                 "0.05963, 0.05931, 0.05972, 0.05989, 0.06037, 0.05932, 0.05931, 0.06002, 0.05969, 0.05997",\
                 "0.0716, 0.07018, 0.06716, 0.06492, 0.06351, 0.06256, 0.06197, 0.06154, 0.06095, 0.05997",\
                 "0.09411, 0.09163, 0.08562, 0.07999, 0.07409, 0.07077, 0.06809, 0.06622, 0.06494, 0.06357",\
                 "0.1283, 0.1248, 0.1155, 0.105, 0.09497, 0.08718, 0.08156, 0.07619, 0.07373, 0.07113",\
                 "0.1747, 0.1704, 0.1581, 0.1428, 0.1283, 0.1148, 0.1048, 0.0962, 0.0932, 0.08409",\
                 "0.234, 0.2291, 0.2148, 0.1952, 0.1745, 0.1563, 0.1396, 0.1267, 0.1153, 0.1075",\
                 "0.3071, 0.3016, 0.2854, 0.2616, 0.2356, 0.2109, 0.1892, 0.1697, 0.1531, 0.1402",\
                 "0.3946, 0.3887, 0.3707, 0.3438, 0.3128, 0.2815, 0.2537, 0.2271, 0.2049, 0.1845");
        }
      }

      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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.01107, 0.01125, 0.01157, 0.01173, 0.01184, 0.01188, 0.0119, 0.01193, 0.01192, 0.01192",\
                 "0.01014, 0.01048, 0.01105, 0.01143, 0.01163, 0.01174, 0.0118, 0.01184, 0.01185, 0.01185",\
                 "0.01112, 0.01114, 0.01127, 0.01153, 0.01167, 0.01176, 0.01181, 0.01184, 0.01185, 0.01186",\
                 "0.01997, 0.0191, 0.01726, 0.01568, 0.01456, 0.01382, 0.0133, 0.01294, 0.01269, 0.01252",\
                 "0.03927, 0.03722, 0.03237, 0.02747, 0.02356, 0.02071, 0.01862, 0.0171, 0.01599, 0.01516",\
                 "0.06987, 0.06669, 0.05853, 0.0493, 0.04134, 0.03504, 0.03019, 0.02648, 0.02362, 0.02143",\
                 "0.1121, 0.1081, 0.09696, 0.08302, 0.06999, 0.05905, 0.05028, 0.04334, 0.03776, 0.03335",\
                 "0.1666, 0.1619, 0.1482, 0.1297, 0.1111, 0.09476, 0.08099, 0.06969, 0.0604, 0.05277",\
                 "0.2341, 0.2286, 0.2128, 0.1903, 0.166, 0.1435, 0.1239, 0.1074, 0.0933, 0.08162",\
                 "0.3149, 0.309, 0.2913, 0.2652, 0.2356, 0.2067, 0.1806, 0.1579, 0.1383, 0.1215");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.07801, 0.07767, 0.0779, 0.07798, 0.07791, 0.07783, 0.07767, 0.07756, 0.0773, 0.07715",\
                 "0.07716, 0.07732, 0.07797, 0.07863, 0.07903, 0.07714, 0.07703, 0.07731, 0.07715, 0.07679",\
                 "0.07945, 0.07912, 0.07864, 0.0783, 0.07809, 0.07794, 0.07775, 0.0776, 0.07737, 0.07715",\
                 "0.09158, 0.09025, 0.08701, 0.08417, 0.08216, 0.08085, 0.07991, 0.07922, 0.07856, 0.07787",\
                 "0.1146, 0.1123, 0.1063, 0.09922, 0.0935, 0.08956, 0.08664, 0.08444, 0.08255, 0.08147",\
                 "0.1499, 0.1469, 0.138, 0.1274, 0.1161, 0.1074, 0.101, 0.09574, 0.09198, 0.08831",\
                 "0.1979, 0.1941, 0.1831, 0.1673, 0.1516, 0.1372, 0.1258, 0.1162, 0.109, 0.1027",\
                 "0.2593, 0.255, 0.2421, 0.2227, 0.2015, 0.1813, 0.1635, 0.1482, 0.1369, 0.1268",\
                 "0.3348, 0.3301, 0.3157, 0.2932, 0.2668, 0.2409, 0.2165, 0.1948, 0.1769, 0.1617",\
                 "0.4253, 0.4203, 0.4046, 0.3797, 0.349, 0.3163, 0.2853, 0.2568, 0.2317, 0.2103");
        }
      }

      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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.0111, 0.01133, 0.0116, 0.01175, 0.01183, 0.01186, 0.01189, 0.01191, 0.01191, 0.01192",\
                 "0.01003, 0.0104, 0.011, 0.01142, 0.01164, 0.01173, 0.0118, 0.01184, 0.01186, 0.01188",\
                 "0.01001, 0.01021, 0.01068, 0.01113, 0.01143, 0.01161, 0.01171, 0.01177, 0.01181, 0.01184",\
                 "0.01798, 0.01728, 0.01597, 0.01481, 0.01402, 0.01347, 0.01307, 0.0128, 0.01259, 0.01245",\
                 "0.03745, 0.03559, 0.0312, 0.02677, 0.02326, 0.02061, 0.01862, 0.01716, 0.01608, 0.01526",\
                 "0.06953, 0.06654, 0.05873, 0.04987, 0.04215, 0.03601, 0.03121, 0.02746, 0.02455, 0.02227",\
                 "0.1145, 0.1105, 0.09965, 0.08586, 0.07289, 0.062, 0.05317, 0.04599, 0.04026, 0.0356",\
                 "0.1728, 0.168, 0.1545, 0.136, 0.1173, 0.1007, 0.08665, 0.07499, 0.06531, 0.05734",\
                 "0.2449, 0.2396, 0.2238, 0.2011, 0.1766, 0.1536, 0.1335, 0.1163, 0.1017, 0.08939",\
                 "0.3316, 0.3258, 0.308, 0.2817, 0.2517, 0.2221, 0.1952, 0.1716, 0.1512, 0.1337");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.09576, 0.09584, 0.09608, 0.09543, 0.09525, 0.0951, 0.09491, 0.09469, 0.09439, 0.09395",\
                 "0.09472, 0.09481, 0.09486, 0.09478, 0.09468, 0.09441, 0.0943, 0.09415, 0.09377, 0.09359",\
                 "0.09753, 0.09712, 0.0964, 0.09565, 0.09511, 0.09466, 0.09433, 0.09404, 0.09363, 0.09323",\
                 "0.1102, 0.1088, 0.1054, 0.1022, 0.09972, 0.0979, 0.09667, 0.09577, 0.09496, 0.09431",\
                 "0.1346, 0.1321, 0.126, 0.1182, 0.112, 0.1074, 0.104, 0.1011, 0.09921, 0.09719",\
                 "0.1724, 0.1691, 0.1597, 0.1477, 0.136, 0.1265, 0.119, 0.1134, 0.1093, 0.1055",\
                 "0.2242, 0.2203, 0.2083, 0.1915, 0.1744, 0.1583, 0.146, 0.1355, 0.127, 0.1206",\
                 "0.2906, 0.2862, 0.2724, 0.2516, 0.2283, 0.2064, 0.1865, 0.1697, 0.157, 0.1458",\
                 "0.3727, 0.3678, 0.3523, 0.3281, 0.299, 0.2704, 0.2429, 0.22, 0.1998, 0.1836",\
                 "0.4711, 0.4657, 0.449, 0.4219, 0.388, 0.3525, 0.318, 0.2865, 0.259, 0.2354");
        }
      }

      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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.06736, 0.08577, 0.15, 0.2719, 0.4614, 0.7272, 1.077, 1.517, 2.054, 2.695",\
                 "0.07249, 0.09098, 0.1554, 0.2773, 0.4668, 0.7326, 1.082, 1.523, 2.06, 2.701",\
                 "0.09012, 0.1116, 0.1773, 0.2984, 0.4878, 0.7533, 1.103, 1.543, 2.08, 2.721",\
                 "0.1044, 0.1317, 0.2135, 0.3438, 0.5311, 0.7951, 1.144, 1.583, 2.12, 2.76",\
                 "0.1102, 0.1444, 0.2442, 0.3988, 0.6035, 0.8654, 1.211, 1.649, 2.185, 2.824",\
                 "0.1044, 0.1459, 0.2655, 0.4465, 0.6809, 0.9676, 1.312, 1.747, 2.28, 2.917",\
                 "0.0863, 0.135, 0.2752, 0.4842, 0.7495, 1.07, 1.446, 1.882, 2.41, 3.044",\
                 "0.0552, 0.1107, 0.2722, 0.5096, 0.8094, 1.164, 1.577, 2.05, 2.582, 3.211",\
                 "0.0094, 0.0722, 0.2516, 0.5223, 0.8556, 1.249, 1.699, 2.212, 2.786, 3.422",\
                 "-0.0521, 0.0183, 0.2194, 0.5171, 0.887, 1.319, 1.81, 2.362, 2.982, 3.663");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.07245, 0.09307, 0.163, 0.2952, 0.5003, 0.7872, 1.165, 1.641, 2.221, 2.913",\
                 "0.08139, 0.1019, 0.1721, 0.3049, 0.5099, 0.7971, 1.175, 1.651, 2.232, 2.924",\
                 "0.1167, 0.1383, 0.2073, 0.339, 0.544, 0.8315, 1.208, 1.685, 2.264, 2.957",\
                 "0.1687, 0.1959, 0.2786, 0.411, 0.6133, 0.8986, 1.275, 1.75, 2.33, 3.022",\
                 "0.2333, 0.2681, 0.368, 0.5234, 0.7291, 1.011, 1.384, 1.857, 2.436, 3.126",\
                 "0.3093, 0.3523, 0.4732, 0.6539, 0.8893, 1.176, 1.544, 2.012, 2.589, 3.277",\
                 "0.3973, 0.4484, 0.592, 0.8024, 1.067, 1.388, 1.764, 2.227, 2.797, 3.481",\
                 "0.4978, 0.5573, 0.7249, 0.9671, 1.265, 1.62, 2.033, 2.504, 3.067, 3.746",\
                 "0.6126, 0.6795, 0.8707, 1.147, 1.483, 1.872, 2.324, 2.836, 3.408, 4.08",\
                 "0.7416, 0.8172, 1.03, 1.34, 1.716, 2.147, 2.637, 3.189, 3.805, 4.485");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.09457, 0.1263, 0.2368, 0.4476, 0.7748, 1.234, 1.839, 2.6, 3.528, 4.635",\
                 "0.09372, 0.1258, 0.2367, 0.4476, 0.7748, 1.233, 1.839, 2.599, 3.53, 4.637",\
                 "0.1135, 0.1423, 0.2391, 0.4469, 0.7748, 1.235, 1.839, 2.599, 3.529, 4.637",\
                 "0.1535, 0.185, 0.2866, 0.4645, 0.7757, 1.233, 1.838, 2.599, 3.529, 4.637",\
                 "0.2147, 0.2496, 0.3567, 0.5445, 0.818, 1.238, 1.839, 2.601, 3.53, 4.637",\
                 "0.2875, 0.3304, 0.4538, 0.6492, 0.9346, 1.315, 1.856, 2.6, 3.529, 4.638",\
                 "0.3692, 0.4218, 0.5688, 0.782, 1.078, 1.471, 1.971, 2.64, 3.532, 4.637",\
                 "0.4618, 0.5232, 0.6932, 0.9388, 1.249, 1.654, 2.169, 2.796, 3.604, 4.648",\
                 "0.565, 0.6362, 0.8334, 1.11, 1.448, 1.867, 2.394, 3.035, 3.799, 4.758",\
                 "0.6788, 0.759, 0.9848, 1.297, 1.675, 2.115, 2.658, 3.313, 4.091, 5.001");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.0949, 0.129, 0.2484, 0.4787, 0.8348, 1.334, 1.991, 2.819, 3.832, 5.034",\
                 "0.09486, 0.129, 0.2486, 0.4774, 0.8319, 1.334, 1.99, 2.818, 3.831, 5.037",\
                 "0.1127, 0.1394, 0.2487, 0.4769, 0.8322, 1.333, 1.99, 2.82, 3.83, 5.036",\
                 "0.1588, 0.1901, 0.2875, 0.4827, 0.8343, 1.334, 1.991, 2.82, 3.83, 5.034",\
                 "0.2225, 0.2582, 0.3658, 0.5502, 0.8504, 1.334, 1.99, 2.819, 3.831, 5.035",\
                 "0.2974, 0.3434, 0.4654, 0.6634, 0.9496, 1.367, 1.991, 2.819, 3.831, 5.035",\
                 "0.3808, 0.4362, 0.5822, 0.7988, 1.102, 1.497, 2.047, 2.823, 3.824, 5.034",\
                 "0.471, 0.5372, 0.7136, 0.9598, 1.275, 1.693, 2.207, 2.903, 3.841, 5.035",\
                 "0.5724, 0.6472, 0.8546, 1.142, 1.481, 1.91, 2.45, 3.097, 3.951, 5.062",\
                 "0.6824, 0.7674, 1.003, 1.332, 1.71, 2.16, 2.719, 3.385, 4.178, 5.196");
        }
      }

      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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.08418, 0.1028, 0.1669, 0.2886, 0.4782, 0.7437, 1.094, 1.534, 2.071, 2.712",\
                 "0.08747, 0.1061, 0.1707, 0.2928, 0.4825, 0.7484, 1.098, 1.538, 2.076, 2.717",\
                 "0.09598, 0.1168, 0.1832, 0.3053, 0.4949, 0.7606, 1.11, 1.55, 2.088, 2.729",\
                 "0.1031, 0.1281, 0.2039, 0.3324, 0.521, 0.7856, 1.135, 1.575, 2.112, 2.752",\
                 "0.1006, 0.1318, 0.2233, 0.3663, 0.5653, 0.8291, 1.176, 1.614, 2.151, 2.79",\
                 "0.08435, 0.122, 0.2319, 0.398, 0.6146, 0.892, 1.239, 1.675, 2.209, 2.847",\
                 "0.0531, 0.097, 0.2256, 0.4181, 0.6616, 0.9585, 1.323, 1.761, 2.291, 2.927",\
                 "0.0052, 0.0556, 0.2023, 0.4228, 0.698, 1.024, 1.408, 1.866, 2.401, 3.033",\
                 "-0.0617, -0.0045, 0.1611, 0.4092, 0.7178, 1.079, 1.492, 1.971, 2.527, 3.167",\
                 "-0.1481, -0.0842, 0.1008, 0.3763, 0.7195, 1.118, 1.568, 2.076, 2.656, 3.318");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.09444, 0.1147, 0.1841, 0.3159, 0.5206, 0.8075, 1.185, 1.661, 2.241, 2.934",\
                 "0.1027, 0.123, 0.193, 0.3251, 0.5295, 0.8174, 1.194, 1.67, 2.251, 2.943",\
                 "0.1399, 0.1597, 0.2282, 0.3593, 0.5639, 0.8506, 1.228, 1.704, 2.285, 2.977",\
                 "0.2015, 0.2259, 0.3028, 0.4323, 0.6339, 0.919, 1.295, 1.769, 2.349, 3.041",\
                 "0.2798, 0.31, 0.4008, 0.549, 0.7508, 1.032, 1.404, 1.877, 2.456, 3.146",\
                 "0.3744, 0.4107, 0.5194, 0.6884, 0.9162, 1.199, 1.566, 2.034, 2.609, 3.296",\
                 "0.4854, 0.5281, 0.6554, 0.8499, 1.103, 1.417, 1.788, 2.249, 2.819, 3.502",\
                 "0.614, 0.6634, 0.81, 1.032, 1.315, 1.659, 2.064, 2.529, 3.093, 3.77",\
                 "0.7605, 0.8164, 0.984, 1.235, 1.551, 1.925, 2.365, 2.868, 3.437, 4.106",\
                 "0.926, 0.9892, 1.177, 1.458, 1.809, 2.22, 2.691, 3.234, 3.841, 4.517");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.09488, 0.1267, 0.2372, 0.4476, 0.7755, 1.235, 1.839, 2.599, 3.529, 4.637",\
                 "0.09504, 0.1266, 0.2368, 0.4478, 0.7746, 1.235, 1.839, 2.599, 3.528, 4.636",\
                 "0.1138, 0.1413, 0.2402, 0.4477, 0.775, 1.235, 1.839, 2.6, 3.529, 4.635",\
                 "0.154, 0.1807, 0.2755, 0.4617, 0.7755, 1.235, 1.839, 2.601, 3.53, 4.637",\
                 "0.2179, 0.2465, 0.3388, 0.5184, 0.8062, 1.24, 1.838, 2.6, 3.529, 4.636",\
                 "0.2942, 0.3274, 0.4307, 0.6066, 0.8856, 1.289, 1.853, 2.6, 3.529, 4.638",\
                 "0.38, 0.4198, 0.5402, 0.7282, 1.001, 1.394, 1.926, 2.631, 3.534, 4.637",\
                 "0.4754, 0.5216, 0.6616, 0.8736, 1.155, 1.539, 2.057, 2.728, 3.586, 4.65",\
                 "0.5818, 0.6352, 0.7942, 1.034, 1.342, 1.724, 2.232, 2.888, 3.706, 4.724",\
                 "0.6968, 0.7572, 0.9382, 1.21, 1.544, 1.948, 2.45, 3.094, 3.897, 4.872");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.1282, 0.1626, 0.2831, 0.5124, 0.8688, 1.368, 2.025, 2.853, 3.863, 5.068",\
                 "0.128, 0.1623, 0.2831, 0.5123, 0.8679, 1.367, 2.024, 2.852, 3.863, 5.069",\
                 "0.1378, 0.1674, 0.2829, 0.5123, 0.8685, 1.368, 2.025, 2.853, 3.865, 5.068",\
                 "0.1864, 0.2168, 0.3132, 0.515, 0.8685, 1.368, 2.025, 2.853, 3.863, 5.067",\
                 "0.2502, 0.2836, 0.3906, 0.5758, 0.881, 1.367, 2.025, 2.853, 3.864, 5.067",\
                 "0.3276, 0.3692, 0.4888, 0.686, 0.9732, 1.397, 2.026, 2.853, 3.863, 5.067",\
                 "0.4142, 0.464, 0.6058, 0.8184, 1.122, 1.52, 2.077, 2.857, 3.863, 5.068",\
                 "0.511, 0.5698, 0.7354, 0.9752, 1.292, 1.711, 2.23, 2.931, 3.876, 5.066",\
                 "0.614, 0.6838, 0.8772, 1.153, 1.49, 1.927, 2.466, 3.118, 3.977, 5.091",\
                 "0.7252, 0.8056, 1.03, 1.343, 1.715, 2.165, 2.73, 3.396, 4.198, 5.221");
        }
      }

      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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.09267, 0.1112, 0.1754, 0.2972, 0.4869, 0.7524, 1.102, 1.542, 2.08, 2.72",\
                 "0.09548, 0.1143, 0.1788, 0.301, 0.4907, 0.7566, 1.106, 1.546, 2.084, 2.725",\
                 "0.09849, 0.1185, 0.1843, 0.3067, 0.4965, 0.7622, 1.112, 1.552, 2.09, 2.731",\
                 "0.09573, 0.1184, 0.1902, 0.3165, 0.5052, 0.7702, 1.119, 1.559, 2.096, 2.737",\
                 "0.07971, 0.1079, 0.1913, 0.327, 0.5227, 0.7865, 1.134, 1.572, 2.108, 2.747",\
                 "0.04658, 0.08025, 0.1794, 0.3323, 0.5393, 0.8124, 1.16, 1.595, 2.129, 2.766",\
                 "-0.0055, 0.0339, 0.1491, 0.3237, 0.5505, 0.8358, 1.194, 1.632, 2.162, 2.796",\
                 "-0.079, -0.0338, 0.098, 0.2962, 0.5474, 0.8548, 1.225, 1.675, 2.21, 2.841",\
                 "-0.1761, -0.125, 0.0241, 0.2466, 0.5262, 0.8588, 1.252, 1.714, 2.263, 2.902",\
                 "-0.2982, -0.241, -0.0745, 0.1727, 0.482, 0.8446, 1.265, 1.749, 2.311, 2.963");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.1094, 0.1302, 0.201, 0.3338, 0.539, 0.8262, 1.204, 1.679, 2.26, 2.952",\
                 "0.1176, 0.1384, 0.2094, 0.3421, 0.5474, 0.8345, 1.212, 1.688, 2.268, 2.961",\
                 "0.1555, 0.1755, 0.2452, 0.3769, 0.5815, 0.8684, 1.246, 1.721, 2.302, 2.994",\
                 "0.2252, 0.2485, 0.3222, 0.4507, 0.6523, 0.9371, 1.313, 1.787, 2.368, 3.058",\
                 "0.3154, 0.3429, 0.4286, 0.5713, 0.7707, 1.051, 1.424, 1.895, 2.473, 3.163",\
                 "0.4269, 0.4591, 0.5589, 0.7194, 0.9406, 1.22, 1.586, 2.054, 2.628, 3.315",\
                 "0.56, 0.5978, 0.7124, 0.8941, 1.138, 1.444, 1.811, 2.271, 2.839, 3.521",\
                 "0.7163, 0.7593, 0.8904, 1.096, 1.363, 1.696, 2.094, 2.555, 3.116, 3.791",\
                 "0.8965, 0.946, 1.094, 1.323, 1.619, 1.977, 2.405, 2.902, 3.464, 4.132",\
                 "1.103, 1.158, 1.323, 1.579, 1.904, 2.293, 2.749, 3.279, 3.878, 4.547");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.09483, 0.1266, 0.2373, 0.4473, 0.7758, 1.234, 1.839, 2.6, 3.529, 4.637",\
                 "0.09488, 0.1266, 0.2372, 0.4472, 0.7751, 1.234, 1.839, 2.6, 3.528, 4.637",\
                 "0.1071, 0.1356, 0.2388, 0.4478, 0.7752, 1.235, 1.839, 2.599, 3.529, 4.636",\
                 "0.1405, 0.1665, 0.2652, 0.4592, 0.7758, 1.234, 1.839, 2.6, 3.529, 4.637",\
                 "0.2014, 0.227, 0.3175, 0.5021, 0.8014, 1.24, 1.839, 2.6, 3.53, 4.636",\
                 "0.2778, 0.3058, 0.4007, 0.5759, 0.8646, 1.283, 1.855, 2.602, 3.53, 4.637",\
                 "0.3652, 0.3978, 0.502, 0.6838, 0.9592, 1.366, 1.916, 2.633, 3.537, 4.637",\
                 "0.4628, 0.5, 0.6178, 0.813, 1.094, 1.483, 2.021, 2.716, 3.585, 4.656",\
                 "0.5684, 0.6126, 0.746, 0.9614, 1.255, 1.646, 2.161, 2.842, 3.69, 4.723",\
                 "0.6816, 0.7336, 0.8876, 1.124, 1.439, 1.839, 2.35, 3.008, 3.841, 4.85");
        }

        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.002901, 0.009575, 0.02232, 0.04217, 0.07003, 0.1067, 0.1529, 0.2093, 0.2765");
          values("0.1563, 0.1912, 0.3128, 0.5433, 0.8999, 1.4, 2.057, 2.885, 3.895, 5.1",\
                 "0.156, 0.1913, 0.3131, 0.5431, 0.9001, 1.4, 2.057, 2.885, 3.896, 5.1",\
                 "0.1603, 0.1929, 0.313, 0.5434, 0.9002, 1.4, 2.058, 2.885, 3.896, 5.1",\
                 "0.2071, 0.2374, 0.3358, 0.5449, 0.8999, 1.4, 2.057, 2.885, 3.895, 5.1",\
                 "0.2718, 0.3047, 0.4124, 0.5986, 0.91, 1.399, 2.057, 2.884, 3.895, 5.099",\
                 "0.3516, 0.3908, 0.5074, 0.7072, 0.9952, 1.425, 2.058, 2.885, 3.895, 5.099",\
                 "0.4408, 0.4878, 0.623, 0.835, 1.141, 1.541, 2.104, 2.889, 3.895, 5.1",\
                 "0.5398, 0.595, 0.753, 0.9878, 1.307, 1.727, 2.251, 2.959, 3.907, 5.099",\
                 "0.651, 0.714, 0.8956, 1.159, 1.496, 1.933, 2.478, 3.138, 4.001, 5.122",\
                 "0.7688, 0.843, 1.05, 1.349, 1.713, 2.163, 2.73, 3.405, 4.215, 5.247");
        }
      }
    }
  }

