/*
 * 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 : "2.65104e-05" ;
    }

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

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

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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "2.77668e-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.006984 ;
      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.01176, 0.01177, 0.01174, 0.01173, 0.01171, 0.01169, 0.01165, \
                 0.01159, 0.0115, 0.01136");
        }

        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.00347, -0.003478, -0.003471, -0.003473, -0.003489, -0.003487, \
                 -0.003489, -0.003486, -0.003485, -0.003487");
        }
      }

      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.006686, 0.006682, 0.006671, 0.006665, 0.006664, 0.006659, 0.006638, \
                 0.006613, 0.006579, 0.00652");
        }

        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.00349, -0.003495, -0.003494, -0.003495, -0.003507, -0.003507, \
                 -0.00351, -0.003507, -0.003504, -0.003508");
        }
      }

      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.006685, 0.006682, 0.006668, 0.006664, 0.006668, 0.006653, 0.006638, \
                 0.006613, 0.006577, 0.006517");
        }

        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.00349, -0.003494, -0.003493, -0.003495, -0.003508, -0.003506, \
                 -0.003508, -0.003507, -0.003505, -0.003508");
        }
      }
    }

    pin(A2) {
      capacitance : 0.007315 ;
      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.005298, 0.005294, 0.0053, 0.005294, 0.005295, 0.005271, 0.00524, \
                 0.005195, 0.005125, 0.005019");
        }

        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.004394, -0.004386, -0.004391, -0.004393, -0.004415, -0.00442, \
                 -0.004432, -0.004444, -0.004464, -0.00449");
        }
      }

      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.008534, 0.008522, 0.00852, 0.008509, 0.008524, 0.008523, 0.008529, \
                 0.008521, 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.007616, -0.007742, -0.007931, -0.008094, -0.008198, -0.008236, \
                 -0.008274, -0.008289, -0.008308, -0.008319");
        }
      }

      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.005714, 0.005705, 0.005706, 0.005719, 0.005734, 0.005735, 0.005736, \
                 0.005738, 0.005738, 0.005738");
        }

        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.006826, -0.006824, -0.006809, -0.006827, -0.006857, -0.00686, \
                 -0.006871, -0.006879, -0.006895, -0.00691");
        }
      }
    }

    pin(A3) {
      capacitance : 0.007787 ;
      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.008511, 0.008501, 0.008495, 0.008513, 0.008526, 0.00852, 0.008521, \
                 0.008525, 0.008522, 0.008523");
        }

        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.0077, -0.007822, -0.008015, -0.008125, -0.008215, -0.008254, \
                 -0.008278, -0.008303, -0.008313, -0.008325");
        }
      }

      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.008524, 0.008507, 0.008508, 0.00851, 0.00853, 0.008528, 0.008526, \
                 0.008523, 0.008522, 0.008519");
        }

        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.007193, -0.007309, -0.007504, -0.007719, -0.007891, -0.007984, \
                 -0.008046, -0.008091, -0.00812, -0.008148");
        }
      }

      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.008508, 0.008501, 0.008499, 0.008513, 0.008522, 0.008527, 0.008525, \
                 0.008524, 0.008521, 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.007704, -0.007823, -0.008015, -0.008127, -0.008212, -0.008253, \
                 -0.008281, -0.0083, -0.008313, -0.008324");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.127 ;
      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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("-0.0005472, -0.0005331, -0.0005235, -0.0004974, -0.0004928, -0.0004866, -0.0004856, -0.0004791, -0.0004763, -0.0004763",\
                 "-0.0006, -0.0005671, -0.000483, -0.0003843, -0.0003267, -0.0002727, -0.0002469, -0.0002298, -0.000215, -0.0002001",\
                 "-0.0009069, -0.0008444, -0.0006489, -0.0004203, -0.0002192, -8.101e-05, 2.002e-05, 7.604e-05, 0.0001277, 0.0001537",\
                 "-0.001337, -0.00127, -0.001029, -0.0007096, -0.0004023, -0.000164, 6.87e-06, 0.0001441, 0.0002263, 0.0002944",\
                 "-0.001602, -0.001539, -0.001348, -0.001055, -0.0007217, -0.0004188, -0.0001743, 1.517e-05, 0.0001495, 0.0002479",\
                 "-0.001592, -0.001567, -0.001458, -0.001243, -0.0009556, -0.0006574, -0.000386, -0.0001609, 3.748e-06, 0.0001427",\
                 "-0.001286, -0.00128, -0.001256, -0.001169, -0.000995, -0.0007691, -0.0005247, -0.0003029, -0.0001136, 4.033e-05",\
                 "-0.0006501, -0.0006773, -0.0007421, -0.0007833, -0.000761, -0.0006579, -0.0004976, -0.0003234, -0.0001593, -2.988e-06",\
                 "0.0002928, 0.0002372, 8.81e-05, -8.917e-05, -0.0002254, -0.000277, -0.0002537, -0.0001649, -5.893e-05, 4.899e-05",\
                 "0.001549, 0.001469, 0.001236, 0.0009175, 0.000623, 0.0004017, 0.0002749, 0.0002356, 0.0002367, 0.000267");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.03243, 0.03244, 0.03247, 0.03253, 0.03259, 0.03266, 0.03273, 0.03279, 0.03306, 0.03493",\
                 "0.03198, 0.03202, 0.03216, 0.03231, 0.03243, 0.03255, 0.03266, 0.03276, 0.03302, 0.03495",\
                 "0.0313, 0.03135, 0.0315, 0.03174, 0.03197, 0.03219, 0.03239, 0.03256, 0.03289, 0.035",\
                 "0.031, 0.03103, 0.03112, 0.03131, 0.03155, 0.03179, 0.03203, 0.03226, 0.03267, 0.03514",\
                 "0.03104, 0.03105, 0.03107, 0.03116, 0.03132, 0.03148, 0.03174, 0.03195, 0.03248, 0.03569",\
                 "0.0313, 0.03129, 0.03127, 0.03129, 0.03135, 0.03144, 0.03159, 0.03181, 0.03248, 0.03668",\
                 "0.03182, 0.03179, 0.03171, 0.03163, 0.0316, 0.03158, 0.03167, 0.03178, 0.0329, 0.03909",\
                 "0.03257, 0.03254, 0.03238, 0.03218, 0.03205, 0.03198, 0.0319, 0.03207, 0.03396, 0.04442",\
                 "0.03359, 0.03353, 0.03331, 0.03303, 0.03275, 0.03253, 0.03244, 0.03276, 0.03701, 0.05594",\
                 "0.03489, 0.03481, 0.03457, 0.03414, 0.03371, 0.03333, 0.03324, 0.03496, 0.04605, 0.07864");
        }
      }

      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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.004839, 0.004845, 0.004845, 0.004853, 0.004859, 0.004856, 0.004859, 0.004862, 0.00487, 0.004867",\
                 "0.004822, 0.004816, 0.004815, 0.004836, 0.004843, 0.004859, 0.00486, 0.004858, 0.004865, 0.00486",\
                 "0.004574, 0.004589, 0.004636, 0.004688, 0.00474, 0.004757, 0.00478, 0.004806, 0.004827, 0.004824",\
                 "0.004109, 0.004147, 0.004232, 0.004358, 0.004471, 0.004571, 0.004646, 0.00468, 0.00472, 0.004743",\
                 "0.003761, 0.003785, 0.003873, 0.004022, 0.004169, 0.004327, 0.00443, 0.004531, 0.004596, 0.00464",\
                 "0.003636, 0.003654, 0.003712, 0.003826, 0.003963, 0.004124, 0.004273, 0.004379, 0.004463, 0.004535",\
                 "0.003831, 0.00383, 0.003848, 0.003886, 0.003958, 0.004082, 0.004187, 0.004298, 0.00439, 0.004463",\
                 "0.004338, 0.004313, 0.004261, 0.004215, 0.004193, 0.004211, 0.004265, 0.004322, 0.004402, 0.004461",\
                 "0.005176, 0.005136, 0.00501, 0.004852, 0.004713, 0.004608, 0.004547, 0.004542, 0.004547, 0.004575",\
                 "0.006339, 0.006269, 0.006081, 0.005817, 0.00552, 0.00528, 0.005085, 0.004954, 0.004882, 0.004828");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.03758, 0.03758, 0.03761, 0.03766, 0.03772, 0.03777, 0.03784, 0.03791, 0.03817, 0.04013",\
                 "0.03728, 0.0373, 0.03738, 0.03749, 0.03759, 0.03768, 0.03777, 0.03787, 0.03813, 0.04016",\
                 "0.03681, 0.03686, 0.03695, 0.03711, 0.03729, 0.03746, 0.03761, 0.03775, 0.03804, 0.04028",\
                 "0.03654, 0.03656, 0.03665, 0.03679, 0.03697, 0.03716, 0.03735, 0.03752, 0.03791, 0.04052",\
                 "0.0364, 0.03642, 0.03648, 0.03658, 0.03674, 0.03691, 0.0371, 0.0373, 0.03781, 0.04104",\
                 "0.03633, 0.03635, 0.03642, 0.03649, 0.0366, 0.03676, 0.0369, 0.03712, 0.03781, 0.04211",\
                 "0.03636, 0.03635, 0.0364, 0.03646, 0.03658, 0.03667, 0.03681, 0.03703, 0.03805, 0.04442",\
                 "0.03657, 0.03655, 0.03653, 0.03654, 0.0366, 0.03674, 0.0368, 0.03704, 0.03896, 0.04923",\
                 "0.03699, 0.03698, 0.03693, 0.03685, 0.03679, 0.03686, 0.03701, 0.03743, 0.04147, 0.05947",\
                 "0.03777, 0.03772, 0.03761, 0.03744, 0.0373, 0.03717, 0.03735, 0.0389, 0.04879, 0.07953");
        }
      }

      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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.009863, 0.009855, 0.009848, 0.00985, 0.009829, 0.009829, 0.009837, 0.009835, 0.009848, 0.009847",\
                 "0.009541, 0.009532, 0.009532, 0.009525, 0.009519, 0.009526, 0.009516, 0.009533, 0.009524, 0.009524",\
                 "0.009039, 0.00904, 0.00904, 0.00905, 0.009047, 0.009057, 0.009045, 0.009054, 0.009045, 0.009048",\
                 "0.00862, 0.008631, 0.008645, 0.008679, 0.008697, 0.008737, 0.008764, 0.00875, 0.008765, 0.008751",\
                 "0.008338, 0.008354, 0.008378, 0.008403, 0.008457, 0.008505, 0.008546, 0.008572, 0.008589, 0.008594",\
                 "0.008268, 0.008258, 0.008276, 0.00831, 0.00833, 0.008385, 0.008415, 0.008453, 0.008471, 0.008498",\
                 "0.008444, 0.008435, 0.00842, 0.008383, 0.008399, 0.008398, 0.008406, 0.008431, 0.008434, 0.008448",\
                 "0.008917, 0.008898, 0.008838, 0.008752, 0.008656, 0.008584, 0.008553, 0.008523, 0.008504, 0.008489",\
                 "0.009719, 0.009669, 0.00954, 0.009392, 0.009188, 0.009026, 0.008876, 0.008793, 0.008701, 0.00864",\
                 "0.01083, 0.01077, 0.01059, 0.01031, 0.01001, 0.009705, 0.009432, 0.009248, 0.009076, 0.008948");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.0425, 0.04251, 0.04253, 0.04258, 0.04263, 0.04267, 0.04274, 0.0428, 0.04306, 0.04511",\
                 "0.04218, 0.04221, 0.04227, 0.04238, 0.04249, 0.04258, 0.04268, 0.04277, 0.04304, 0.04516",\
                 "0.04169, 0.04172, 0.04183, 0.042, 0.04217, 0.04235, 0.04248, 0.04263, 0.04295, 0.04525",\
                 "0.04143, 0.04146, 0.04153, 0.04167, 0.04185, 0.04204, 0.04223, 0.04241, 0.04282, 0.04549",\
                 "0.04129, 0.04132, 0.04137, 0.04148, 0.04162, 0.0418, 0.042, 0.0422, 0.04272, 0.04601",\
                 "0.0412, 0.04121, 0.04129, 0.04136, 0.04148, 0.04162, 0.04178, 0.042, 0.0427, 0.04704",\
                 "0.04116, 0.04116, 0.04119, 0.04129, 0.04143, 0.04154, 0.04169, 0.04189, 0.04293, 0.04921",\
                 "0.04124, 0.04121, 0.04123, 0.04126, 0.04135, 0.04152, 0.04162, 0.04186, 0.04369, 0.05358",\
                 "0.04147, 0.04147, 0.04143, 0.04141, 0.0414, 0.04151, 0.04171, 0.04214, 0.04578, 0.06258",\
                 "0.04196, 0.04193, 0.04187, 0.04179, 0.04172, 0.04167, 0.04185, 0.04326, 0.05177, 0.08023");
        }
      }

      timing() {
        related_pin : "A1" ;
        timing_sense : negative_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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.1424, 0.1523, 0.1867, 0.2526, 0.3547, 0.4979, 0.686, 0.9235, 1.213, 1.558",\
                 "0.1717, 0.1817, 0.2168, 0.2828, 0.3856, 0.5288, 0.7173, 0.9548, 1.245, 1.59",\
                 "0.2693, 0.2812, 0.3195, 0.387, 0.4903, 0.6344, 0.8234, 1.061, 1.351, 1.697",\
                 "0.3765, 0.3955, 0.4569, 0.5559, 0.6828, 0.8331, 1.022, 1.26, 1.55, 1.896",\
                 "0.4596, 0.4872, 0.5741, 0.7143, 0.893, 1.098, 1.323, 1.57, 1.86, 2.206",\
                 "0.5141, 0.5498, 0.6638, 0.848, 1.082, 1.352, 1.646, 1.959, 2.287, 2.641",\
                 "0.5363, 0.5806, 0.7219, 0.9508, 1.245, 1.581, 1.949, 2.339, 2.748, 3.173",\
                 "0.5221, 0.575, 0.7451, 1.021, 1.374, 1.782, 2.227, 2.699, 3.192, 3.703",\
                 "0.47, 0.5314, 0.7295, 1.053, 1.469, 1.949, 2.474, 3.031, 3.612, 4.214",\
                 "0.3782, 0.448, 0.6743, 1.046, 1.524, 2.079, 2.685, 3.331, 4.003, 4.699");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.55, 0.5964, 0.759, 1.068, 1.549, 2.222, 3.107, 4.223, 5.584, 7.207",\
                 "0.5637, 0.6109, 0.7758, 1.088, 1.571, 2.246, 3.134, 4.252, 5.611, 7.234",\
                 "0.6462, 0.6936, 0.8592, 1.174, 1.661, 2.339, 3.228, 4.346, 5.71, 7.334",\
                 "0.844, 0.8892, 1.051, 1.364, 1.85, 2.529, 3.421, 4.54, 5.905, 7.532",\
                 "1.146, 1.199, 1.371, 1.678, 2.16, 2.837, 3.728, 4.848, 6.214, 7.841",\
                 "1.48, 1.546, 1.759, 2.118, 2.609, 3.282, 4.17, 5.288, 6.653, 8.279",\
                 "1.843, 1.921, 2.177, 2.606, 3.178, 3.875, 4.759, 5.874, 7.239, 8.863",\
                 "2.235, 2.327, 2.625, 3.125, 3.791, 4.588, 5.507, 6.621, 7.98, 9.604",\
                 "2.665, 2.768, 3.107, 3.678, 4.439, 5.347, 6.381, 7.533, 8.894, 10.52",\
                 "3.136, 3.251, 3.63, 4.268, 5.12, 6.145, 7.304, 8.583, 9.984, 11.6");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.1782, 0.1949, 0.2538, 0.3661, 0.541, 0.7868, 1.111, 1.515, 2.013, 2.61",\
                 "0.1784, 0.1948, 0.2537, 0.366, 0.5411, 0.7873, 1.111, 1.518, 2.016, 2.61",\
                 "0.2148, 0.2266, 0.2706, 0.3698, 0.5408, 0.787, 1.111, 1.519, 2.016, 2.611",\
                 "0.346, 0.3619, 0.4151, 0.501, 0.6202, 0.8124, 1.113, 1.517, 2.016, 2.61",\
                 "0.5006, 0.5226, 0.5938, 0.71, 0.8606, 1.038, 1.255, 1.574, 2.025, 2.607",\
                 "0.6722, 0.7016, 0.7942, 0.9448, 1.137, 1.361, 1.61, 1.882, 2.223, 2.699",\
                 "0.8602, 0.895, 1.011, 1.2, 1.437, 1.715, 2.017, 2.348, 2.695, 3.077",\
                 "1.058, 1.101, 1.244, 1.47, 1.761, 2.091, 2.454, 2.842, 3.256, 3.687",\
                 "1.263, 1.317, 1.487, 1.764, 2.1, 2.493, 2.921, 3.371, 3.849, 4.35",\
                 "1.482, 1.542, 1.739, 2.059, 2.459, 2.911, 3.405, 3.929, 4.482, 5.048");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.8443, 0.9216, 1.194, 1.706, 2.505, 3.622, 5.093, 6.944, 9.201, 11.9",\
                 "0.843, 0.9212, 1.192, 1.709, 2.505, 3.622, 5.093, 6.944, 9.202, 11.89",\
                 "0.8364, 0.9161, 1.193, 1.708, 2.503, 3.623, 5.093, 6.941, 9.203, 11.89",\
                 "0.8282, 0.9024, 1.18, 1.704, 2.508, 3.625, 5.093, 6.943, 9.202, 11.9",\
                 "0.9836, 1.038, 1.25, 1.707, 2.501, 3.622, 5.096, 6.945, 9.203, 11.9",\
                 "1.214, 1.279, 1.501, 1.891, 2.554, 3.625, 5.093, 6.948, 9.202, 11.9",\
                 "1.469, 1.547, 1.803, 2.226, 2.828, 3.737, 5.106, 6.943, 9.215, 11.9",\
                 "1.728, 1.818, 2.114, 2.602, 3.26, 4.098, 5.282, 6.98, 9.202, 11.9",\
                 "1.989, 2.095, 2.432, 2.993, 3.731, 4.63, 5.722, 7.214, 9.264, 11.91",\
                 "2.252, 2.372, 2.756, 3.39, 4.222, 5.214, 6.368, 7.74, 9.568, 12");
        }
      }

      timing() {
        related_pin : "A2" ;
        timing_sense : negative_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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.1831, 0.1939, 0.231, 0.3003, 0.4057, 0.5516, 0.7419, 0.9807, 1.271, 1.617",\
                 "0.2126, 0.2234, 0.2606, 0.3297, 0.4352, 0.581, 0.7714, 1.01, 1.301, 1.647",\
                 "0.3169, 0.3276, 0.3644, 0.4332, 0.5386, 0.6846, 0.8751, 1.114, 1.405, 1.751",\
                 "0.4606, 0.4767, 0.5297, 0.6182, 0.7356, 0.883, 1.073, 1.312, 1.603, 1.949",\
                 "0.5861, 0.6087, 0.683, 0.8069, 0.9706, 1.164, 1.379, 1.622, 1.912, 2.259",\
                 "0.6853, 0.7151, 0.8124, 0.9743, 1.188, 1.44, 1.72, 2.023, 2.343, 2.695",\
                 "0.7542, 0.7913, 0.912, 1.114, 1.38, 1.695, 2.045, 2.421, 2.819, 3.234",\
                 "0.7902, 0.8343, 0.9786, 1.221, 1.543, 1.923, 2.346, 2.8, 3.279, 3.78",\
                 "0.7894, 0.8405, 1.01, 1.293, 1.671, 2.118, 2.616, 3.152, 3.717, 4.306",\
                 "0.7486, 0.8077, 1.001, 1.328, 1.762, 2.277, 2.853, 3.472, 4.127, 4.808");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.7589, 0.8052, 0.9675, 1.276, 1.756, 2.429, 3.315, 4.43, 5.795, 7.415",\
                 "0.7788, 0.8257, 0.9896, 1.3, 1.782, 2.456, 3.342, 4.458, 5.82, 7.446",\
                 "0.8728, 0.9197, 1.085, 1.397, 1.881, 2.558, 3.446, 4.563, 5.926, 7.549",\
                 "1.054, 1.101, 1.265, 1.578, 2.062, 2.739, 3.629, 4.749, 6.111, 7.736",\
                 "1.308, 1.36, 1.533, 1.848, 2.332, 3.01, 3.9, 5.018, 6.386, 8.009",\
                 "1.603, 1.661, 1.858, 2.208, 2.708, 3.385, 4.275, 5.394, 6.759, 8.385",\
                 "1.937, 2.004, 2.229, 2.619, 3.171, 3.879, 4.771, 5.89, 7.256, 8.881",\
                 "2.3, 2.378, 2.638, 3.078, 3.689, 4.461, 5.393, 6.517, 7.883, 9.508",\
                 "2.69, 2.781, 3.08, 3.58, 4.258, 5.101, 6.107, 7.279, 8.651, 10.28",\
                 "3.116, 3.219, 3.556, 4.119, 4.876, 5.796, 6.884, 8.136, 9.561, 11.2");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.2228, 0.2397, 0.298, 0.41, 0.5842, 0.8286, 1.15, 1.555, 2.05, 2.643",\
                 "0.2209, 0.2389, 0.2975, 0.4097, 0.5839, 0.8275, 1.15, 1.556, 2.052, 2.644",\
                 "0.2293, 0.2443, 0.2977, 0.4081, 0.5832, 0.8286, 1.15, 1.556, 2.051, 2.644",\
                 "0.3484, 0.3648, 0.4168, 0.5022, 0.6312, 0.8402, 1.151, 1.556, 2.052, 2.642",\
                 "0.494, 0.5168, 0.5878, 0.7048, 0.8564, 1.035, 1.263, 1.598, 2.058, 2.642",\
                 "0.6578, 0.687, 0.7788, 0.9326, 1.125, 1.351, 1.604, 1.879, 2.234, 2.721",\
                 "0.832, 0.8686, 0.9864, 1.178, 1.417, 1.698, 2.005, 2.336, 2.687, 3.077",\
                 "1.018, 1.064, 1.208, 1.439, 1.731, 2.067, 2.435, 2.826, 3.243, 3.676",\
                 "1.215, 1.268, 1.438, 1.711, 2.061, 2.457, 2.889, 3.349, 3.831, 4.333",\
                 "1.416, 1.48, 1.68, 2, 2.403, 2.868, 3.371, 3.901, 4.452, 5.026");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.8493, 0.926, 1.194, 1.706, 2.503, 3.623, 5.092, 6.943, 9.205, 11.89",\
                 "0.8479, 0.9257, 1.195, 1.707, 2.504, 3.623, 5.093, 6.943, 9.202, 11.9",\
                 "0.849, 0.9261, 1.195, 1.707, 2.503, 3.622, 5.093, 6.943, 9.205, 11.9",\
                 "0.8568, 0.9296, 1.195, 1.707, 2.505, 3.622, 5.093, 6.944, 9.2, 11.89",\
                 "0.949, 1.016, 1.251, 1.724, 2.505, 3.621, 5.093, 6.942, 9.206, 11.9",\
                 "1.088, 1.16, 1.407, 1.852, 2.562, 3.631, 5.092, 6.944, 9.206, 11.89",\
                 "1.266, 1.341, 1.597, 2.063, 2.755, 3.733, 5.118, 6.952, 9.205, 11.9",\
                 "1.486, 1.567, 1.831, 2.311, 3.027, 3.986, 5.268, 6.995, 9.208, 11.9",\
                 "1.74, 1.825, 2.108, 2.609, 3.344, 4.33, 5.576, 7.19, 9.284, 11.92",\
                 "2.01, 2.105, 2.418, 2.948, 3.706, 4.72, 5.998, 7.56, 9.528, 12.01");
        }
      }

      timing() {
        related_pin : "A3" ;
        timing_sense : negative_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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.1907, 0.2027, 0.244, 0.3193, 0.4317, 0.584, 0.7799, 1.023, 1.317, 1.666",\
                 "0.2198, 0.2317, 0.2725, 0.3475, 0.4595, 0.6116, 0.8075, 1.051, 1.345, 1.693",\
                 "0.3283, 0.3396, 0.3782, 0.4509, 0.5615, 0.7131, 0.9087, 1.152, 1.446, 1.794",\
                 "0.4923, 0.5082, 0.5599, 0.6468, 0.7624, 0.9119, 1.106, 1.349, 1.643, 1.991",\
                 "0.6455, 0.6672, 0.7381, 0.8575, 1.016, 1.204, 1.416, 1.66, 1.952, 2.301",\
                 "0.7775, 0.8049, 0.8965, 1.051, 1.256, 1.5, 1.773, 2.07, 2.385, 2.737",\
                 "0.881, 0.9156, 1.029, 1.219, 1.473, 1.776, 2.116, 2.483, 2.875, 3.284",\
                 "0.9541, 0.9948, 1.129, 1.357, 1.663, 2.027, 2.436, 2.879, 3.349, 3.842",\
                 "0.9916, 1.039, 1.195, 1.461, 1.818, 2.247, 2.728, 3.25, 3.803, 4.382",\
                 "0.9923, 1.045, 1.225, 1.53, 1.939, 2.432, 2.988, 3.589, 4.23, 4.898");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.8302, 0.8763, 1.039, 1.347, 1.827, 2.501, 3.386, 4.502, 5.863, 7.486",\
                 "0.8577, 0.9046, 1.068, 1.379, 1.861, 2.535, 3.421, 4.537, 5.899, 7.522",\
                 "0.9619, 1.009, 1.174, 1.486, 1.971, 2.647, 3.535, 4.652, 6.015, 7.639",\
                 "1.144, 1.191, 1.355, 1.668, 2.151, 2.829, 3.719, 4.839, 6.201, 7.826",\
                 "1.391, 1.44, 1.608, 1.92, 2.403, 3.08, 3.97, 5.089, 6.457, 8.079",\
                 "1.665, 1.72, 1.905, 2.241, 2.734, 3.411, 4.3, 5.419, 6.783, 8.41",\
                 "1.966, 2.026, 2.23, 2.596, 3.129, 3.83, 4.721, 5.84, 7.206, 8.83",\
                 "2.294, 2.36, 2.584, 2.983, 3.559, 4.31, 5.238, 6.361, 7.726, 9.351",\
                 "2.648, 2.722, 2.969, 3.405, 4.027, 4.83, 5.816, 6.986, 8.36, 9.986",\
                 "3.031, 3.114, 3.389, 3.865, 4.535, 5.394, 6.441, 7.676, 9.102, 10.74");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.263, 0.2817, 0.3449, 0.4603, 0.6387, 0.8835, 1.203, 1.607, 2.101, 2.691",\
                 "0.2588, 0.2773, 0.341, 0.4591, 0.6369, 0.8818, 1.204, 1.607, 2.101, 2.691",\
                 "0.2556, 0.272, 0.332, 0.4506, 0.6318, 0.8782, 1.202, 1.607, 2.101, 2.69",\
                 "0.3757, 0.3913, 0.4424, 0.5254, 0.6612, 0.8794, 1.197, 1.605, 2.1, 2.69",\
                 "0.5246, 0.5462, 0.6156, 0.7292, 0.878, 1.053, 1.289, 1.632, 2.103, 2.69",\
                 "0.6884, 0.717, 0.8058, 0.9528, 1.144, 1.37, 1.616, 1.894, 2.256, 2.751",\
                 "0.8646, 0.9008, 1.014, 1.198, 1.433, 1.709, 2.015, 2.344, 2.693, 3.09",\
                 "1.049, 1.092, 1.23, 1.455, 1.741, 2.076, 2.44, 2.831, 3.247, 3.678",\
                 "1.247, 1.297, 1.459, 1.725, 2.073, 2.466, 2.892, 3.351, 3.829, 4.337",\
                 "1.448, 1.508, 1.697, 2.008, 2.404, 2.867, 3.364, 3.894, 4.442, 5.026");
        }

        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.001869, 0.004922, 0.01075, 0.01983, 0.03257, 0.04934, 0.07046, 0.09624, 0.127");
          values("0.8494, 0.9245, 1.194, 1.707, 2.503, 3.624, 5.091, 6.942, 9.203, 11.89",\
                 "0.8479, 0.9248, 1.195, 1.708, 2.503, 3.623, 5.092, 6.942, 9.207, 11.89",\
                 "0.8478, 0.9244, 1.195, 1.707, 2.504, 3.623, 5.093, 6.942, 9.207, 11.89",\
                 "0.8512, 0.9282, 1.194, 1.707, 2.505, 3.622, 5.093, 6.943, 9.199, 11.9",\
                 "0.906, 0.9758, 1.224, 1.716, 2.503, 3.622, 5.093, 6.943, 9.205, 11.9",\
                 "1.01, 1.084, 1.341, 1.804, 2.541, 3.628, 5.094, 6.943, 9.201, 11.9",\
                 "1.121, 1.202, 1.475, 1.966, 2.695, 3.711, 5.114, 6.949, 9.207, 11.89",\
                 "1.255, 1.337, 1.622, 2.142, 2.905, 3.921, 5.245, 6.993, 9.211, 11.9",\
                 "1.416, 1.503, 1.797, 2.335, 3.129, 4.188, 5.512, 7.176, 9.294, 11.91",\
                 "1.617, 1.704, 2.004, 2.554, 3.376, 4.474, 5.844, 7.5, 9.522, 12.04");
        }
      }
    }
  }

