/*
 * 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.0002399382" ;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.008931, 0.008931, 0.008914, 0.008885, 0.008828, 0.008739, 0.00859, \
                  0.008275, 0.006937, 0.00431");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.002923, -0.002921, -0.002922, -0.002933, -0.002933, -0.002931, \
                  -0.002932, -0.00293, -0.002792, -0.002223");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.005303, 0.005297, 0.005283, 0.005277, 0.005253, 0.005221, 0.005158, \
                  0.005032, 0.004436, 0.003114");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.002938, -0.002935, -0.002937, -0.002947, -0.002946, -0.002945, \
                  -0.002945, -0.002946, -0.002806, -0.002235");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.005303, 0.005297, 0.005284, 0.005276, 0.005257, 0.00522, 0.005159, \
                  0.005032, 0.004436, 0.003114");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.002938, -0.002935, -0.002938, -0.002947, -0.002947, -0.002946, \
                  -0.002949, -0.002946, -0.002807, -0.002233");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.003916, 0.00391, 0.003905, 0.003909, 0.003883, 0.003842, 0.003781, \
                  0.003702, 0.003509, 0.002813");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.00377, -0.003774, -0.003768, -0.003788, -0.003789, -0.003794, \
                  -0.003799, -0.003809, -0.003645, -0.002937");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006802, 0.006792, 0.0068, 0.006806, 0.006798, 0.006801, 0.0068, \
                  0.006798, 0.006385, 0.004779");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006195, -0.006218, -0.006335, -0.006457, -0.006522, -0.006561, \
                  -0.006585, -0.006601, -0.00642, -0.005608");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.004684, 0.004681, 0.004685, 0.004696, 0.004697, 0.0047, 0.004701, \
                  0.0047, 0.004466, 0.003473");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.005567, -0.005562, -0.005559, -0.005578, -0.00558, -0.005571, \
                  -0.005564, -0.005557, -0.005353, -0.004495");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006794, 0.00679, 0.006794, 0.006799, 0.006793, 0.006798, 0.006794, \
                  0.006796, 0.006407, 0.0048");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006207, -0.006256, -0.006383, -0.006493, -0.006536, -0.006575, \
                  -0.006597, -0.006607, -0.006424, -0.005615");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006811, 0.006808, 0.006806, 0.006819, 0.006811, 0.006812, 0.006811, \
                  0.006806, 0.006414, 0.004802");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.005776, -0.00586, -0.00599, -0.006152, -0.006265, -0.006338, \
                  -0.006389, -0.006426, -0.006265, -0.005496");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006788, 0.00679, 0.00678, 0.006797, 0.006795, 0.006789, 0.006791, \
                  0.006792, 0.006406, 0.004794");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.006209, -0.006258, -0.006387, -0.006492, -0.006533, -0.006577, \
                  -0.006595, -0.006606, -0.006425, -0.005615");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.1099 ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("-0.000223, -0.000215, -0.0002153, -0.0002114, -0.0002087, -0.0002104, -0.0002079, -0.0002101, -0.0002071, -0.000209",\
                 "-0.000244, -0.0002321, -0.0001858, -0.0001423, -9.992e-05, -6.938e-05, -5.341e-05, -4.584e-05, -3.153e-05, -2.501e-05",\
                 "-0.0004555, -0.0004144, -0.000293, -0.0001438, -2.199e-05, 7.139e-05, 0.0001375, 0.000184, 0.000213, 0.0002399",\
                 "-0.0008237, -0.0007744, -0.0006108, -0.0003868, -0.0001681, 3.971e-06, 0.0001331, 0.0002299, 0.0002994, 0.0003473",\
                 "-0.001155, -0.001104, -0.0009533, -0.0007156, -0.0004485, -0.0002071, -2.051e-05, 0.0001263, 0.0002328, 0.0003142",\
                 "-0.00136, -0.001321, -0.0012, -0.0009939, -0.0007385, -0.000477, -0.0002466, -5.652e-05, 9.125e-05, 0.000204",\
                 "-0.001407, -0.001384, -0.001304, -0.001159, -0.0009469, -0.0007095, -0.0004696, -0.0002595, -8.074e-05, 6.106e-05",\
                 "-0.001302, -0.001292, -0.001262, -0.001179, -0.001043, -0.0008522, -0.0006357, -0.0004302, -0.0002465, -9.111e-05",\
                 "-0.0008812, -0.000896, -0.0009025, -0.0008885, -0.0008222, -0.0007106, -0.0005515, -0.0003831, -0.0002593, -0.0002953",\
                 "0.0001459, 0.0001302, 8.276e-05, 3.393e-05, 4.992e-06, 1.742e-05, -0.0001141, -0.0005706, -0.0009928, -0.001294");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.01806, 0.01806, 0.01808, 0.0181, 0.01813, 0.01817, 0.0184, 0.02075, 0.03251, 0.05969",\
                 "0.01777, 0.0178, 0.01786, 0.01794, 0.01801, 0.0181, 0.01836, 0.02081, 0.03289, 0.06024",\
                 "0.01725, 0.01729, 0.0174, 0.01754, 0.0177, 0.01785, 0.01822, 0.02106, 0.03415, 0.06211",\
                 "0.01695, 0.01697, 0.01705, 0.0172, 0.01735, 0.01753, 0.01806, 0.02181, 0.03692, 0.06562",\
                 "0.01685, 0.01686, 0.01691, 0.01701, 0.01712, 0.01731, 0.01811, 0.02357, 0.04188, 0.07057",\
                 "0.01686, 0.01687, 0.01691, 0.01696, 0.01703, 0.01723, 0.01878, 0.02771, 0.04942, 0.07552",\
                 "0.01697, 0.01698, 0.01698, 0.01701, 0.01705, 0.01747, 0.02146, 0.03573, 0.05754, 0.07688",\
                 "0.0172, 0.01718, 0.01715, 0.01711, 0.01726, 0.0194, 0.02896, 0.04461, 0.05853, 0.06908",\
                 "0.01695, 0.01694, 0.01683, 0.01662, 0.01816, 0.02441, 0.03158, 0.0373, 0.04167, 0.04494",\
                 "0.01166, 0.01104, 0.009992, 0.01008, 0.01112, 0.01238, 0.01347, 0.01434, 0.01499, 0.01548");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.004029, 0.004026, 0.004029, 0.004032, 0.004034, 0.004036, 0.004035, 0.004033, 0.004031, 0.004027",\
                 "0.004008, 0.004014, 0.004005, 0.004004, 0.004011, 0.004006, 0.004006, 0.00401, 0.004006, 0.004003",\
                 "0.00384, 0.003851, 0.003878, 0.003911, 0.003929, 0.003955, 0.003959, 0.003974, 0.003979, 0.003985",\
                 "0.003505, 0.003529, 0.003582, 0.00366, 0.003733, 0.003792, 0.003848, 0.003875, 0.003898, 0.003915",\
                 "0.003151, 0.003172, 0.003239, 0.003348, 0.003458, 0.003575, 0.00366, 0.003728, 0.003779, 0.003817",\
                 "0.002872, 0.002892, 0.002959, 0.003076, 0.003204, 0.003334, 0.003455, 0.003547, 0.003618, 0.003668",\
                 "0.002729, 0.00275, 0.002786, 0.002874, 0.002996, 0.003128, 0.003249, 0.003355, 0.003455, 0.003522",\
                 "0.002701, 0.002711, 0.00273, 0.002781, 0.002852, 0.002955, 0.003073, 0.003173, 0.003265, 0.003331",\
                 "0.002931, 0.002934, 0.002918, 0.00293, 0.002955, 0.003008, 0.003073, 0.003144, 0.003148, 0.002997",\
                 "0.003845, 0.003831, 0.003789, 0.003739, 0.003699, 0.00364, 0.003332, 0.002721, 0.002166, 0.001664");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.02035, 0.02036, 0.02037, 0.0204, 0.02041, 0.02046, 0.02072, 0.02336, 0.03601, 0.06371",\
                 "0.02017, 0.02019, 0.02023, 0.02028, 0.02034, 0.0204, 0.02069, 0.02344, 0.03639, 0.06425",\
                 "0.01984, 0.01986, 0.01993, 0.02003, 0.02014, 0.02024, 0.02062, 0.02383, 0.03785, 0.06618",\
                 "0.01962, 0.01964, 0.01969, 0.01979, 0.01991, 0.02004, 0.0206, 0.02473, 0.04086, 0.06966",\
                 "0.0195, 0.01952, 0.01955, 0.01963, 0.01972, 0.01988, 0.02074, 0.02677, 0.04582, 0.07418",\
                 "0.01943, 0.01945, 0.01948, 0.01954, 0.01962, 0.0198, 0.02154, 0.03098, 0.05297, 0.07846",\
                 "0.01938, 0.01938, 0.01942, 0.01949, 0.01956, 0.02003, 0.02421, 0.03875, 0.06033, 0.07927",\
                 "0.01938, 0.01938, 0.01938, 0.01941, 0.01962, 0.02175, 0.03128, 0.04704, 0.06107, 0.07171",\
                 "0.01888, 0.01887, 0.01879, 0.01872, 0.02016, 0.02628, 0.03424, 0.04062, 0.04545, 0.04907",\
                 "0.01183, 0.01134, 0.01036, 0.01042, 0.0115, 0.01277, 0.01387, 0.01471, 0.01534, 0.01581");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.007763, 0.007762, 0.007755, 0.00775, 0.007746, 0.007748, 0.007743, 0.007735, 0.007731, 0.00773",\
                 "0.007513, 0.007511, 0.007508, 0.007506, 0.007498, 0.007493, 0.007484, 0.007474, 0.007496, 0.007494",\
                 "0.007162, 0.007169, 0.007173, 0.007179, 0.007175, 0.00717, 0.007164, 0.007157, 0.007148, 0.007151",\
                 "0.00682, 0.006834, 0.00684, 0.006853, 0.006873, 0.006885, 0.006896, 0.00689, 0.006883, 0.006872",\
                 "0.00654, 0.006533, 0.00656, 0.006592, 0.006627, 0.006657, 0.006676, 0.006702, 0.006708, 0.006714",\
                 "0.006313, 0.006319, 0.006348, 0.006371, 0.006417, 0.006461, 0.006485, 0.006515, 0.006536, 0.006545",\
                 "0.006166, 0.006166, 0.00618, 0.006204, 0.006244, 0.006275, 0.00631, 0.006341, 0.006354, 0.006364",\
                 "0.006091, 0.006085, 0.006086, 0.006074, 0.00609, 0.006114, 0.006123, 0.00614, 0.006146, 0.006139",\
                 "0.006226, 0.006215, 0.006184, 0.006174, 0.006129, 0.006095, 0.006071, 0.006032, 0.005922, 0.005638",\
                 "0.006957, 0.00694, 0.006897, 0.006819, 0.00671, 0.006548, 0.006039, 0.005262, 0.004526, 0.003794");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.02423, 0.02423, 0.02424, 0.02426, 0.02428, 0.02432, 0.02459, 0.02735, 0.04029, 0.06813",\
                 "0.02405, 0.02406, 0.0241, 0.02416, 0.02422, 0.02428, 0.02459, 0.02745, 0.04071, 0.06873",\
                 "0.02369, 0.02371, 0.02378, 0.02388, 0.024, 0.0241, 0.02451, 0.02786, 0.04228, 0.07073",\
                 "0.02348, 0.02349, 0.02356, 0.02366, 0.02378, 0.02392, 0.0245, 0.02883, 0.04533, 0.07416",\
                 "0.02336, 0.02338, 0.02343, 0.02349, 0.02359, 0.02375, 0.02467, 0.03094, 0.05031, 0.07854",\
                 "0.0233, 0.02331, 0.02334, 0.0234, 0.02348, 0.02369, 0.02548, 0.03519, 0.05726, 0.0825",\
                 "0.02323, 0.02324, 0.02328, 0.02336, 0.02342, 0.0239, 0.02813, 0.04268, 0.06422, 0.08313",\
                 "0.0232, 0.0232, 0.02322, 0.02325, 0.02344, 0.02548, 0.03481, 0.05073, 0.06511, 0.07603",\
                 "0.02273, 0.02271, 0.02265, 0.02256, 0.02385, 0.02987, 0.03854, 0.04567, 0.05107, 0.05511",\
                 "0.01591, 0.01547, 0.01445, 0.01449, 0.01577, 0.01732, 0.01865, 0.01968, 0.02045, 0.02103");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.3068, 0.3247, 0.3875, 0.5072, 0.6939, 0.9556, 1.3, 1.734, 2.263, 2.894",\
                 "0.3753, 0.3934, 0.4571, 0.5777, 0.7649, 1.027, 1.372, 1.806, 2.335, 2.967",\
                 "0.6112, 0.6309, 0.6972, 0.8198, 1.008, 1.272, 1.617, 2.051, 2.582, 3.214",\
                 "0.9228, 0.9555, 1.061, 1.234, 1.46, 1.733, 2.079, 2.514, 3.046, 3.676",\
                 "1.221, 1.268, 1.421, 1.671, 1.994, 2.369, 2.781, 3.233, 3.764, 4.397",\
                 "1.491, 1.554, 1.759, 2.094, 2.526, 3.023, 3.567, 4.147, 4.754, 5.404",\
                 "1.722, 1.804, 2.065, 2.492, 3.039, 3.67, 4.357, 5.087, 5.85, 6.64",\
                 "1.906, 2.006, 2.326, 2.852, 3.525, 4.299, 5.139, 6.03, 6.958, 7.917",\
                 "2.033, 2.152, 2.541, 3.168, 3.974, 4.9, 5.902, 6.963, 8.068, 9.206",\
                 "2.089, 2.231, 2.691, 3.431, 4.373, 5.46, 6.637, 7.875, 9.161, 10.49");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("1.412, 1.508, 1.846, 2.49, 3.492, 4.898, 6.745, 9.078, 11.91, 15.3",\
                 "1.445, 1.543, 1.885, 2.535, 3.542, 4.949, 6.8, 9.13, 11.98, 15.36",\
                 "1.63, 1.729, 2.075, 2.73, 3.744, 5.163, 7.021, 9.35, 12.2, 15.59",\
                 "2.068, 2.165, 2.507, 3.161, 4.176, 5.593, 7.454, 9.794, 12.64, 16.04",\
                 "2.795, 2.893, 3.228, 3.872, 4.881, 6.299, 8.16, 10.5, 13.35, 16.75",\
                 "3.676, 3.799, 4.204, 4.891, 5.897, 7.308, 9.165, 11.51, 14.36, 17.75",\
                 "4.639, 4.79, 5.282, 6.111, 7.232, 8.652, 10.5, 12.84, 15.69, 19.08",\
                 "5.683, 5.862, 6.447, 7.428, 8.743, 10.32, 12.2, 14.53, 17.37, 20.77",\
                 "6.806, 7.02, 7.7, 8.837, 10.36, 12.18, 14.24, 16.61, 19.45, 22.84",\
                 "8.017, 8.256, 9.035, 10.34, 12.07, 14.14, 16.48, 19.04, 21.93, 25.31");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.403, 0.4345, 0.5425, 0.7474, 1.069, 1.52, 2.11, 2.86, 3.768, 4.862",\
                 "0.4043, 0.4348, 0.5418, 0.7491, 1.068, 1.519, 2.114, 2.86, 3.772, 4.858",\
                 "0.4489, 0.4721, 0.5618, 0.7518, 1.071, 1.519, 2.114, 2.862, 3.77, 4.86",\
                 "0.7234, 0.7502, 0.8386, 0.989, 1.204, 1.565, 2.118, 2.857, 3.773, 4.86",\
                 "1.066, 1.097, 1.216, 1.417, 1.681, 1.997, 2.389, 2.969, 3.797, 4.861",\
                 "1.45, 1.498, 1.65, 1.905, 2.242, 2.642, 3.088, 3.575, 4.195, 5.052",\
                 "1.891, 1.951, 2.138, 2.454, 2.864, 3.351, 3.904, 4.488, 5.122, 5.81",\
                 "2.38, 2.453, 2.681, 3.058, 3.55, 4.134, 4.776, 5.484, 6.222, 7.008",\
                 "2.918, 3.006, 3.268, 3.714, 4.292, 4.97, 5.724, 6.536, 7.406, 8.322",\
                 "3.494, 3.596, 3.91, 4.43, 5.094, 5.872, 6.736, 7.672, 8.658, 9.702");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("2.119, 2.273, 2.829, 3.886, 5.534, 7.84, 10.87, 14.69, 19.35, 24.89",\
                 "2.116, 2.275, 2.832, 3.885, 5.537, 7.836, 10.87, 14.69, 19.35, 24.89",\
                 "2.11, 2.271, 2.832, 3.885, 5.531, 7.836, 10.87, 14.69, 19.34, 24.89",\
                 "2.075, 2.241, 2.817, 3.891, 5.532, 7.835, 10.87, 14.68, 19.34, 24.89",\
                 "2.229, 2.359, 2.838, 3.869, 5.536, 7.838, 10.88, 14.68, 19.34, 24.89",\
                 "2.749, 2.868, 3.269, 4.085, 5.553, 7.841, 10.86, 14.69, 19.34, 24.88",\
                 "3.368, 3.503, 3.96, 4.752, 5.966, 7.938, 10.89, 14.69, 19.35, 24.9",\
                 "4.042, 4.202, 4.718, 5.6, 6.84, 8.528, 11.08, 14.71, 19.36, 24.9",\
                 "4.752, 4.942, 5.524, 6.52, 7.89, 9.602, 11.82, 15.01, 19.4, 24.89",\
                 "5.488, 5.698, 6.37, 7.5, 9.018, 10.87, 13.07, 15.89, 19.8, 25");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.3882, 0.4078, 0.4753, 0.6017, 0.7946, 1.062, 1.41, 1.847, 2.379, 3.012",\
                 "0.4572, 0.4767, 0.5441, 0.6704, 0.8633, 1.13, 1.479, 1.916, 2.448, 3.08",\
                 "0.6999, 0.7191, 0.7857, 0.9114, 1.104, 1.371, 1.72, 2.157, 2.689, 3.322",\
                 "1.08, 1.108, 1.2, 1.355, 1.563, 1.832, 2.181, 2.618, 3.149, 3.783",\
                 "1.462, 1.502, 1.632, 1.853, 2.148, 2.498, 2.891, 3.337, 3.869, 4.503",\
                 "1.828, 1.88, 2.054, 2.348, 2.738, 3.2, 3.718, 4.276, 4.866, 5.513",\
                 "2.165, 2.233, 2.453, 2.824, 3.318, 3.902, 4.554, 5.254, 5.995, 6.766",\
                 "2.462, 2.544, 2.814, 3.271, 3.874, 4.59, 5.384, 6.238, 7.138, 8.075",\
                 "2.713, 2.81, 3.132, 3.677, 4.402, 5.256, 6.202, 7.217, 8.285, 9.395",\
                 "2.903, 3.019, 3.397, 4.035, 4.883, 5.887, 6.992, 8.178, 9.424, 10.72");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("1.93, 2.027, 2.364, 3.008, 4.009, 5.416, 7.265, 9.596, 12.43, 15.82",\
                 "1.977, 2.074, 2.414, 3.061, 4.065, 5.472, 7.322, 9.651, 12.49, 15.88",\
                 "2.195, 2.293, 2.636, 3.287, 4.296, 5.711, 7.561, 9.893, 12.74, 16.13",\
                 "2.633, 2.731, 3.072, 3.722, 4.735, 6.147, 8.003, 10.34, 13.19, 16.58",\
                 "3.273, 3.373, 3.717, 4.367, 5.375, 6.789, 8.645, 10.99, 13.83, 17.22",\
                 "4.062, 4.175, 4.557, 5.242, 6.258, 7.671, 9.529, 11.87, 14.71, 18.11",\
                 "4.97, 5.099, 5.527, 6.292, 7.391, 8.827, 10.68, 13.02, 15.87, 19.26",\
                 "5.991, 6.136, 6.622, 7.478, 8.686, 10.24, 12.14, 14.48, 17.33, 20.72",\
                 "7.103, 7.271, 7.83, 8.792, 10.13, 11.82, 13.86, 16.25, 19.11, 22.51",\
                 "8.287, 8.484, 9.129, 10.22, 11.71, 13.56, 15.76, 18.31, 21.22, 24.63");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.4887, 0.5191, 0.626, 0.8319, 1.147, 1.594, 2.183, 2.926, 3.835, 4.919",\
                 "0.487, 0.5173, 0.6237, 0.8305, 1.146, 1.592, 2.183, 2.927, 3.836, 4.918",\
                 "0.4866, 0.515, 0.6204, 0.8254, 1.145, 1.594, 2.183, 2.925, 3.834, 4.919",\
                 "0.7098, 0.7374, 0.8266, 0.9752, 1.219, 1.612, 2.182, 2.926, 3.836, 4.918",\
                 "1.013, 1.052, 1.176, 1.382, 1.649, 1.969, 2.39, 3.002, 3.85, 4.917",\
                 "1.362, 1.409, 1.57, 1.839, 2.185, 2.592, 3.049, 3.546, 4.193, 5.074",\
                 "1.749, 1.815, 2.011, 2.345, 2.772, 3.277, 3.837, 4.438, 5.078, 5.786",\
                 "2.17, 2.248, 2.496, 2.896, 3.418, 4.024, 4.692, 5.406, 6.166, 6.958",\
                 "2.636, 2.72, 3.018, 3.504, 4.116, 4.824, 5.61, 6.446, 7.326, 8.246",\
                 "3.138, 3.248, 3.586, 4.146, 4.878, 5.698, 6.59, 7.548, 8.566, 9.618");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("2.122, 2.279, 2.829, 3.889, 5.534, 7.839, 10.87, 14.68, 19.34, 24.89",\
                 "2.121, 2.276, 2.83, 3.891, 5.536, 7.843, 10.86, 14.68, 19.34, 24.9",\
                 "2.118, 2.279, 2.832, 3.89, 5.535, 7.837, 10.87, 14.69, 19.34, 24.9",\
                 "2.122, 2.278, 2.83, 3.886, 5.53, 7.833, 10.87, 14.68, 19.34, 24.9",\
                 "2.207, 2.354, 2.866, 3.898, 5.534, 7.838, 10.86, 14.69, 19.36, 24.88",\
                 "2.49, 2.634, 3.12, 4.049, 5.572, 7.843, 10.87, 14.69, 19.34, 24.89",\
                 "2.828, 2.978, 3.508, 4.452, 5.868, 7.962, 10.89, 14.69, 19.33, 24.9",\
                 "3.264, 3.42, 3.954, 4.95, 6.408, 8.372, 11.09, 14.72, 19.35, 24.9",\
                 "3.788, 3.958, 4.526, 5.55, 7.048, 9.062, 11.62, 15.01, 19.43, 24.9",\
                 "4.41, 4.59, 5.188, 6.258, 7.8, 9.856, 12.46, 15.66, 19.8, 25.03");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.4035, 0.4252, 0.4999, 0.6371, 0.8428, 1.122, 1.481, 1.928, 2.467, 3.105",\
                 "0.4717, 0.4932, 0.5671, 0.7037, 0.9089, 1.188, 1.547, 1.993, 2.532, 3.17",\
                 "0.7209, 0.7411, 0.8117, 0.9447, 1.147, 1.425, 1.783, 2.229, 2.768, 3.407",\
                 "1.137, 1.164, 1.254, 1.407, 1.613, 1.887, 2.243, 2.687, 3.226, 3.865",\
                 "1.574, 1.612, 1.736, 1.949, 2.234, 2.576, 2.962, 3.409, 3.945, 4.583",\
                 "2.005, 2.054, 2.218, 2.496, 2.87, 3.317, 3.821, 4.367, 4.949, 5.595",\
                 "2.417, 2.479, 2.683, 3.033, 3.502, 4.063, 4.695, 5.378, 6.105, 6.866",\
                 "2.796, 2.872, 3.122, 3.546, 4.117, 4.8, 5.565, 6.398, 7.279, 8.2",\
                 "3.134, 3.223, 3.52, 4.025, 4.707, 5.517, 6.429, 7.414, 8.459, 9.55",\
                 "3.422, 3.526, 3.87, 4.459, 5.254, 6.206, 7.267, 8.418, 9.634, 10.9");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("2.097, 2.193, 2.531, 3.174, 4.175, 5.58, 7.43, 9.757, 12.6, 15.99",\
                 "2.162, 2.259, 2.6, 3.246, 4.252, 5.659, 7.507, 9.837, 12.68, 16.07",\
                 "2.41, 2.508, 2.851, 3.502, 4.511, 5.923, 7.776, 10.11, 12.95, 16.34",\
                 "2.856, 2.954, 3.296, 3.946, 4.958, 6.372, 8.227, 10.56, 13.41, 16.8",\
                 "3.486, 3.583, 3.925, 4.574, 5.583, 6.996, 8.855, 11.19, 14.04, 17.43",\
                 "4.253, 4.359, 4.725, 5.392, 6.404, 7.816, 9.672, 12.01, 14.86, 18.25",\
                 "5.113, 5.23, 5.629, 6.356, 7.426, 8.854, 10.71, 13.04, 15.89, 19.29",\
                 "6.066, 6.194, 6.63, 7.42, 8.575, 10.09, 11.98, 14.32, 17.17, 20.57",\
                 "7.112, 7.253, 7.731, 8.591, 9.835, 11.46, 13.47, 15.86, 18.71, 22.11",\
                 "8.249, 8.403, 8.929, 9.868, 11.21, 12.95, 15.08, 17.61, 20.53, 23.93");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("0.5708, 0.6045, 0.7183, 0.9287, 1.252, 1.699, 2.286, 3.021, 3.926, 5.007",\
                 "0.5637, 0.5965, 0.7114, 0.9249, 1.246, 1.696, 2.285, 3.025, 3.928, 5.003",\
                 "0.5438, 0.5758, 0.688, 0.906, 1.238, 1.689, 2.281, 3.022, 3.927, 5.005",\
                 "0.7578, 0.7846, 0.8696, 1.022, 1.276, 1.688, 2.271, 3.017, 3.923, 5.006",\
                 "1.062, 1.102, 1.22, 1.421, 1.685, 2.001, 2.439, 3.068, 3.928, 5.001",\
                 "1.405, 1.449, 1.607, 1.867, 2.209, 2.612, 3.065, 3.567, 4.227, 5.128",\
                 "1.774, 1.835, 2.033, 2.354, 2.786, 3.283, 3.838, 4.437, 5.082, 5.802",\
                 "2.18, 2.25, 2.496, 2.892, 3.402, 4.016, 4.678, 5.392, 6.158, 6.944",\
                 "2.61, 2.702, 2.994, 3.472, 4.09, 4.796, 5.574, 6.416, 7.298, 8.226",\
                 "3.082, 3.19, 3.522, 4.084, 4.8, 5.638, 6.538, 7.496, 8.516, 9.58");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.001752, 0.004391, 0.009431, 0.01728, 0.0283, 0.0428, 0.06106, 0.08335, 0.1099");
          values("2.122, 2.278, 2.829, 3.891, 5.536, 7.839, 10.87, 14.68, 19.34, 24.89",\
                 "2.123, 2.28, 2.831, 3.891, 5.531, 7.839, 10.88, 14.68, 19.35, 24.9",\
                 "2.124, 2.276, 2.83, 3.888, 5.531, 7.843, 10.87, 14.68, 19.34, 24.89",\
                 "2.12, 2.279, 2.831, 3.891, 5.532, 7.839, 10.87, 14.68, 19.35, 24.89",\
                 "2.158, 2.309, 2.845, 3.892, 5.533, 7.837, 10.87, 14.69, 19.35, 24.88",\
                 "2.354, 2.5, 3.008, 3.981, 5.556, 7.835, 10.88, 14.68, 19.34, 24.89",\
                 "2.588, 2.746, 3.29, 4.282, 5.766, 7.918, 10.89, 14.68, 19.33, 24.9",\
                 "2.852, 3.022, 3.594, 4.644, 6.194, 8.256, 11.05, 14.72, 19.34, 24.9",\
                 "3.156, 3.334, 3.942, 5.046, 6.658, 8.804, 11.5, 14.98, 19.43, 24.92",\
                 "3.51, 3.7, 4.332, 5.492, 7.172, 9.402, 12.18, 15.56, 19.79, 25.05");
        }
      }
    }
  }

