/*
 * 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__and3_4) {
    area : 43.904000 ;

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

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

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

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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "4.37346e-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.008136 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 12 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.009747, 0.009743, 0.009687, 0.009698, 0.00971, 0.009709, 0.009707, \
                 0.009713, 0.009706, 0.009705");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.006793, -0.006795, -0.006783, -0.006797, -0.006831, -0.006838, \
                 -0.006847, -0.006872, -0.006907, -0.006954");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.009739, 0.009737, 0.009692, 0.009696, 0.009708, 0.009716, 0.009709, \
                 0.009707, 0.009703, 0.009703");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.006792, -0.006801, -0.006791, -0.006797, -0.006833, -0.006837, \
                 -0.006857, -0.006869, -0.006904, -0.006956");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.009746, 0.009737, 0.009691, 0.00971, 0.009714, 0.009711, 0.009711, \
                 0.009709, 0.009708, 0.009705");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.0001231, 0.0001217, 0.0001235, 9.08e-05, 3.471e-05, 7.947e-06, \
                 -1.583e-05, -5.855e-05, -0.000122, -0.0002211");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.01027, 0.01028, 0.0103, 0.01033, 0.01037, 0.01039, 0.0104, 0.0104, \
                 0.01038, 0.01033");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.008517, -0.008517, -0.008485, -0.008495, -0.008509, -0.008495, \
                 -0.008504, -0.008509, -0.00851, -0.008508");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.009472, 0.008788, 0.008525, 0.008505, 0.008526, 0.008529, 0.008523, \
                 0.008524, 0.008525, 0.008522");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.008497, -0.008506, -0.008486, -0.008488, -0.00851, -0.008506, \
                 -0.008509, -0.00851, -0.00851, -0.00851");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.009127, 0.009136, 0.009097, 0.009093, 0.009099, 0.00908, 0.00907, \
                 0.009056, 0.00903, 0.008991");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.00846, -0.008477, -0.008461, -0.008466, -0.008504, -0.008508, \
                 -0.008525, -0.008554, -0.008588, -0.008647");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.008558, 0.008547, 0.008512, 0.008515, 0.008533, 0.008526, 0.008523, \
                 0.008526, 0.008522, 0.008527");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.008514, -0.008516, -0.008494, -0.008483, -0.008503, -0.008493, \
                 -0.008501, -0.008499, -0.008505, -0.008502");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.008547, 0.00855, 0.008524, 0.008514, 0.008531, 0.008527, 0.008527, \
                 0.008529, 0.008523, 0.008526");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.008507, -0.008513, -0.008493, -0.008499, -0.008513, -0.008508, \
                 -0.008506, -0.008512, -0.008504, -0.008505");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.008586, 0.008544, 0.008516, 0.008516, 0.008529, 0.008527, 0.008531, \
                 0.008528, 0.008528, 0.008526");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.008515, -0.008514, -0.008487, -0.008488, -0.008515, -0.008508, \
                 -0.008499, -0.008502, -0.008502, -0.008504");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.8279 ;
      max_transition : 12 ;
      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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.06884, 0.06934, 0.0705, 0.07139, 0.07191, 0.07223, 0.07239, 0.07251, 0.07257, 0.07261",\
                 "0.06887, 0.06934, 0.07053, 0.07145, 0.07199, 0.0723, 0.07245, 0.07256, 0.07263, 0.07264",\
                 "0.06812, 0.06859, 0.06975, 0.0707, 0.07126, 0.07157, 0.07175, 0.07186, 0.07194, 0.07197",\
                 "0.06712, 0.06753, 0.06853, 0.06952, 0.0702, 0.07057, 0.0708, 0.07093, 0.07101, 0.07107",\
                 "0.06656, 0.06682, 0.06759, 0.06856, 0.06931, 0.0698, 0.07009, 0.07029, 0.07041, 0.07049",\
                 "0.0665, 0.06672, 0.06724, 0.06811, 0.06887, 0.0694, 0.06977, 0.07002, 0.07017, 0.0703",\
                 "0.06691, 0.06699, 0.06747, 0.06813, 0.06888, 0.06946, 0.06988, 0.07015, 0.07034, 0.07048",\
                 "0.0677, 0.06772, 0.068, 0.06859, 0.0692, 0.06981, 0.07026, 0.0706, 0.07081, 0.07097",\
                 "0.06892, 0.06879, 0.06891, 0.06932, 0.06993, 0.07051, 0.07097, 0.07131, 0.07155, 0.07175",\
                 "0.07054, 0.07029, 0.07013, 0.07049, 0.07105, 0.07159, 0.07204, 0.07237, 0.07261, 0.07281");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.04255, 0.04282, 0.04344, 0.04459, 0.04557, 0.04655, 0.04724, 0.04822, 0.04993, 0.06694",\
                 "0.04232, 0.04261, 0.04343, 0.04443, 0.04541, 0.04628, 0.04704, 0.04797, 0.05033, 0.06597",\
                 "0.04192, 0.0421, 0.04277, 0.04384, 0.04503, 0.04586, 0.04702, 0.04739, 0.04948, 0.06779",\
                 "0.0413, 0.04149, 0.04208, 0.04306, 0.04399, 0.04489, 0.04569, 0.04664, 0.04925, 0.07039",\
                 "0.04102, 0.04116, 0.04164, 0.04238, 0.04334, 0.04426, 0.04511, 0.04635, 0.04921, 0.07565",\
                 "0.041, 0.04103, 0.04141, 0.04207, 0.04292, 0.04386, 0.04473, 0.04576, 0.05007, 0.08408",\
                 "0.04145, 0.0415, 0.04166, 0.04202, 0.04309, 0.04392, 0.04477, 0.04598, 0.05209, 0.1001",\
                 "0.04215, 0.04207, 0.04222, 0.0424, 0.04305, 0.04431, 0.04536, 0.04593, 0.05706, 0.1254",\
                 "0.04325, 0.04314, 0.04321, 0.04337, 0.04393, 0.04435, 0.046, 0.04851, 0.06621, 0.1727",\
                 "0.04466, 0.04443, 0.04462, 0.0445, 0.04499, 0.0455, 0.04597, 0.05101, 0.08994, 0.2545");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.07631, 0.07675, 0.07784, 0.07878, 0.07938, 0.07973, 0.07993, 0.08006, 0.08014, 0.08018",\
                 "0.07612, 0.07657, 0.07766, 0.07862, 0.07921, 0.07956, 0.07976, 0.07988, 0.07996, 0.08001",\
                 "0.07547, 0.07591, 0.077, 0.07797, 0.07858, 0.07893, 0.07915, 0.07925, 0.07933, 0.0794",\
                 "0.07477, 0.07509, 0.07601, 0.077, 0.07768, 0.0781, 0.07836, 0.07851, 0.0786, 0.07866",\
                 "0.07423, 0.07449, 0.07523, 0.07617, 0.0769, 0.07742, 0.07772, 0.07794, 0.07807, 0.07818",\
                 "0.07418, 0.07433, 0.07489, 0.07572, 0.07644, 0.07703, 0.07742, 0.07768, 0.07783, 0.07794",\
                 "0.07455, 0.07465, 0.07509, 0.07574, 0.07648, 0.07706, 0.07746, 0.0778, 0.07797, 0.07812",\
                 "0.07537, 0.07536, 0.0756, 0.07618, 0.0768, 0.07737, 0.07781, 0.07813, 0.07836, 0.07853",\
                 "0.07649, 0.07644, 0.07648, 0.07691, 0.07746, 0.07806, 0.07846, 0.07882, 0.0791, 0.07933",\
                 "0.07803, 0.0778, 0.07774, 0.07801, 0.07852, 0.07903, 0.07948, 0.07979, 0.08008, 0.08028");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.04255, 0.04276, 0.04348, 0.04454, 0.04559, 0.04655, 0.04725, 0.04811, 0.05015, 0.06771",\
                 "0.04239, 0.04266, 0.04335, 0.04441, 0.04548, 0.04642, 0.04756, 0.04799, 0.05051, 0.06782",\
                 "0.04196, 0.0422, 0.04303, 0.04402, 0.04499, 0.04588, 0.04664, 0.04755, 0.04984, 0.06826",\
                 "0.04144, 0.04174, 0.04229, 0.04328, 0.04438, 0.0452, 0.04603, 0.04653, 0.0493, 0.07074",\
                 "0.04106, 0.0412, 0.04181, 0.04267, 0.04377, 0.04451, 0.04581, 0.04648, 0.04939, 0.07596",\
                 "0.04083, 0.04096, 0.04134, 0.04211, 0.04292, 0.0439, 0.04477, 0.04588, 0.04948, 0.08302",\
                 "0.04091, 0.04096, 0.04128, 0.04171, 0.04285, 0.04377, 0.04443, 0.04562, 0.05227, 0.09862",\
                 "0.04124, 0.0413, 0.04144, 0.04168, 0.04251, 0.0437, 0.04464, 0.04575, 0.05607, 0.1239",\
                 "0.04183, 0.04183, 0.04205, 0.04209, 0.04278, 0.04327, 0.04501, 0.04743, 0.06522, 0.1707",\
                 "0.04287, 0.0427, 0.04282, 0.04305, 0.04327, 0.04392, 0.04469, 0.04966, 0.08833, 0.2516");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.08268, 0.08308, 0.08412, 0.08509, 0.08572, 0.08608, 0.08631, 0.08646, 0.08654, 0.0866",\
                 "0.08221, 0.08262, 0.08364, 0.08462, 0.08525, 0.08562, 0.08584, 0.08597, 0.08606, 0.08612",\
                 "0.08168, 0.08208, 0.08309, 0.08408, 0.08472, 0.08509, 0.08531, 0.08547, 0.08556, 0.08561",\
                 "0.08116, 0.08153, 0.08243, 0.08338, 0.08409, 0.08452, 0.08479, 0.08495, 0.08506, 0.08514",\
                 "0.08084, 0.08109, 0.08183, 0.0827, 0.08347, 0.08396, 0.0843, 0.08451, 0.08466, 0.08475",\
                 "0.08084, 0.08107, 0.08158, 0.08241, 0.08309, 0.08366, 0.08405, 0.08431, 0.0845, 0.08462",\
                 "0.0813, 0.08136, 0.08172, 0.0824, 0.0831, 0.0837, 0.08412, 0.08444, 0.08465, 0.08481",\
                 "0.08203, 0.08202, 0.08227, 0.08279, 0.08341, 0.084, 0.08445, 0.08478, 0.08502, 0.0852",\
                 "0.08313, 0.08307, 0.08311, 0.08347, 0.08403, 0.08462, 0.08508, 0.08542, 0.08571, 0.08588",\
                 "0.08465, 0.08448, 0.08432, 0.0846, 0.08504, 0.08551, 0.08599, 0.08635, 0.08665, 0.08684");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.04261, 0.04282, 0.04355, 0.04459, 0.04575, 0.04653, 0.04732, 0.048, 0.05069, 0.06759",\
                 "0.04242, 0.04261, 0.04327, 0.04445, 0.04562, 0.04642, 0.04758, 0.04795, 0.04997, 0.06763",\
                 "0.04201, 0.04229, 0.04286, 0.04398, 0.04519, 0.04619, 0.04669, 0.04741, 0.0502, 0.06892",\
                 "0.04142, 0.04164, 0.04226, 0.04326, 0.0444, 0.04527, 0.04603, 0.04685, 0.04925, 0.07146",\
                 "0.04101, 0.04116, 0.04183, 0.0427, 0.04373, 0.04475, 0.04556, 0.04653, 0.0488, 0.07411",\
                 "0.04073, 0.04091, 0.04138, 0.04234, 0.04328, 0.04435, 0.04504, 0.04592, 0.04998, 0.08306",\
                 "0.04069, 0.04084, 0.0412, 0.04164, 0.04285, 0.04408, 0.0447, 0.04574, 0.05119, 0.09662",\
                 "0.04088, 0.04095, 0.04117, 0.04164, 0.04228, 0.0437, 0.04497, 0.04568, 0.05562, 0.1198",\
                 "0.0413, 0.04129, 0.04149, 0.04184, 0.04253, 0.04296, 0.04474, 0.04705, 0.06372, 0.1634",\
                 "0.04206, 0.042, 0.04215, 0.04231, 0.04285, 0.0434, 0.0441, 0.04887, 0.08421, 0.2389");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.5904, 0.6411, 0.7688, 0.9498, 1.191, 1.508, 1.919, 2.435, 3.065, 3.814",\
                 "0.6274, 0.678, 0.806, 0.987, 1.228, 1.545, 1.957, 2.472, 3.101, 3.851",\
                 "0.7496, 0.8001, 0.928, 1.109, 1.35, 1.668, 2.079, 2.594, 3.224, 3.975",\
                 "0.9872, 1.038, 1.165, 1.347, 1.588, 1.906, 2.317, 2.833, 3.463, 4.213",\
                 "1.335, 1.39, 1.522, 1.707, 1.95, 2.268, 2.68, 3.196, 3.825, 4.576",\
                 "1.723, 1.787, 1.938, 2.135, 2.385, 2.706, 3.118, 3.633, 4.263, 5.013",\
                 "2.138, 2.212, 2.382, 2.595, 2.855, 3.181, 3.596, 4.112, 4.74, 5.49",\
                 "2.579, 2.662, 2.854, 3.087, 3.357, 3.689, 4.106, 4.623, 5.253, 6.003",\
                 "3.045, 3.138, 3.351, 3.606, 3.891, 4.23, 4.648, 5.166, 5.796, 6.546",\
                 "3.541, 3.643, 3.876, 4.153, 4.453, 4.801, 5.224, 5.742, 6.372, 7.124");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.8285, 0.9135, 1.141, 1.494, 2.005, 2.708, 3.629, 4.789, 6.207, 7.887",\
                 "0.8502, 0.9352, 1.162, 1.516, 2.027, 2.729, 3.651, 4.811, 6.227, 7.915",\
                 "0.9315, 1.016, 1.243, 1.597, 2.108, 2.81, 3.731, 4.89, 6.31, 7.996",\
                 "1.093, 1.177, 1.404, 1.757, 2.268, 2.97, 3.892, 5.052, 6.469, 8.157",\
                 "1.319, 1.406, 1.636, 1.991, 2.501, 3.204, 4.126, 5.287, 6.703, 8.391",\
                 "1.544, 1.635, 1.872, 2.233, 2.747, 3.451, 4.373, 5.533, 6.947, 8.636",\
                 "1.75, 1.849, 2.096, 2.46, 2.976, 3.684, 4.606, 5.765, 7.182, 8.871",\
                 "1.931, 2.039, 2.298, 2.669, 3.186, 3.892, 4.818, 5.979, 7.392, 9.078",\
                 "2.08, 2.199, 2.477, 2.855, 3.374, 4.079, 5.002, 6.165, 7.581, 9.266",\
                 "2.198, 2.326, 2.624, 3.012, 3.534, 4.239, 5.161, 6.323, 7.74, 9.428");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.171, 0.2143, 0.3418, 0.5622, 0.9094, 1.418, 2.106, 2.984, 4.063, 5.341",\
                 "0.1712, 0.2145, 0.3407, 0.5623, 0.9094, 1.418, 2.107, 2.985, 4.064, 5.348",\
                 "0.1714, 0.2145, 0.3412, 0.561, 0.9092, 1.418, 2.107, 2.985, 4.063, 5.347",\
                 "0.172, 0.2156, 0.342, 0.5612, 0.9086, 1.417, 2.105, 2.981, 4.057, 5.35",\
                 "0.1974, 0.2366, 0.3558, 0.57, 0.911, 1.418, 2.104, 2.986, 4.064, 5.35",\
                 "0.2414, 0.285, 0.4, 0.6038, 0.9344, 1.428, 2.108, 2.986, 4.056, 5.34",\
                 "0.289, 0.3368, 0.4548, 0.6492, 0.968, 1.45, 2.12, 2.991, 4.06, 5.345",\
                 "0.3356, 0.3902, 0.5154, 0.702, 1.006, 1.476, 2.135, 2.998, 4.064, 5.344",\
                 "0.3822, 0.4438, 0.5802, 0.7644, 1.056, 1.505, 2.154, 3.007, 4.076, 5.35",\
                 "0.428, 0.494, 0.644, 0.832, 1.108, 1.542, 2.174, 3.02, 4.076, 5.354");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.2729, 0.3556, 0.6188, 1.123, 1.945, 3.133, 4.702, 6.694, 9.133, 12.02",\
                 "0.2729, 0.3554, 0.6206, 1.122, 1.943, 3.132, 4.705, 6.699, 9.127, 12",\
                 "0.274, 0.3556, 0.619, 1.122, 1.943, 3.129, 4.708, 6.699, 9.133, 12.03",\
                 "0.2734, 0.3558, 0.6196, 1.123, 1.944, 3.132, 4.706, 6.699, 9.13, 12.03",\
                 "0.2884, 0.3692, 0.6276, 1.125, 1.946, 3.133, 4.703, 6.692, 9.131, 12",\
                 "0.3138, 0.3932, 0.6486, 1.143, 1.955, 3.135, 4.707, 6.687, 9.125, 12.02",\
                 "0.3516, 0.4288, 0.674, 1.155, 1.97, 3.145, 4.708, 6.69, 9.108, 12.02",\
                 "0.394, 0.4706, 0.7028, 1.172, 1.974, 3.152, 4.719, 6.691, 9.106, 12.01",\
                 "0.4374, 0.5196, 0.7444, 1.193, 1.979, 3.154, 4.722, 6.702, 9.116, 11.99",\
                 "0.4796, 0.5698, 0.7934, 1.22, 1.99, 3.156, 4.728, 6.706, 9.122, 12");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.6551, 0.7064, 0.8357, 1.018, 1.261, 1.579, 1.991, 2.507, 3.136, 3.887",\
                 "0.69, 0.7413, 0.871, 1.054, 1.296, 1.614, 2.026, 2.542, 3.171, 3.922",\
                 "0.8131, 0.8646, 0.9938, 1.176, 1.419, 1.737, 2.149, 2.665, 3.294, 4.044",\
                 "1.053, 1.104, 1.233, 1.416, 1.658, 1.977, 2.389, 2.905, 3.534, 4.285",\
                 "1.415, 1.469, 1.601, 1.785, 2.028, 2.348, 2.759, 3.276, 3.906, 4.656",\
                 "1.832, 1.895, 2.042, 2.238, 2.486, 2.808, 3.22, 3.736, 4.365, 5.115",\
                 "2.279, 2.35, 2.516, 2.725, 2.984, 3.31, 3.724, 4.241, 4.87, 5.62",\
                 "2.752, 2.833, 3.019, 3.247, 3.516, 3.847, 4.263, 4.781, 5.411, 6.16",\
                 "3.253, 3.343, 3.55, 3.797, 4.078, 4.416, 4.835, 5.353, 5.983, 6.733",\
                 "3.782, 3.88, 4.108, 4.377, 4.673, 5.019, 5.44, 5.959, 6.589, 7.339");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.8839, 0.9688, 1.196, 1.55, 2.06, 2.763, 3.685, 4.844, 6.255, 7.939",\
                 "0.9084, 0.9935, 1.22, 1.574, 2.085, 2.788, 3.708, 4.866, 6.286, 7.973",\
                 "0.9845, 1.07, 1.296, 1.65, 2.161, 2.864, 3.785, 4.945, 6.361, 8.05",\
                 "1.123, 1.208, 1.434, 1.788, 2.298, 3.001, 3.922, 5.081, 6.499, 8.185",\
                 "1.317, 1.404, 1.635, 1.99, 2.5, 3.203, 4.124, 5.286, 6.703, 8.389",\
                 "1.523, 1.615, 1.854, 2.215, 2.729, 3.433, 4.354, 5.515, 6.925, 8.616",\
                 "1.723, 1.82, 2.069, 2.437, 2.953, 3.659, 4.582, 5.741, 7.157, 8.846",\
                 "1.901, 2.007, 2.268, 2.643, 3.161, 3.868, 4.791, 5.952, 7.365, 9.052",\
                 "2.052, 2.167, 2.444, 2.827, 3.348, 4.054, 4.978, 6.139, 7.555, 9.239",\
                 "2.172, 2.296, 2.591, 2.986, 3.51, 4.217, 5.139, 6.3, 7.716, 9.404");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.1762, 0.2198, 0.3463, 0.5652, 0.911, 1.42, 2.107, 2.988, 4.066, 5.345",\
                 "0.1762, 0.2193, 0.3452, 0.5649, 0.9112, 1.419, 2.108, 2.988, 4.066, 5.342",\
                 "0.1758, 0.219, 0.3462, 0.5654, 0.912, 1.419, 2.109, 2.987, 4.065, 5.348",\
                 "0.1764, 0.22, 0.3466, 0.5672, 0.911, 1.419, 2.109, 2.988, 4.065, 5.344",\
                 "0.1922, 0.2318, 0.3536, 0.5698, 0.9148, 1.421, 2.109, 2.985, 4.06, 5.35",\
                 "0.2346, 0.2766, 0.3918, 0.5978, 0.9298, 1.427, 2.112, 2.988, 4.062, 5.35",\
                 "0.2794, 0.3264, 0.4436, 0.6418, 0.9628, 1.447, 2.119, 2.992, 4.061, 5.339",\
                 "0.3248, 0.376, 0.5008, 0.6892, 0.9984, 1.47, 2.134, 2.997, 4.064, 5.348",\
                 "0.3704, 0.4288, 0.5606, 0.7452, 1.042, 1.497, 2.15, 3.006, 4.072, 5.35",\
                 "0.416, 0.48, 0.622, 0.812, 1.09, 1.53, 2.168, 3.016, 4.086, 5.358");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.2727, 0.3559, 0.6194, 1.121, 1.945, 3.133, 4.707, 6.687, 9.122, 12.01",\
                 "0.273, 0.3555, 0.619, 1.123, 1.943, 3.129, 4.708, 6.697, 9.132, 12.03",\
                 "0.2728, 0.3556, 0.6206, 1.122, 1.943, 3.132, 4.705, 6.699, 9.126, 12.03",\
                 "0.273, 0.3568, 0.6194, 1.123, 1.944, 3.131, 4.709, 6.69, 9.13, 12.02",\
                 "0.287, 0.3686, 0.6268, 1.126, 1.944, 3.133, 4.708, 6.698, 9.131, 12.03",\
                 "0.3088, 0.3914, 0.648, 1.141, 1.954, 3.134, 4.703, 6.695, 9.114, 11.99",\
                 "0.3368, 0.4194, 0.6712, 1.155, 1.966, 3.14, 4.707, 6.692, 9.114, 12.02",\
                 "0.3722, 0.454, 0.7034, 1.175, 1.971, 3.146, 4.712, 6.691, 9.112, 12",\
                 "0.4118, 0.498, 0.7388, 1.197, 1.98, 3.152, 4.716, 6.697, 9.108, 11.99",\
                 "0.4512, 0.5428, 0.7818, 1.223, 1.996, 3.156, 4.718, 6.696, 9.114, 11.99");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.7044, 0.7569, 0.8885, 1.073, 1.317, 1.636, 2.048, 2.565, 3.195, 3.945",\
                 "0.7364, 0.7889, 0.9204, 1.105, 1.348, 1.668, 2.08, 2.597, 3.227, 3.978",\
                 "0.8605, 0.913, 1.044, 1.229, 1.473, 1.792, 2.205, 2.721, 3.351, 4.102",\
                 "1.103, 1.155, 1.286, 1.471, 1.714, 2.034, 2.447, 2.963, 3.594, 4.344",\
                 "1.474, 1.528, 1.661, 1.846, 2.091, 2.41, 2.823, 3.34, 3.97, 4.72",\
                 "1.916, 1.977, 2.123, 2.317, 2.566, 2.888, 3.3, 3.817, 4.447, 5.198",\
                 "2.387, 2.458, 2.621, 2.829, 3.087, 3.412, 3.827, 4.344, 4.973, 5.723",\
                 "2.887, 2.966, 3.15, 3.375, 3.642, 3.973, 4.389, 4.907, 5.538, 6.287",\
                 "3.416, 3.505, 3.708, 3.952, 4.231, 4.568, 4.986, 5.505, 6.134, 6.886",\
                 "3.975, 4.072, 4.295, 4.559, 4.851, 5.196, 5.618, 6.137, 6.767, 7.519");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.9038, 0.9887, 1.216, 1.57, 2.08, 2.783, 3.704, 4.861, 6.282, 7.968",\
                 "0.9319, 1.017, 1.244, 1.598, 2.108, 2.811, 3.732, 4.891, 6.31, 7.997",\
                 "1.004, 1.088, 1.315, 1.669, 2.18, 2.883, 3.803, 4.961, 6.381, 8.068",\
                 "1.116, 1.201, 1.428, 1.781, 2.292, 2.995, 3.916, 5.076, 6.487, 8.17",\
                 "1.267, 1.354, 1.585, 1.94, 2.45, 3.154, 4.075, 5.233, 6.647, 8.331",\
                 "1.426, 1.518, 1.757, 2.118, 2.631, 3.334, 4.256, 5.415, 6.829, 8.514",\
                 "1.584, 1.681, 1.929, 2.296, 2.812, 3.518, 4.44, 5.599, 7.012, 8.698",\
                 "1.73, 1.832, 2.091, 2.467, 2.986, 3.691, 4.615, 5.774, 7.187, 8.872",\
                 "1.852, 1.962, 2.234, 2.618, 3.141, 3.847, 4.77, 5.929, 7.343, 9.028",\
                 "1.945, 2.063, 2.35, 2.745, 3.272, 3.98, 4.902, 6.062, 7.478, 9.161");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.182, 0.2251, 0.3514, 0.5709, 0.9172, 1.424, 2.109, 2.989, 4.066, 5.351",\
                 "0.1817, 0.2249, 0.3513, 0.5708, 0.9174, 1.424, 2.112, 2.987, 4.062, 5.35",\
                 "0.182, 0.225, 0.3514, 0.5708, 0.9166, 1.423, 2.111, 2.99, 4.067, 5.349",\
                 "0.1816, 0.2254, 0.3506, 0.571, 0.9176, 1.424, 2.111, 2.988, 4.062, 5.351",\
                 "0.1912, 0.2328, 0.3556, 0.5728, 0.918, 1.425, 2.11, 2.989, 4.063, 5.351",\
                 "0.2316, 0.274, 0.3894, 0.596, 0.9292, 1.43, 2.114, 2.991, 4.064, 5.348",\
                 "0.2754, 0.3204, 0.4364, 0.6372, 0.959, 1.447, 2.12, 2.993, 4.062, 5.349",\
                 "0.32, 0.3712, 0.4924, 0.6816, 0.9944, 1.468, 2.135, 3, 4.065, 5.346",\
                 "0.3644, 0.4218, 0.5494, 0.7348, 1.035, 1.493, 2.147, 3.008, 4.072, 5.348",\
                 "0.408, 0.472, 0.612, 0.796, 1.08, 1.524, 2.168, 3.016, 4.082, 5.358");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006707, 0.02674, 0.065, 0.1246, 0.2082, 0.3183, 0.4569, 0.6262, 0.8279");
          values("0.274, 0.3553, 0.6184, 1.123, 1.944, 3.131, 4.709, 6.691, 9.132, 12.03",\
                 "0.274, 0.3555, 0.6202, 1.123, 1.943, 3.13, 4.708, 6.699, 9.133, 12.03",\
                 "0.274, 0.3564, 0.6188, 1.123, 1.944, 3.132, 4.708, 6.691, 9.132, 12.03",\
                 "0.2738, 0.3562, 0.6196, 1.121, 1.945, 3.133, 4.706, 6.687, 9.116, 12.01",\
                 "0.285, 0.367, 0.6258, 1.125, 1.945, 3.133, 4.709, 6.698, 9.109, 11.99",\
                 "0.3028, 0.387, 0.646, 1.139, 1.95, 3.132, 4.708, 6.692, 9.125, 12.01",\
                 "0.324, 0.4106, 0.6702, 1.154, 1.961, 3.137, 4.701, 6.692, 9.118, 12",\
                 "0.3506, 0.4386, 0.6942, 1.174, 1.97, 3.14, 4.709, 6.681, 9.103, 12.01",\
                 "0.3824, 0.4724, 0.7258, 1.195, 1.983, 3.149, 4.711, 6.689, 9.108, 11.98",\
                 "0.4188, 0.5106, 0.7644, 1.222, 1.995, 3.156, 4.716, 6.688, 9.108, 11.99");
        }
      }
    }
  }

