/*
 * Copyright 2022 GlobalFoundries PDK Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

  cell(gf180mcu_fd_sc_mcu7t5v0__nor3_1) {
    area : 17.561600 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.02939, 0.02936, 0.02929, 0.02924, 0.02921, 0.02922, 0.0292, \
                  0.02918, 0.02913, 0.02907");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.005952, -0.005957, -0.005964, -0.005964, -0.005956, -0.005971, \
                  -0.005973, -0.005974, -0.005974, -0.005973");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.0158, 0.01576, 0.01575, 0.01572, 0.01571, 0.01573, 0.01573, \
                  0.0157, 0.01569, 0.01566");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.006037, -0.00604, -0.006037, -0.006049, -0.00604, -0.006055, \
                  -0.006063, -0.00606, -0.006057, -0.006058");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01569, 0.01565, 0.01565, 0.0156, 0.01561, 0.01562, 0.01561, \
                  0.0156, 0.01558, 0.01556");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.006033, -0.006045, -0.006034, -0.006038, -0.006046, -0.006054, \
                  -0.006058, -0.006063, -0.00606, -0.006061");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01343, 0.01345, 0.01344, 0.01344, 0.01343, 0.01344, 0.01343, \
                  0.01338, 0.01335, 0.0133");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.006792, -0.006811, -0.006804, -0.006814, -0.006821, -0.006848, \
                  -0.006856, -0.006869, -0.006884, -0.006902");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.02072, 0.02073, 0.02065, 0.02063, 0.02062, 0.02065, 0.02066, \
                  0.02066, 0.02066, 0.02065");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.01618, -0.01673, -0.01876, -0.01977, -0.02013, -0.0203, -0.02036, \
                  -0.02041, -0.02044, -0.02046");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01259, 0.01257, 0.01262, 0.0126, 0.01259, 0.01262, 0.01262, \
                  0.01262, 0.01262, 0.01262");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.01347, -0.01316, -0.01248, -0.01192, -0.01151, -0.01128, -0.01106, \
                  -0.01089, -0.01076, -0.01066");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.02067, 0.02065, 0.02059, 0.02062, 0.02063, 0.02063, 0.02065, \
                  0.02064, 0.02063, 0.02063");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.01739, -0.01859, -0.01984, -0.02006, -0.02016, -0.02025, -0.0203, \
                  -0.02035, -0.02036, -0.02039");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.02098, 0.02098, 0.02092, 0.0209, 0.02093, 0.02096, 0.02094, \
                  0.02094, 0.02095, 0.02094");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.01638, -0.01737, -0.01873, -0.01937, -0.01968, -0.0199, -0.02, \
                  -0.02008, -0.02012, -0.02016");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.02064, 0.0206, 0.02061, 0.02058, 0.02058, 0.02064, 0.0206, 0.0206, \
                  0.0206, 0.0206");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.01918, -0.0197, -0.01997, -0.02009, -0.02016, -0.02026, -0.0203, \
                  -0.02034, -0.02036, -0.02038");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.1186 ;
      max_transition : 7.4 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.001704, 0.001817, 0.002041, 0.002207, 0.002326, 0.002394, 0.002438, 0.002473, 0.00248, 0.002501",\
                 "0.002426, 0.002528, 0.002868, 0.00319, 0.003406, 0.003539, 0.003633, 0.003709, 0.003739, 0.003769",\
                 "0.006477, 0.006413, 0.00625, 0.006018, 0.005815, 0.005682, 0.005553, 0.005469, 0.005414, 0.005367",\
                 "0.01611, 0.01568, 0.01447, 0.01303, 0.01166, 0.01047, 0.009516, 0.008785, 0.008179, 0.007725",\
                 "0.03403, 0.03315, 0.03066, 0.02731, 0.02393, 0.02096, 0.0184, 0.01631, 0.01462, 0.0132",\
                 "0.06194, 0.06065, 0.05679, 0.05122, 0.04523, 0.03967, 0.03477, 0.03059, 0.02702, 0.02404",\
                 "0.1008, 0.09907, 0.09392, 0.08615, 0.07728, 0.0686, 0.06063, 0.05358, 0.04753, 0.04227",\
                 "0.1512, 0.1491, 0.1427, 0.1328, 0.1212, 0.109, 0.09761, 0.0871, 0.07777, 0.0696",\
                 "0.2138, 0.2115, 0.204, 0.1921, 0.1776, 0.1622, 0.1469, 0.1326, 0.1195, 0.1078",\
                 "0.2892, 0.2866, 0.2782, 0.2646, 0.2475, 0.2287, 0.2096, 0.1912, 0.1739, 0.1582");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.062, 0.06214, 0.06243, 0.06271, 0.06302, 0.06332, 0.06363, 0.06402, 0.0644, 0.06523",\
                 "0.06146, 0.06157, 0.0619, 0.06233, 0.06274, 0.06314, 0.06352, 0.06395, 0.06433, 0.06523",\
                 "0.06553, 0.06529, 0.06467, 0.06416, 0.06393, 0.06389, 0.06402, 0.06424, 0.06448, 0.06567",\
                 "0.07839, 0.07767, 0.07574, 0.07328, 0.071, 0.06936, 0.0682, 0.06755, 0.06717, 0.06761",\
                 "0.1009, 0.09977, 0.09651, 0.09202, 0.08729, 0.08301, 0.0795, 0.07684, 0.07466, 0.07377",\
                 "0.1343, 0.1328, 0.128, 0.1216, 0.1143, 0.1071, 0.1005, 0.09498, 0.09042, 0.08748",\
                 "0.1797, 0.1778, 0.1717, 0.1629, 0.1531, 0.1431, 0.1333, 0.1242, 0.1164, 0.1109",\
                 "0.238, 0.2356, 0.2284, 0.2173, 0.2047, 0.1917, 0.1786, 0.1664, 0.1548, 0.1459",\
                 "0.3098, 0.3071, 0.2989, 0.2858, 0.27, 0.2538, 0.2377, 0.2218, 0.2067, 0.1955",\
                 "0.3961, 0.3932, 0.3839, 0.3691, 0.3507, 0.3309, 0.3111, 0.2916, 0.2734, 0.2604");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.01675, 0.01671, 0.01675, 0.01674, 0.01679, 0.01683, 0.01683, 0.01684, 0.01684, 0.01684",\
                 "0.01674, 0.01677, 0.01673, 0.01677, 0.01678, 0.01683, 0.01683, 0.01684, 0.01686, 0.01685",\
                 "0.01892, 0.01879, 0.01846, 0.01807, 0.01771, 0.01748, 0.01731, 0.0172, 0.01711, 0.01704",\
                 "0.02786, 0.02743, 0.02617, 0.02457, 0.02303, 0.02168, 0.02067, 0.01984, 0.01924, 0.01877",\
                 "0.04692, 0.04605, 0.04345, 0.03981, 0.03604, 0.0327, 0.02983, 0.02749, 0.02562, 0.02411",\
                 "0.07762, 0.07628, 0.07216, 0.06619, 0.05961, 0.05324, 0.04767, 0.04287, 0.03885, 0.03548",\
                 "0.1209, 0.1191, 0.1135, 0.1051, 0.09536, 0.08558, 0.07643, 0.0683, 0.06125, 0.05527",\
                 "0.1775, 0.1753, 0.1684, 0.1576, 0.1445, 0.131, 0.118, 0.1058, 0.09501, 0.08554",\
                 "0.248, 0.2456, 0.2375, 0.2244, 0.2082, 0.1908, 0.1735, 0.1571, 0.142, 0.1283",\
                 "0.3331, 0.3303, 0.3213, 0.3064, 0.2872, 0.2659, 0.2443, 0.2233, 0.2034, 0.185");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.07767, 0.07778, 0.07798, 0.07822, 0.07849, 0.07887, 0.07904, 0.07939, 0.0797, 0.08067",\
                 "0.07657, 0.07672, 0.07717, 0.07767, 0.07815, 0.07858, 0.07889, 0.07929, 0.07963, 0.0806",\
                 "0.077, 0.07699, 0.07706, 0.0773, 0.07777, 0.07822, 0.07864, 0.07914, 0.07959, 0.08051",\
                 "0.0871, 0.08664, 0.08524, 0.08369, 0.08246, 0.08168, 0.0812, 0.08098, 0.08107, 0.08187",\
                 "0.1106, 0.1095, 0.1063, 0.1021, 0.098, 0.09442, 0.09153, 0.08951, 0.08794, 0.08756",\
                 "0.1476, 0.146, 0.141, 0.1342, 0.1267, 0.1197, 0.1134, 0.108, 0.1038, 0.1012",\
                 "0.1983, 0.1963, 0.1899, 0.1804, 0.1697, 0.159, 0.1489, 0.1398, 0.1317, 0.1263",\
                 "0.2635, 0.2612, 0.2536, 0.2417, 0.2277, 0.2133, 0.1993, 0.1861, 0.1738, 0.1647",\
                 "0.344, 0.3413, 0.3328, 0.3188, 0.3017, 0.2835, 0.2656, 0.2478, 0.2317, 0.219",\
                 "0.4406, 0.4377, 0.4282, 0.4127, 0.3926, 0.3706, 0.3482, 0.3264, 0.3061, 0.2908");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.02958, 0.02958, 0.02952, 0.02957, 0.02954, 0.02957, 0.02958, 0.02958, 0.02959, 0.02959",\
                 "0.02833, 0.02833, 0.02829, 0.02823, 0.02823, 0.02828, 0.02825, 0.02827, 0.02826, 0.02825",\
                 "0.02904, 0.02888, 0.02853, 0.02811, 0.02779, 0.02752, 0.02739, 0.02729, 0.02719, 0.02714",\
                 "0.03791, 0.03739, 0.03597, 0.03418, 0.03252, 0.03112, 0.03002, 0.02925, 0.02864, 0.02821",\
                 "0.05923, 0.05815, 0.05504, 0.05072, 0.0464, 0.04257, 0.0394, 0.03686, 0.03488, 0.03334",\
                 "0.095, 0.09337, 0.0883, 0.08091, 0.07292, 0.06538, 0.05881, 0.05336, 0.04888, 0.04518",\
                 "0.1464, 0.1442, 0.1372, 0.1266, 0.1145, 0.1024, 0.09137, 0.08174, 0.07354, 0.06667",\
                 "0.2141, 0.2114, 0.2027, 0.189, 0.1727, 0.1556, 0.1394, 0.1246, 0.1117, 0.1004",\
                 "0.2987, 0.2955, 0.2855, 0.269, 0.2485, 0.2265, 0.2046, 0.1842, 0.1655, 0.149",\
                 "0.4009, 0.3975, 0.3861, 0.3673, 0.3429, 0.3159, 0.2885, 0.262, 0.237, 0.2145");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.09304, 0.09314, 0.09337, 0.09361, 0.0939, 0.0942, 0.09448, 0.09477, 0.09508, 0.09601",\
                 "0.09189, 0.09208, 0.09248, 0.09304, 0.09349, 0.09388, 0.09427, 0.09462, 0.09497, 0.09595",\
                 "0.09112, 0.09121, 0.09148, 0.09205, 0.09262, 0.09316, 0.09373, 0.09423, 0.09471, 0.09578",\
                 "0.09872, 0.09839, 0.09744, 0.09639, 0.09571, 0.09536, 0.09527, 0.09549, 0.09561, 0.09659",\
                 "0.1223, 0.1212, 0.1183, 0.1144, 0.1107, 0.1076, 0.1051, 0.1034, 0.1022, 0.1019",\
                 "0.1638, 0.162, 0.1568, 0.1495, 0.1419, 0.1348, 0.1286, 0.1234, 0.1193, 0.1167",\
                 "0.2226, 0.2204, 0.2134, 0.203, 0.1911, 0.1794, 0.1687, 0.1591, 0.1507, 0.1447",\
                 "0.2988, 0.2963, 0.288, 0.2749, 0.259, 0.2427, 0.2271, 0.2127, 0.1994, 0.189",\
                 "0.393, 0.3902, 0.381, 0.3657, 0.3464, 0.3254, 0.3049, 0.2852, 0.2669, 0.2522",\
                 "0.506, 0.503, 0.4929, 0.4759, 0.4535, 0.4285, 0.4028, 0.3779, 0.3544, 0.3357");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.07486, 0.08347, 0.1136, 0.1711, 0.26, 0.3845, 0.5483, 0.7545, 1.007, 1.307",\
                 "0.0858, 0.09438, 0.1248, 0.1823, 0.2713, 0.396, 0.5598, 0.7663, 1.019, 1.318",\
                 "0.1128, 0.1243, 0.1609, 0.2207, 0.3092, 0.4333, 0.5969, 0.803, 1.055, 1.356",\
                 "0.1167, 0.1333, 0.1853, 0.2682, 0.3761, 0.5059, 0.6681, 0.873, 1.124, 1.424",\
                 "0.0855, 0.1076, 0.1767, 0.2862, 0.4259, 0.5905, 0.7771, 0.9863, 1.235, 1.533",\
                 "0.0154, 0.0429, 0.1291, 0.2664, 0.441, 0.6446, 0.8713, 1.121, 1.393, 1.693",\
                 "-0.0957, -0.0629, 0.0404, 0.2044, 0.414, 0.658, 0.9303, 1.225, 1.543, 1.885",\
                 "-0.2508, -0.2125, -0.0928, 0.0979, 0.3426, 0.6281, 0.9452, 1.29, 1.657, 2.048",\
                 "-0.4486, -0.4064, -0.2716, -0.0559, 0.2229, 0.5494, 0.9126, 1.307, 1.728, 2.173",\
                 "-0.6932, -0.646, -0.4972, -0.2572, 0.0537, 0.4198, 0.8282, 1.273, 1.748, 2.25");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.1695, 0.1961, 0.289, 0.4647, 0.7366, 1.118, 1.619, 2.25, 3.019, 3.934",\
                 "0.1763, 0.2027, 0.2956, 0.4716, 0.7449, 1.126, 1.627, 2.258, 3.028, 3.943",\
                 "0.2287, 0.2528, 0.3408, 0.5123, 0.7821, 1.162, 1.661, 2.29, 3.06, 3.978",\
                 "0.3381, 0.3639, 0.4518, 0.6148, 0.8743, 1.246, 1.74, 2.366, 3.13, 4.045",\
                 "0.4915, 0.5218, 0.6189, 0.7896, 1.043, 1.403, 1.885, 2.5, 3.257, 4.165",\
                 "0.6844, 0.7206, 0.8339, 1.022, 1.288, 1.644, 2.113, 2.716, 3.461, 4.358",\
                 "0.9172, 0.9599, 1.092, 1.307, 1.595, 1.967, 2.436, 3.023, 3.754, 4.636",\
                 "1.193, 1.242, 1.395, 1.639, 1.961, 2.356, 2.842, 3.432, 4.147, 5.013",\
                 "1.515, 1.57, 1.743, 2.02, 2.377, 2.809, 3.32, 3.93, 4.647, 5.5",\
                 "1.886, 1.947, 2.14, 2.448, 2.846, 3.319, 3.866, 4.5, 5.242, 6.097");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.08862, 0.1032, 0.1549, 0.2532, 0.4059, 0.6212, 0.9054, 1.261, 1.698, 2.217",\
                 "0.08862, 0.1033, 0.1548, 0.2532, 0.4063, 0.6208, 0.9055, 1.26, 1.696, 2.218",\
                 "0.1255, 0.1384, 0.1798, 0.2606, 0.4063, 0.6212, 0.9039, 1.263, 1.697, 2.215",\
                 "0.1964, 0.2131, 0.2657, 0.3518, 0.4708, 0.6439, 0.907, 1.26, 1.696, 2.216",\
                 "0.2908, 0.3121, 0.3794, 0.4843, 0.6231, 0.793, 1.004, 1.3, 1.702, 2.214",\
                 "0.408, 0.4362, 0.5196, 0.648, 0.8108, 1.003, 1.232, 1.497, 1.828, 2.269",\
                 "0.5496, 0.5842, 0.687, 0.842, 1.032, 1.254, 1.507, 1.794, 2.127, 2.506",\
                 "0.7118, 0.7554, 0.8794, 1.063, 1.289, 1.54, 1.824, 2.14, 2.497, 2.894",\
                 "0.897, 0.9458, 1.098, 1.314, 1.572, 1.86, 2.181, 2.532, 2.916, 3.342",\
                 "1.103, 1.163, 1.338, 1.594, 1.884, 2.216, 2.57, 2.964, 3.385, 3.838");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.3465, 0.3969, 0.5677, 0.8876, 1.382, 2.074, 2.983, 4.13, 5.526, 7.196",\
                 "0.3451, 0.3947, 0.5673, 0.8864, 1.381, 2.074, 2.981, 4.13, 5.527, 7.196",\
                 "0.3419, 0.3902, 0.5633, 0.8869, 1.382, 2.075, 2.983, 4.128, 5.526, 7.198",\
                 "0.3855, 0.4284, 0.5795, 0.884, 1.382, 2.075, 2.987, 4.128, 5.529, 7.196",\
                 "0.4616, 0.502, 0.6494, 0.9314, 1.391, 2.075, 2.982, 4.129, 5.53, 7.193",\
                 "0.5816, 0.6244, 0.7662, 1.035, 1.469, 2.106, 2.986, 4.136, 5.537, 7.192",\
                 "0.7256, 0.7738, 0.9308, 1.195, 1.611, 2.213, 3.046, 4.14, 5.535, 7.194",\
                 "0.8918, 0.9446, 1.122, 1.406, 1.81, 2.392, 3.183, 4.227, 5.558, 7.205",\
                 "1.074, 1.136, 1.332, 1.648, 2.073, 2.639, 3.409, 4.397, 5.677, 7.253",\
                 "1.279, 1.348, 1.565, 1.916, 2.376, 2.943, 3.682, 4.658, 5.875, 7.408");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.102, 0.1113, 0.1432, 0.2022, 0.2925, 0.418, 0.5826, 0.7894, 1.041, 1.342",\
                 "0.1117, 0.1211, 0.1529, 0.2119, 0.3022, 0.4277, 0.5922, 0.7991, 1.051, 1.352",\
                 "0.1452, 0.1558, 0.1896, 0.2481, 0.3377, 0.4629, 0.627, 0.8334, 1.086, 1.386",\
                 "0.1649, 0.1798, 0.2271, 0.3047, 0.4077, 0.5346, 0.6973, 0.9028, 1.154, 1.454",\
                 "0.1538, 0.1733, 0.2353, 0.3366, 0.4696, 0.6277, 0.8093, 1.016, 1.265, 1.563",\
                 "0.1092, 0.1329, 0.2098, 0.3358, 0.5, 0.6944, 0.9139, 1.158, 1.425, 1.723",\
                 "0.0299, 0.0579, 0.1482, 0.2972, 0.4943, 0.7266, 0.9882, 1.274, 1.586, 1.922",\
                 "-0.085, -0.053, 0.05, 0.2206, 0.4485, 0.7185, 1.023, 1.356, 1.714, 2.097",\
                 "-0.237, -0.2013, -0.0862, 0.1054, 0.3616, 0.6692, 1.016, 1.397, 1.805, 2.239",\
                 "-0.4277, -0.389, -0.2621, -0.0511, 0.2327, 0.5736, 0.9642, 1.392, 1.851, 2.338");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.2543, 0.281, 0.3738, 0.5497, 0.821, 1.202, 1.702, 2.332, 3.102, 4.019",\
                 "0.2579, 0.285, 0.3793, 0.5562, 0.8288, 1.21, 1.711, 2.341, 3.111, 4.028",\
                 "0.2821, 0.3087, 0.4013, 0.5769, 0.8496, 1.231, 1.732, 2.363, 3.132, 4.049",\
                 "0.3489, 0.3758, 0.4686, 0.6382, 0.9031, 1.279, 1.776, 2.404, 3.171, 4.089",\
                 "0.4681, 0.4973, 0.5929, 0.7638, 1.022, 1.385, 1.871, 2.49, 3.25, 4.16",\
                 "0.6243, 0.6582, 0.7667, 0.949, 1.21, 1.568, 2.039, 2.642, 3.39, 4.288",\
                 "0.8127, 0.8518, 0.9758, 1.182, 1.46, 1.821, 2.288, 2.876, 3.607, 4.49",\
                 "1.035, 1.079, 1.22, 1.451, 1.759, 2.14, 2.611, 3.197, 3.91, 4.775",\
                 "1.292, 1.342, 1.5, 1.758, 2.099, 2.513, 3.006, 3.595, 4.306, 5.154",\
                 "1.586, 1.641, 1.817, 2.102, 2.477, 2.93, 3.457, 4.066, 4.782, 5.63");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.1302, 0.1451, 0.1981, 0.2973, 0.4518, 0.6668, 0.9509, 1.307, 1.742, 2.261",\
                 "0.1294, 0.145, 0.1978, 0.2972, 0.4513, 0.6669, 0.9507, 1.308, 1.743, 2.261",\
                 "0.1594, 0.1709, 0.2118, 0.3002, 0.4514, 0.6671, 0.9506, 1.307, 1.743, 2.261",\
                 "0.2452, 0.2605, 0.3083, 0.3885, 0.5044, 0.6844, 0.9516, 1.307, 1.742, 2.261",\
                 "0.361, 0.3799, 0.4389, 0.5346, 0.6638, 0.8298, 1.04, 1.34, 1.747, 2.26",\
                 "0.5092, 0.532, 0.6042, 0.7172, 0.867, 1.049, 1.269, 1.531, 1.867, 2.31",\
                 "0.6904, 0.7182, 0.8044, 0.9388, 1.109, 1.314, 1.555, 1.834, 2.16, 2.54",\
                 "0.905, 0.9382, 1.041, 1.198, 1.393, 1.625, 1.89, 2.19, 2.536, 2.927",\
                 "1.152, 1.191, 1.313, 1.497, 1.717, 1.977, 2.272, 2.603, 2.968, 3.379",\
                 "1.431, 1.479, 1.621, 1.832, 2.088, 2.379, 2.7, 3.063, 3.458, 3.893");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.356, 0.4029, 0.5694, 0.887, 1.383, 2.073, 2.983, 4.133, 5.535, 7.195",\
                 "0.3562, 0.4031, 0.5701, 0.8874, 1.38, 2.073, 2.981, 4.128, 5.526, 7.194",\
                 "0.3639, 0.4083, 0.5718, 0.8871, 1.38, 2.073, 2.981, 4.129, 5.526, 7.191",\
                 "0.4176, 0.4582, 0.6028, 0.8963, 1.383, 2.074, 2.985, 4.134, 5.528, 7.199",\
                 "0.517, 0.552, 0.685, 0.9552, 1.406, 2.077, 2.983, 4.127, 5.528, 7.195",\
                 "0.6688, 0.7044, 0.8266, 1.07, 1.487, 2.119, 2.993, 4.129, 5.527, 7.203",\
                 "0.8472, 0.888, 1.019, 1.259, 1.641, 2.227, 3.057, 4.151, 5.538, 7.195",\
                 "1.053, 1.096, 1.242, 1.498, 1.874, 2.417, 3.191, 4.232, 5.569, 7.202",\
                 "1.283, 1.329, 1.489, 1.773, 2.167, 2.693, 3.419, 4.397, 5.672, 7.263",\
                 "1.543, 1.591, 1.767, 2.07, 2.5, 3.045, 3.737, 4.666, 5.868, 7.388");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.1082, 0.1188, 0.1544, 0.2182, 0.3129, 0.4419, 0.6088, 0.8175, 1.071, 1.373",\
                 "0.1168, 0.1272, 0.1624, 0.226, 0.3206, 0.4496, 0.6166, 0.8251, 1.079, 1.38",\
                 "0.1537, 0.1647, 0.1994, 0.2607, 0.3541, 0.4825, 0.6493, 0.8576, 1.111, 1.412",\
                 "0.1822, 0.1973, 0.2451, 0.3232, 0.426, 0.5536, 0.7185, 0.9258, 1.179, 1.479",\
                 "0.183, 0.2021, 0.2644, 0.3656, 0.4968, 0.6531, 0.8328, 1.039, 1.29, 1.589",\
                 "0.154, 0.1778, 0.2538, 0.3777, 0.5397, 0.7311, 0.9471, 1.187, 1.452, 1.75",\
                 "0.0954, 0.1223, 0.2103, 0.3585, 0.5518, 0.7795, 1.035, 1.316, 1.622, 1.954",\
                 "0.0076, 0.0377, 0.1367, 0.3052, 0.5281, 0.7929, 1.09, 1.415, 1.766, 2.142",\
                 "-0.1107, -0.0784, 0.0327, 0.2181, 0.47, 0.7706, 1.109, 1.479, 1.877, 2.302",\
                 "-0.2597, -0.2235, -0.104, 0.0996, 0.3749, 0.7109, 1.09, 1.505, 1.952, 2.427");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.2863, 0.3131, 0.4064, 0.582, 0.8537, 1.234, 1.735, 2.365, 3.134, 4.051",\
                 "0.2919, 0.3191, 0.4131, 0.5897, 0.863, 1.244, 1.745, 2.375, 3.145, 4.061",\
                 "0.3099, 0.3368, 0.4301, 0.6072, 0.8806, 1.262, 1.764, 2.395, 3.165, 4.082",\
                 "0.3548, 0.3814, 0.4735, 0.6445, 0.9121, 1.29, 1.789, 2.418, 3.185, 4.104",\
                 "0.4412, 0.47, 0.5653, 0.734, 0.9933, 1.358, 1.846, 2.466, 3.227, 4.137",\
                 "0.5568, 0.5904, 0.6985, 0.8806, 1.139, 1.494, 1.964, 2.568, 3.316, 4.214",\
                 "0.6992, 0.7382, 0.8603, 1.065, 1.342, 1.698, 2.159, 2.744, 3.471, 4.353",\
                 "0.8672, 0.9097, 1.049, 1.277, 1.583, 1.962, 2.425, 3.001, 3.709, 4.568",\
                 "1.059, 1.107, 1.262, 1.516, 1.853, 2.266, 2.754, 3.331, 4.03, 4.869",\
                 "1.276, 1.329, 1.5, 1.78, 2.15, 2.599, 3.124, 3.727, 4.428, 5.258");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.1621, 0.1787, 0.2355, 0.3373, 0.4939, 0.71, 0.9937, 1.351, 1.786, 2.305",\
                 "0.1588, 0.1767, 0.2332, 0.3372, 0.4929, 0.7101, 0.9939, 1.351, 1.786, 2.306",\
                 "0.1866, 0.1981, 0.2414, 0.3349, 0.4911, 0.7094, 0.9941, 1.351, 1.787, 2.305",\
                 "0.2893, 0.3031, 0.3479, 0.4244, 0.537, 0.7213, 0.994, 1.35, 1.786, 2.305",\
                 "0.4281, 0.4458, 0.5002, 0.5878, 0.7071, 0.8636, 1.075, 1.379, 1.789, 2.305",\
                 "0.6084, 0.6296, 0.6964, 0.7974, 0.931, 1.098, 1.308, 1.563, 1.901, 2.35",\
                 "0.8324, 0.8588, 0.9362, 1.058, 1.208, 1.392, 1.612, 1.878, 2.192, 2.573",\
                 "1.102, 1.133, 1.227, 1.367, 1.537, 1.741, 1.977, 2.255, 2.582, 2.963",\
                 "1.42, 1.456, 1.567, 1.731, 1.926, 2.15, 2.408, 2.701, 3.039, 3.428",\
                 "1.787, 1.83, 1.961, 2.151, 2.374, 2.625, 2.901, 3.215, 3.573, 3.971");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.001812, 0.004662, 0.0101, 0.01858, 0.03048, 0.04613, 0.06585, 0.08993, 0.1186");
          values("0.3563, 0.4034, 0.5701, 0.8874, 1.38, 2.075, 2.984, 4.128, 5.523, 7.199",\
                 "0.3568, 0.4035, 0.5691, 0.8871, 1.382, 2.075, 2.986, 4.126, 5.523, 7.193",\
                 "0.3608, 0.4064, 0.5709, 0.8882, 1.38, 2.076, 2.983, 4.129, 5.536, 7.193",\
                 "0.4015, 0.4432, 0.592, 0.8927, 1.382, 2.075, 2.983, 4.13, 5.529, 7.193",\
                 "0.5222, 0.5552, 0.6782, 0.9454, 1.402, 2.079, 2.987, 4.131, 5.527, 7.196",\
                 "0.7134, 0.7466, 0.8606, 1.087, 1.488, 2.116, 3, 4.127, 5.529, 7.194",\
                 "0.9406, 0.9788, 1.1, 1.322, 1.678, 2.238, 3.056, 4.162, 5.536, 7.195",\
                 "1.205, 1.238, 1.373, 1.615, 1.97, 2.476, 3.214, 4.24, 5.585, 7.219",\
                 "1.508, 1.548, 1.684, 1.948, 2.323, 2.818, 3.493, 4.436, 5.686, 7.282",\
                 "1.862, 1.899, 2.037, 2.316, 2.726, 3.246, 3.896, 4.763, 5.92, 7.407");
        }
      }
    }
  }

