/*
 * 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_1) {
    area : 21.952000 ;

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

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

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

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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "2.22732e-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.002597 ;
      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.002185, 0.002181, 0.002173, 0.00217, 0.00217, 0.00217, 0.002171, \
                 0.002171, 0.002169, 0.002167");
        }

        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.001333, -0.001341, -0.001341, -0.001343, -0.001349, -0.001352, \
                 -0.001355, -0.001361, -0.001368, -0.001381");
        }
      }

      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.002182, 0.002181, 0.002172, 0.002169, 0.00217, 0.002171, 0.002171, \
                 0.00217, 0.00217, 0.002169");
        }

        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.001335, -0.00134, -0.00134, -0.001341, -0.001348, -0.001352, \
                 -0.001354, -0.001361, -0.001368, -0.00138");
        }
      }

      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.002185, 0.00218, 0.002172, 0.002169, 0.002172, 0.002171, 0.002171, \
                 0.00217, 0.00217, 0.002169");
        }

        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.0007542, 0.0007495, 0.0007429, 0.0007411, 0.0007293, 0.0007218, \
                 0.0007132, 0.0007019, 0.000683, 0.0006533");
        }
      }
    }

    pin(A2) {
      capacitance : 0.002525 ;
      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.002328, 0.002328, 0.002332, 0.002339, 0.002351, 0.002357, 0.002359, \
                 0.002361, 0.002355, 0.002342");
        }

        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.001872, -0.001874, -0.00187, -0.001869, -0.00187, -0.00187, \
                 -0.00187, -0.001869, -0.001868, -0.00187");
        }
      }

      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.00215, 0.001966, 0.001881, 0.001873, 0.001875, 0.001873, 0.001874, \
                 0.001874, 0.001873, 0.001874");
        }

        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.001866, -0.001871, -0.001871, -0.001868, -0.001872, -0.001872, \
                 -0.00187, -0.001871, -0.00187, -0.001869");
        }
      }

      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.00204, 0.002036, 0.00203, 0.002027, 0.002028, 0.002025, 0.002022, \
                 0.002017, 0.002011, 0.002001");
        }

        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.001567, -0.00157, -0.001571, -0.00157, -0.00158, -0.001585, \
                 -0.001591, -0.001602, -0.001618, -0.001644");
        }
      }
    }

    pin(A3) {
      capacitance : 0.002551 ;
      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.001886, 0.001882, 0.001877, 0.001875, 0.001876, 0.001876, 0.001877, \
                 0.001875, 0.001874, 0.001873");
        }

        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.00187, -0.001872, -0.001869, -0.001867, -0.001869, -0.001868, \
                 -0.001867, -0.001867, -0.00187, -0.001869");
        }
      }

      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.001887, 0.001881, 0.001876, 0.001874, 0.001875, 0.001874, 0.001875, \
                 0.001874, 0.001874, 0.001874");
        }

        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.001868, -0.00187, -0.001871, -0.001867, -0.001873, -0.001872, \
                 -0.00187, -0.001869, -0.001869, -0.001869");
        }
      }

      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.001904, 0.001879, 0.001879, 0.001876, 0.001877, 0.001876, 0.001876, \
                 0.001875, 0.001876, 0.001874");
        }

        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.00187, -0.001871, -0.001869, -0.001867, -0.001872, -0.001871, \
                 -0.00187, -0.00187, -0.001868, -0.00187");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.2054 ;
      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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.0236, 0.02368, 0.02389, 0.02409, 0.02425, 0.02434, 0.02441, 0.02444, 0.02446, 0.02448",\
                 "0.02363, 0.02371, 0.02391, 0.02412, 0.02428, 0.02438, 0.02443, 0.02447, 0.02449, 0.02451",\
                 "0.02345, 0.02353, 0.02373, 0.02395, 0.02411, 0.02421, 0.02427, 0.02431, 0.02434, 0.02435",\
                 "0.02324, 0.02331, 0.02349, 0.0237, 0.02387, 0.02398, 0.02404, 0.02409, 0.02411, 0.02414",\
                 "0.02311, 0.02315, 0.02331, 0.0235, 0.02369, 0.02382, 0.0239, 0.02396, 0.024, 0.02402",\
                 "0.02314, 0.02318, 0.02329, 0.02346, 0.02363, 0.02377, 0.02387, 0.02393, 0.02398, 0.02401",\
                 "0.02332, 0.02334, 0.02342, 0.02356, 0.02372, 0.02387, 0.02397, 0.02404, 0.0241, 0.02414",\
                 "0.02367, 0.02367, 0.02372, 0.02383, 0.02398, 0.02411, 0.02422, 0.02431, 0.02437, 0.02442",\
                 "0.02415, 0.02414, 0.02415, 0.02423, 0.02436, 0.02448, 0.02459, 0.02469, 0.02476, 0.0248",\
                 "0.0248, 0.02476, 0.02474, 0.02479, 0.0249, 0.02501, 0.02512, 0.02521, 0.02528, 0.02533");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.01313, 0.01318, 0.01332, 0.01356, 0.01379, 0.01401, 0.01419, 0.01441, 0.01492, 0.0192",\
                 "0.0131, 0.01316, 0.01328, 0.01352, 0.01377, 0.01399, 0.01419, 0.01437, 0.0149, 0.01926",\
                 "0.01301, 0.0131, 0.0132, 0.01345, 0.0137, 0.01397, 0.01408, 0.01428, 0.01467, 0.01992",\
                 "0.01292, 0.01298, 0.01309, 0.01329, 0.01354, 0.01381, 0.01405, 0.01415, 0.01485, 0.02002",\
                 "0.01288, 0.0129, 0.013, 0.01318, 0.01339, 0.01361, 0.01385, 0.01409, 0.01485, 0.02154",\
                 "0.01291, 0.01293, 0.013, 0.01317, 0.01338, 0.01358, 0.01378, 0.01406, 0.01514, 0.02382",\
                 "0.01309, 0.01309, 0.01312, 0.01319, 0.01348, 0.01363, 0.01388, 0.01412, 0.01572, 0.02751",\
                 "0.01336, 0.01336, 0.0134, 0.01343, 0.01356, 0.01392, 0.01415, 0.01444, 0.01716, 0.03374",\
                 "0.01377, 0.01377, 0.0138, 0.01382, 0.01392, 0.01406, 0.01449, 0.01505, 0.01952, 0.04501",\
                 "0.01432, 0.0143, 0.01429, 0.01434, 0.01437, 0.01457, 0.01466, 0.01583, 0.02506, 0.06416");
        }
      }

      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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.02562, 0.02569, 0.02588, 0.02609, 0.02625, 0.02636, 0.02642, 0.02646, 0.02649, 0.02651",\
                 "0.02559, 0.02565, 0.02585, 0.02606, 0.02622, 0.02632, 0.02638, 0.02643, 0.02645, 0.02647",\
                 "0.02544, 0.02551, 0.02569, 0.0259, 0.02607, 0.02618, 0.02625, 0.02629, 0.02631, 0.02633",\
                 "0.02528, 0.02533, 0.0255, 0.02571, 0.02588, 0.026, 0.02607, 0.02612, 0.02614, 0.02617",\
                 "0.02517, 0.02522, 0.02536, 0.02554, 0.02573, 0.02586, 0.02595, 0.02601, 0.02605, 0.02607",\
                 "0.02521, 0.02524, 0.02535, 0.02552, 0.02569, 0.02583, 0.02593, 0.026, 0.02605, 0.02609",\
                 "0.0254, 0.02541, 0.02549, 0.02563, 0.02578, 0.02592, 0.02603, 0.02611, 0.02616, 0.0262",\
                 "0.02574, 0.02576, 0.02579, 0.02587, 0.02603, 0.02616, 0.02627, 0.02635, 0.02641, 0.02647",\
                 "0.02625, 0.02624, 0.02624, 0.0263, 0.02641, 0.02653, 0.02664, 0.02673, 0.0268, 0.02685",\
                 "0.02686, 0.02684, 0.02681, 0.02684, 0.02693, 0.02705, 0.02715, 0.02725, 0.02731, 0.02736");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.01313, 0.01318, 0.01334, 0.01354, 0.01379, 0.01401, 0.01419, 0.01444, 0.01492, 0.01922",\
                 "0.0131, 0.01316, 0.01328, 0.01352, 0.01381, 0.01399, 0.01421, 0.01443, 0.01474, 0.01948",\
                 "0.01304, 0.01312, 0.01321, 0.01346, 0.01372, 0.01392, 0.01414, 0.01435, 0.01469, 0.01976",\
                 "0.01295, 0.01298, 0.01311, 0.01332, 0.01356, 0.01376, 0.01397, 0.01419, 0.01477, 0.0201",\
                 "0.01286, 0.01289, 0.013, 0.0132, 0.01344, 0.0137, 0.01387, 0.01411, 0.01487, 0.02174",\
                 "0.01284, 0.01283, 0.01296, 0.01312, 0.01333, 0.01356, 0.01378, 0.01408, 0.01518, 0.02373",\
                 "0.0129, 0.01293, 0.01299, 0.01308, 0.01333, 0.01354, 0.01372, 0.01399, 0.01558, 0.02713",\
                 "0.01308, 0.01308, 0.01313, 0.01319, 0.01336, 0.01368, 0.01392, 0.01408, 0.01689, 0.033",\
                 "0.01335, 0.01336, 0.01338, 0.01345, 0.01362, 0.01376, 0.01411, 0.01474, 0.01914, 0.04382",\
                 "0.01379, 0.01377, 0.01379, 0.01384, 0.01393, 0.01403, 0.01427, 0.0154, 0.02432, 0.06259");
        }
      }

      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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.02761, 0.02766, 0.02784, 0.02805, 0.02822, 0.02833, 0.0284, 0.02845, 0.02847, 0.0285",\
                 "0.02748, 0.02754, 0.02771, 0.02792, 0.02809, 0.0282, 0.02827, 0.02832, 0.02835, 0.02837",\
                 "0.02735, 0.02741, 0.02758, 0.02779, 0.02796, 0.02807, 0.02815, 0.02819, 0.02822, 0.02824",\
                 "0.02724, 0.0273, 0.02745, 0.02766, 0.02784, 0.02795, 0.02803, 0.02807, 0.02811, 0.02813",\
                 "0.02719, 0.02722, 0.02736, 0.02754, 0.02772, 0.02786, 0.02795, 0.028, 0.02806, 0.02808",\
                 "0.02725, 0.02728, 0.02738, 0.02753, 0.0277, 0.02785, 0.02795, 0.02802, 0.02807, 0.0281",\
                 "0.02745, 0.02745, 0.02753, 0.02766, 0.02781, 0.02793, 0.02805, 0.02813, 0.02819, 0.02823",\
                 "0.02779, 0.02779, 0.02781, 0.02792, 0.02806, 0.02818, 0.02829, 0.02837, 0.02843, 0.02849",\
                 "0.02827, 0.02826, 0.02824, 0.02832, 0.02841, 0.02854, 0.02866, 0.02874, 0.02881, 0.02886",\
                 "0.0289, 0.02887, 0.02883, 0.02885, 0.02894, 0.02905, 0.02916, 0.02925, 0.02932, 0.02937");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.01312, 0.01321, 0.01331, 0.01355, 0.01379, 0.01399, 0.01421, 0.01439, 0.01492, 0.01926",\
                 "0.0131, 0.01314, 0.01328, 0.01352, 0.01377, 0.01399, 0.0143, 0.01433, 0.01504, 0.01937",\
                 "0.01304, 0.01312, 0.01321, 0.01346, 0.01374, 0.01392, 0.0141, 0.01432, 0.01489, 0.0198",\
                 "0.01293, 0.01301, 0.0131, 0.01332, 0.01358, 0.01385, 0.01408, 0.01433, 0.01493, 0.02006",\
                 "0.01285, 0.01289, 0.013, 0.01321, 0.01344, 0.01367, 0.01388, 0.01411, 0.01488, 0.02114",\
                 "0.0128, 0.01283, 0.01292, 0.01314, 0.01335, 0.01363, 0.01379, 0.01407, 0.01488, 0.02354",\
                 "0.01282, 0.01287, 0.01291, 0.01307, 0.01334, 0.01354, 0.01367, 0.01412, 0.01566, 0.02665",\
                 "0.01293, 0.01294, 0.01301, 0.01312, 0.01322, 0.01363, 0.01388, 0.01404, 0.01633, 0.03195",\
                 "0.01316, 0.01319, 0.01322, 0.01329, 0.01342, 0.01358, 0.01395, 0.01455, 0.01852, 0.04184",\
                 "0.01355, 0.01355, 0.01357, 0.01361, 0.01373, 0.01383, 0.01412, 0.01515, 0.02324, 0.05917");
        }
      }

      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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.8929, 0.9429, 1.079, 1.277, 1.531, 1.853, 2.257, 2.76, 3.371, 4.099",\
                 "0.9301, 0.9804, 1.117, 1.315, 1.568, 1.89, 2.294, 2.797, 3.408, 4.136",\
                 "1.05, 1.1, 1.237, 1.435, 1.688, 2.01, 2.415, 2.917, 3.528, 4.256",\
                 "1.284, 1.334, 1.471, 1.668, 1.923, 2.244, 2.649, 3.152, 3.762, 4.49",\
                 "1.653, 1.703, 1.841, 2.039, 2.294, 2.615, 3.021, 3.523, 4.134, 4.862",\
                 "2.118, 2.174, 2.322, 2.528, 2.787, 3.111, 3.516, 4.019, 4.631, 5.359",\
                 "2.62, 2.684, 2.85, 3.073, 3.345, 3.676, 4.085, 4.588, 5.199, 5.927",\
                 "3.156, 3.227, 3.413, 3.656, 3.942, 4.282, 4.697, 5.203, 5.815, 6.542",\
                 "3.728, 3.807, 4.011, 4.276, 4.579, 4.931, 5.35, 5.859, 6.472, 7.2",\
                 "4.342, 4.426, 4.648, 4.937, 5.257, 5.622, 6.049, 6.56, 7.174, 7.902");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("1.008, 1.083, 1.302, 1.657, 2.166, 2.865, 3.78, 4.93, 6.336, 8.012",\
                 "1.029, 1.104, 1.323, 1.677, 2.187, 2.886, 3.8, 4.952, 6.352, 8.024",\
                 "1.105, 1.18, 1.399, 1.753, 2.263, 2.962, 3.876, 5.027, 6.429, 8.101",\
                 "1.253, 1.328, 1.547, 1.9, 2.41, 3.109, 4.023, 5.174, 6.579, 8.251",\
                 "1.463, 1.539, 1.76, 2.115, 2.624, 3.323, 4.238, 5.388, 6.794, 8.469",\
                 "1.665, 1.744, 1.971, 2.332, 2.845, 3.545, 4.459, 5.611, 7.013, 8.692",\
                 "1.838, 1.922, 2.156, 2.521, 3.037, 3.74, 4.655, 5.807, 7.212, 8.887",\
                 "1.973, 2.063, 2.307, 2.678, 3.195, 3.898, 4.817, 5.971, 7.374, 9.047",\
                 "2.066, 2.162, 2.418, 2.797, 3.317, 4.021, 4.938, 6.093, 7.499, 9.171",\
                 "2.114, 2.216, 2.487, 2.876, 3.4, 4.102, 5.019, 6.173, 7.579, 9.255");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.2785, 0.3201, 0.4476, 0.6636, 0.9912, 1.463, 2.11, 2.947, 3.989, 5.226",\
                 "0.2782, 0.3204, 0.4476, 0.6636, 0.9902, 1.464, 2.112, 2.952, 3.986, 5.227",\
                 "0.2782, 0.3202, 0.448, 0.6636, 0.9888, 1.462, 2.11, 2.949, 3.984, 5.23",\
                 "0.2802, 0.3204, 0.4476, 0.664, 0.9902, 1.462, 2.11, 2.949, 3.986, 5.235",\
                 "0.2842, 0.3252, 0.4504, 0.666, 0.9926, 1.464, 2.112, 2.952, 3.986, 5.232",\
                 "0.3268, 0.3662, 0.4836, 0.6866, 1.005, 1.471, 2.114, 2.948, 3.987, 5.233",\
                 "0.3828, 0.4246, 0.5446, 0.743, 1.047, 1.496, 2.128, 2.958, 3.987, 5.226",\
                 "0.4392, 0.486, 0.6128, 0.8062, 1.101, 1.537, 2.154, 2.969, 3.997, 5.229",\
                 "0.4932, 0.5456, 0.6808, 0.875, 1.159, 1.582, 2.184, 2.99, 4.004, 5.234",\
                 "0.548, 0.606, 0.752, 0.946, 1.228, 1.632, 2.22, 3.01, 4.018, 5.246");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.3904, 0.4682, 0.7284, 1.225, 2.033, 3.205, 4.765, 6.736, 9.151, 12.03",\
                 "0.3911, 0.4686, 0.7272, 1.223, 2.03, 3.202, 4.759, 6.731, 9.145, 12.02",\
                 "0.3906, 0.4694, 0.7276, 1.225, 2.03, 3.202, 4.76, 6.73, 9.135, 12.02",\
                 "0.3906, 0.4688, 0.7284, 1.224, 2.032, 3.203, 4.764, 6.738, 9.137, 11.99",\
                 "0.4018, 0.4782, 0.7342, 1.225, 2.031, 3.203, 4.763, 6.739, 9.15, 12.03",\
                 "0.4262, 0.502, 0.758, 1.246, 2.042, 3.204, 4.761, 6.727, 9.148, 12.03",\
                 "0.4596, 0.5332, 0.7794, 1.26, 2.055, 3.217, 4.765, 6.735, 9.129, 12.01",\
                 "0.4996, 0.571, 0.8096, 1.278, 2.063, 3.224, 4.775, 6.741, 9.132, 11.99",\
                 "0.5466, 0.6178, 0.8476, 1.299, 2.073, 3.231, 4.779, 6.743, 9.14, 12",\
                 "0.5932, 0.666, 0.8916, 1.328, 2.086, 3.23, 4.78, 6.748, 9.144, 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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.974, 1.025, 1.163, 1.363, 1.618, 1.941, 2.346, 2.849, 3.461, 4.188",\
                 "1.009, 1.059, 1.198, 1.397, 1.653, 1.976, 2.381, 2.884, 3.495, 4.224",\
                 "1.129, 1.18, 1.319, 1.519, 1.774, 2.097, 2.502, 3.005, 3.617, 4.345",\
                 "1.366, 1.417, 1.555, 1.755, 2.01, 2.333, 2.739, 3.242, 3.853, 4.581",\
                 "1.739, 1.79, 1.929, 2.128, 2.384, 2.707, 3.113, 3.616, 4.228, 4.956",\
                 "2.226, 2.281, 2.427, 2.632, 2.891, 3.215, 3.621, 4.125, 4.736, 5.465",\
                 "2.757, 2.82, 2.984, 3.205, 3.474, 3.805, 4.213, 4.717, 5.328, 6.056",\
                 "3.324, 3.395, 3.576, 3.816, 4.1, 4.439, 4.853, 5.359, 5.97, 6.699",\
                 "3.927, 4.006, 4.206, 4.466, 4.766, 5.116, 5.535, 6.043, 6.657, 7.385",\
                 "4.572, 4.657, 4.877, 5.157, 5.475, 5.837, 6.263, 6.774, 7.388, 8.116");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("1.059, 1.134, 1.353, 1.707, 2.217, 2.916, 3.831, 4.981, 6.382, 8.054",\
                 "1.082, 1.157, 1.376, 1.73, 2.24, 2.939, 3.853, 5.004, 6.407, 8.077",\
                 "1.149, 1.224, 1.444, 1.798, 2.308, 3.007, 3.92, 5.072, 6.474, 8.144",\
                 "1.271, 1.346, 1.565, 1.918, 2.428, 3.127, 4.041, 5.192, 6.596, 8.267",\
                 "1.443, 1.519, 1.74, 2.095, 2.605, 3.304, 4.219, 5.368, 6.773, 8.449",\
                 "1.618, 1.698, 1.926, 2.287, 2.8, 3.499, 4.414, 5.565, 6.97, 8.64",\
                 "1.775, 1.858, 2.094, 2.461, 2.977, 3.679, 4.595, 5.745, 7.15, 8.825",\
                 "1.9, 1.988, 2.233, 2.607, 3.126, 3.828, 4.745, 5.897, 7.3, 8.973",\
                 "1.983, 2.078, 2.334, 2.716, 3.239, 3.941, 4.858, 6.011, 7.416, 9.088",\
                 "2.026, 2.125, 2.394, 2.785, 3.312, 4.016, 4.933, 6.085, 7.491, 9.164");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.2857, 0.3274, 0.4534, 0.6702, 0.9944, 1.468, 2.114, 2.954, 3.989, 5.233",\
                 "0.2862, 0.327, 0.4536, 0.6684, 0.9954, 1.467, 2.115, 2.955, 3.989, 5.228",\
                 "0.2862, 0.3278, 0.453, 0.6692, 0.9962, 1.467, 2.115, 2.955, 3.991, 5.227",\
                 "0.286, 0.3276, 0.4528, 0.67, 0.9942, 1.466, 2.115, 2.952, 3.988, 5.227",\
                 "0.288, 0.33, 0.4558, 0.67, 0.9948, 1.467, 2.116, 2.955, 3.99, 5.229",\
                 "0.3218, 0.3606, 0.479, 0.6848, 1.005, 1.471, 2.117, 2.951, 3.993, 5.237",\
                 "0.3764, 0.4182, 0.5368, 0.7342, 1.041, 1.493, 2.128, 2.958, 3.987, 5.229",\
                 "0.4328, 0.4776, 0.6024, 0.7932, 1.093, 1.531, 2.15, 2.968, 3.999, 5.231",\
                 "0.4886, 0.5388, 0.67, 0.8592, 1.148, 1.576, 2.18, 2.99, 4.006, 5.24",\
                 "0.542, 0.596, 0.736, 0.93, 1.21, 1.626, 2.212, 3.01, 4.018, 5.244");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.3904, 0.4682, 0.7304, 1.223, 2.031, 3.204, 4.763, 6.733, 9.143, 12.01",\
                 "0.3904, 0.4678, 0.728, 1.223, 2.031, 3.201, 4.763, 6.735, 9.134, 12",\
                 "0.3908, 0.4696, 0.7282, 1.225, 2.032, 3.201, 4.763, 6.735, 9.134, 12.01",\
                 "0.3914, 0.4686, 0.7282, 1.225, 2.032, 3.202, 4.763, 6.736, 9.131, 11.99",\
                 "0.402, 0.4784, 0.7336, 1.228, 2.033, 3.203, 4.766, 6.739, 9.15, 12.02",\
                 "0.4248, 0.5014, 0.7562, 1.243, 2.041, 3.206, 4.759, 6.735, 9.14, 12.02",\
                 "0.4518, 0.5272, 0.7788, 1.26, 2.055, 3.212, 4.767, 6.733, 9.137, 12.01",\
                 "0.484, 0.56, 0.8068, 1.281, 2.064, 3.219, 4.768, 6.737, 9.131, 12",\
                 "0.5238, 0.5996, 0.8396, 1.302, 2.074, 3.222, 4.777, 6.738, 9.136, 12",\
                 "0.566, 0.6424, 0.8778, 1.327, 2.088, 3.23, 4.774, 6.736, 9.136, 12");
        }
      }

      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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("1.048, 1.1, 1.241, 1.443, 1.7, 2.024, 2.431, 2.935, 3.547, 4.275",\
                 "1.078, 1.13, 1.271, 1.473, 1.73, 2.055, 2.461, 2.965, 3.577, 4.306",\
                 "1.2, 1.252, 1.393, 1.595, 1.852, 2.176, 2.583, 3.087, 3.699, 4.427",\
                 "1.439, 1.491, 1.632, 1.834, 2.092, 2.416, 2.822, 3.326, 3.938, 4.666",\
                 "1.816, 1.867, 2.009, 2.21, 2.468, 2.792, 3.199, 3.703, 4.315, 5.043",\
                 "2.32, 2.374, 2.52, 2.725, 2.985, 3.31, 3.717, 4.221, 4.833, 5.562",\
                 "2.879, 2.941, 3.103, 3.322, 3.591, 3.921, 4.33, 4.834, 5.446, 6.175",\
                 "3.474, 3.543, 3.724, 3.96, 4.242, 4.581, 4.995, 5.501, 6.113, 6.841",\
                 "4.107, 4.184, 4.383, 4.64, 4.937, 5.285, 5.705, 6.212, 6.827, 7.556",\
                 "4.783, 4.867, 5.083, 5.362, 5.674, 6.035, 6.459, 6.972, 7.586, 8.312");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("1.082, 1.157, 1.376, 1.73, 2.24, 2.939, 3.853, 5.003, 6.405, 8.077",\
                 "1.108, 1.183, 1.402, 1.756, 2.266, 2.965, 3.88, 5.03, 6.436, 8.112",\
                 "1.171, 1.246, 1.465, 1.819, 2.33, 3.028, 3.942, 5.093, 6.497, 8.173",\
                 "1.265, 1.34, 1.559, 1.913, 2.423, 3.122, 4.036, 5.186, 6.592, 8.265",\
                 "1.391, 1.467, 1.688, 2.043, 2.553, 3.252, 4.167, 5.317, 6.724, 8.393",\
                 "1.514, 1.594, 1.822, 2.183, 2.696, 3.395, 4.31, 5.462, 6.863, 8.54",\
                 "1.623, 1.706, 1.942, 2.309, 2.825, 3.526, 4.441, 5.592, 6.994, 8.667",\
                 "1.707, 1.794, 2.038, 2.412, 2.932, 3.634, 4.55, 5.701, 7.104, 8.777",\
                 "1.755, 1.847, 2.101, 2.484, 3.007, 3.711, 4.627, 5.777, 7.181, 8.852",\
                 "1.761, 1.859, 2.123, 2.515, 3.044, 3.749, 4.665, 5.816, 7.22, 8.892");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.2947, 0.336, 0.4614, 0.677, 1.001, 1.473, 2.117, 2.958, 3.995, 5.239",\
                 "0.2954, 0.336, 0.4612, 0.6758, 1.003, 1.473, 2.12, 2.958, 3.993, 5.232",\
                 "0.2952, 0.336, 0.461, 0.6756, 1.002, 1.473, 2.118, 2.958, 3.994, 5.239",\
                 "0.2956, 0.3358, 0.461, 0.677, 1.001, 1.473, 2.119, 2.958, 3.991, 5.234",\
                 "0.2954, 0.337, 0.4624, 0.6758, 1.003, 1.473, 2.12, 2.958, 3.996, 5.234",\
                 "0.3202, 0.3586, 0.4788, 0.6866, 1.007, 1.476, 2.121, 2.955, 3.995, 5.238",\
                 "0.3746, 0.415, 0.5316, 0.73, 1.039, 1.493, 2.129, 2.96, 3.997, 5.238",\
                 "0.43, 0.474, 0.5928, 0.7876, 1.088, 1.528, 2.152, 2.969, 4.001, 5.236",\
                 "0.4852, 0.5348, 0.6606, 0.8522, 1.14, 1.57, 2.178, 2.988, 4.01, 5.244",\
                 "0.54, 0.592, 0.728, 0.92, 1.198, 1.616, 2.208, 3.008, 4.016, 5.248");
        }

        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.002411, 0.007364, 0.01682, 0.03156, 0.05223, 0.07944, 0.1137, 0.1555, 0.2054");
          values("0.3908, 0.4696, 0.7282, 1.224, 2.031, 3.204, 4.761, 6.738, 9.143, 12.01",\
                 "0.3906, 0.4678, 0.7272, 1.225, 2.032, 3.201, 4.765, 6.728, 9.152, 12.03",\
                 "0.3902, 0.4694, 0.7284, 1.225, 2.031, 3.2, 4.762, 6.728, 9.15, 12.03",\
                 "0.3906, 0.4698, 0.7284, 1.225, 2.032, 3.204, 4.765, 6.738, 9.139, 11.99",\
                 "0.4008, 0.4784, 0.7334, 1.226, 2.033, 3.202, 4.765, 6.737, 9.151, 11.99",\
                 "0.4216, 0.4988, 0.7542, 1.24, 2.038, 3.204, 4.763, 6.733, 9.136, 12.02",\
                 "0.4442, 0.5226, 0.7768, 1.261, 2.05, 3.208, 4.766, 6.732, 9.144, 12.02",\
                 "0.4708, 0.5486, 0.802, 1.279, 2.063, 3.215, 4.766, 6.733, 9.132, 12",\
                 "0.501, 0.5824, 0.8332, 1.302, 2.075, 3.224, 4.772, 6.729, 9.132, 12",\
                 "0.5392, 0.6176, 0.8656, 1.326, 2.09, 3.232, 4.772, 6.734, 9.128, 11.99");
        }
      }
    }
  }

