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

  cell(gf180mcu_fd_sc_mcu7t5v0__nor3_1) {
    area : 17.561600 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.008597, 0.008604, 0.008583, 0.008573, 0.008558, 0.008551, 0.008532, \
                  0.00851, 0.008474, 0.008426");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.001985, -0.001987, -0.001985, -0.00199, -0.00199, -0.001994, \
                  -0.001997, -0.001995, -0.001995, -0.001996");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.004792, 0.004787, 0.004777, 0.004772, 0.004765, 0.004764, 0.004757, \
                  0.004747, 0.004732, 0.00471");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.002, -0.002003, -0.002004, -0.002005, -0.002004, -0.002009, \
                  -0.002011, -0.002009, -0.002009, -0.00201");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.004739, 0.00473, 0.004722, 0.004722, 0.004713, 0.004714, 0.004707, \
                  0.004696, 0.00468, 0.004659");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.001999, -0.002001, -0.002001, -0.002003, -0.002003, -0.002008, \
                  -0.00201, -0.002009, -0.00201, -0.00201");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.003594, 0.003595, 0.003592, 0.003598, 0.003589, 0.003586, 0.003571, \
                  0.003553, 0.003526, 0.003488");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.00252, -0.002518, -0.002521, -0.002525, -0.002529, -0.002537, \
                  -0.002544, -0.002548, -0.002555, -0.002566");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.005813, 0.005809, 0.005808, 0.005804, 0.005802, 0.005808, 0.005808, \
                  0.005809, 0.005808, 0.005807");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.004623, -0.004791, -0.005225, -0.005503, -0.005597, -0.005652, \
                  -0.005669, -0.005687, -0.005694, -0.005704");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.003698, 0.003694, 0.003694, 0.003695, 0.003698, 0.003705, 0.003707, \
                  0.003709, 0.003707, 0.003709");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.003828, -0.003804, -0.003804, -0.003811, -0.003802, -0.003809, \
                  -0.003812, -0.003812, -0.003818, -0.003834");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.005805, 0.005795, 0.005802, 0.005793, 0.005791, 0.005804, 0.005806, \
                  0.005804, 0.005806, 0.005802");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.005211, -0.005364, -0.005501, -0.005559, -0.005597, -0.005638, \
                  -0.005659, -0.005673, -0.005681, -0.005689");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.005932, 0.005919, 0.005921, 0.005917, 0.005914, 0.005925, 0.005922, \
                  0.005924, 0.005926, 0.005927");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.004823, -0.004937, -0.005132, -0.005304, -0.005409, -0.005487, \
                  -0.005528, -0.005558, -0.005579, -0.005595");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.005795, 0.005773, 0.005791, 0.00578, 0.005774, 0.005786, 0.005791, \
                  0.005789, 0.005788, 0.005788");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.005371, -0.005424, -0.005514, -0.005561, -0.005597, -0.005641, \
                  -0.00566, -0.005672, -0.00568, -0.005689");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.07048 ;
      max_transition : 8.9 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.0009783, 0.0009912, 0.001016, 0.001043, 0.001057, 0.001061, 0.00107, 0.001073, 0.001076, 0.001079",\
                 "0.001002, 0.001023, 0.001084, 0.001161, 0.001218, 0.001251, 0.001281, 0.001294, 0.001307, 0.001314",\
                 "0.001191, 0.00122, 0.001287, 0.001369, 0.001466, 0.001525, 0.001567, 0.001606, 0.00163, 0.001644",\
                 "0.001783, 0.001782, 0.001798, 0.001814, 0.001845, 0.001859, 0.001876, 0.001884, 0.001891, 0.001896",\
                 "0.003014, 0.002981, 0.002884, 0.002781, 0.002658, 0.002555, 0.002465, 0.002387, 0.00233, 0.002276",\
                 "0.005153, 0.005072, 0.004845, 0.004526, 0.004182, 0.003881, 0.003609, 0.003384, 0.003188, 0.003018",\
                 "0.008348, 0.008229, 0.007847, 0.007288, 0.006662, 0.006065, 0.005546, 0.005077, 0.004676, 0.004333",\
                 "0.0127, 0.01254, 0.01201, 0.01121, 0.01026, 0.009306, 0.008438, 0.007672, 0.006994, 0.006399",\
                 "0.01828, 0.01807, 0.01741, 0.01636, 0.01508, 0.01374, 0.01247, 0.01132, 0.0103, 0.00938",\
                 "0.02511, 0.02487, 0.02408, 0.02279, 0.02118, 0.01946, 0.01775, 0.01616, 0.01472, 0.01344");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.01881, 0.01883, 0.01887, 0.01891, 0.01897, 0.01902, 0.01908, 0.01918, 0.01919, 0.01952",\
                 "0.01852, 0.01855, 0.01863, 0.01874, 0.01884, 0.01893, 0.01901, 0.01913, 0.01917, 0.01953",\
                 "0.01834, 0.01835, 0.01841, 0.01851, 0.01864, 0.01875, 0.01887, 0.01902, 0.01909, 0.01949",\
                 "0.01904, 0.019, 0.01893, 0.01886, 0.01884, 0.01886, 0.01892, 0.019, 0.01909, 0.01951",\
                 "0.02073, 0.02065, 0.02044, 0.02014, 0.01986, 0.01964, 0.0195, 0.01943, 0.01945, 0.01987",\
                 "0.02344, 0.02332, 0.02297, 0.02247, 0.02189, 0.02135, 0.0209, 0.02057, 0.02038, 0.02075",\
                 "0.02728, 0.02711, 0.0266, 0.02585, 0.02501, 0.02414, 0.02333, 0.02267, 0.02221, 0.02251",\
                 "0.03235, 0.03213, 0.03146, 0.03044, 0.02928, 0.02809, 0.02695, 0.02586, 0.02505, 0.02537",\
                 "0.03877, 0.03849, 0.03764, 0.03634, 0.03484, 0.03328, 0.0318, 0.03033, 0.02923, 0.02986",\
                 "0.04659, 0.04627, 0.04526, 0.04366, 0.04179, 0.03982, 0.03788, 0.03609, 0.03497, 0.03666");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.005428, 0.005423, 0.005424, 0.005427, 0.005434, 0.005438, 0.005441, 0.005448, 0.005446, 0.005449",\
                 "0.005399, 0.005404, 0.005407, 0.005415, 0.005413, 0.005424, 0.005427, 0.005427, 0.005431, 0.005429",\
                 "0.005362, 0.005364, 0.005373, 0.005382, 0.005378, 0.005399, 0.005406, 0.005411, 0.005412, 0.005413",\
                 "0.005652, 0.005642, 0.005619, 0.005599, 0.005567, 0.005542, 0.00551, 0.005491, 0.005477, 0.005467",\
                 "0.006735, 0.006698, 0.006595, 0.006438, 0.006282, 0.006138, 0.006009, 0.005905, 0.00582, 0.00575",\
                 "0.00888, 0.008809, 0.008573, 0.008233, 0.00786, 0.007489, 0.007169, 0.006892, 0.006665, 0.006466",\
                 "0.01225, 0.01213, 0.01176, 0.01118, 0.01051, 0.009853, 0.009232, 0.008689, 0.008223, 0.007833",\
                 "0.01693, 0.01677, 0.01624, 0.01542, 0.01443, 0.01339, 0.01242, 0.01152, 0.01073, 0.01004",\
                 "0.02298, 0.02277, 0.02212, 0.02104, 0.0197, 0.01825, 0.01684, 0.01554, 0.01435, 0.01329",\
                 "0.03046, 0.03023, 0.02943, 0.0281, 0.02641, 0.02456, 0.02269, 0.0209, 0.01926, 0.01775");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.02289, 0.0229, 0.02293, 0.02296, 0.02301, 0.02304, 0.02309, 0.02318, 0.02323, 0.02357",\
                 "0.02266, 0.02267, 0.02274, 0.02283, 0.0229, 0.02297, 0.02304, 0.02314, 0.02323, 0.02359",\
                 "0.02229, 0.02232, 0.0224, 0.02253, 0.02267, 0.02281, 0.02292, 0.02301, 0.02315, 0.02353",\
                 "0.02224, 0.02224, 0.02228, 0.02236, 0.02248, 0.02261, 0.02274, 0.02286, 0.023, 0.02346",\
                 "0.02305, 0.02301, 0.02295, 0.02288, 0.02283, 0.02284, 0.02287, 0.02296, 0.02306, 0.0236",\
                 "0.02527, 0.02519, 0.02493, 0.02459, 0.02428, 0.02399, 0.02377, 0.02368, 0.02363, 0.02414",\
                 "0.02918, 0.02903, 0.02853, 0.02784, 0.02715, 0.02648, 0.02591, 0.02543, 0.02514, 0.02558",\
                 "0.03468, 0.03446, 0.03375, 0.03271, 0.03152, 0.03043, 0.02941, 0.02852, 0.02778, 0.02821",\
                 "0.04175, 0.04147, 0.04057, 0.03919, 0.03755, 0.03592, 0.03445, 0.03308, 0.03202, 0.03258",\
                 "0.05042, 0.05009, 0.04901, 0.04728, 0.04522, 0.04309, 0.04098, 0.0392, 0.03792, 0.03922");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.009238, 0.009235, 0.00924, 0.009232, 0.009239, 0.009231, 0.009234, 0.009242, 0.009242, 0.00924",\
                 "0.00896, 0.008961, 0.008958, 0.00895, 0.008953, 0.008944, 0.008946, 0.008961, 0.008955, 0.008954",\
                 "0.00864, 0.008633, 0.008627, 0.008609, 0.008601, 0.008603, 0.008591, 0.008593, 0.00859, 0.008587",\
                 "0.008761, 0.008747, 0.008713, 0.008662, 0.008608, 0.008565, 0.008522, 0.0085, 0.008471, 0.00845",\
                 "0.009796, 0.009747, 0.009624, 0.009426, 0.009248, 0.009077, 0.008924, 0.008809, 0.008713, 0.008627",\
                 "0.01209, 0.012, 0.01173, 0.01132, 0.01088, 0.01045, 0.01008, 0.009773, 0.009518, 0.009309",\
                 "0.01586, 0.01573, 0.01528, 0.0146, 0.0138, 0.01301, 0.01228, 0.01166, 0.01114, 0.0107",\
                 "0.02124, 0.02105, 0.02042, 0.01941, 0.01822, 0.01697, 0.0158, 0.01474, 0.01383, 0.01305",\
                 "0.02831, 0.02807, 0.02725, 0.02591, 0.02426, 0.02253, 0.02082, 0.01925, 0.01783, 0.0166",\
                 "0.03713, 0.03683, 0.03585, 0.0342, 0.0321, 0.02981, 0.02753, 0.02534, 0.02337, 0.02159");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.02686, 0.02688, 0.02691, 0.02695, 0.02699, 0.02703, 0.02709, 0.02714, 0.02723, 0.02755",\
                 "0.02664, 0.02667, 0.02673, 0.0268, 0.02689, 0.02696, 0.02703, 0.02711, 0.02721, 0.02756",\
                 "0.02626, 0.02629, 0.02637, 0.0265, 0.02664, 0.02677, 0.02689, 0.02698, 0.02709, 0.02756",\
                 "0.02608, 0.0261, 0.02616, 0.02626, 0.02639, 0.02654, 0.02667, 0.02681, 0.02696, 0.02742",\
                 "0.02646, 0.02645, 0.02645, 0.02645, 0.02648, 0.02655, 0.02664, 0.02678, 0.0269, 0.02747",\
                 "0.02818, 0.02813, 0.02796, 0.02775, 0.02754, 0.0274, 0.0273, 0.02727, 0.0273, 0.02788",\
                 "0.03195, 0.0318, 0.03135, 0.03076, 0.03018, 0.02967, 0.02921, 0.02884, 0.02863, 0.02913",\
                 "0.03793, 0.03769, 0.03697, 0.0359, 0.03476, 0.03371, 0.03281, 0.03197, 0.03139, 0.03179",\
                 "0.04609, 0.04579, 0.04481, 0.04327, 0.0415, 0.0398, 0.0383, 0.03697, 0.03591, 0.03636",\
                 "0.05633, 0.05596, 0.05476, 0.05285, 0.05046, 0.04806, 0.04581, 0.04386, 0.04242, 0.04338");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.1135, 0.1213, 0.1483, 0.2, 0.2802, 0.3923, 0.5398, 0.7258, 0.9529, 1.223",\
                 "0.1301, 0.138, 0.1655, 0.2174, 0.2979, 0.4102, 0.558, 0.7442, 0.971, 1.242",\
                 "0.1833, 0.1929, 0.2239, 0.2769, 0.3577, 0.4703, 0.6181, 0.8043, 1.031, 1.302",\
                 "0.2234, 0.2376, 0.2837, 0.3605, 0.4621, 0.5829, 0.7309, 0.9169, 1.144, 1.415",\
                 "0.2311, 0.2501, 0.3117, 0.4142, 0.5501, 0.7118, 0.8934, 1.092, 1.319, 1.589",\
                 "0.2006, 0.2248, 0.303, 0.4323, 0.6032, 0.806, 1.035, 1.285, 1.552, 1.835",\
                 "0.1284, 0.1574, 0.2527, 0.4105, 0.6178, 0.8624, 1.139, 1.441, 1.764, 2.106",\
                 "0.012, 0.0464, 0.1582, 0.3435, 0.5898, 0.8784, 1.203, 1.556, 1.936, 2.337",\
                 "-0.1519, -0.1118, 0.0169, 0.2311, 0.5139, 0.849, 1.222, 1.629, 2.064, 2.525",\
                 "-0.3654, -0.321, -0.1739, 0.0686, 0.3888, 0.7673, 1.194, 1.655, 2.146, 2.669");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.3623, 0.3941, 0.5065, 0.7201, 1.052, 1.516, 2.126, 2.895, 3.832, 4.949",\
                 "0.368, 0.4005, 0.5142, 0.7296, 1.063, 1.528, 2.139, 2.909, 3.846, 4.964",\
                 "0.4174, 0.4489, 0.5613, 0.7762, 1.11, 1.577, 2.189, 2.959, 3.899, 5.015",\
                 "0.5474, 0.5769, 0.6823, 0.8909, 1.22, 1.683, 2.293, 3.062, 4, 5.116",\
                 "0.7326, 0.7674, 0.885, 1.094, 1.413, 1.868, 2.471, 3.235, 4.171, 5.287",\
                 "0.9576, 0.9972, 1.13, 1.365, 1.701, 2.148, 2.741, 3.496, 4.425, 5.534",\
                 "1.229, 1.272, 1.419, 1.678, 2.05, 2.526, 3.116, 3.859, 4.777, 5.877",\
                 "1.547, 1.596, 1.757, 2.041, 2.444, 2.963, 3.591, 4.336, 5.24, 6.329",\
                 "1.915, 1.968, 2.147, 2.456, 2.89, 3.447, 4.125, 4.915, 5.825, 6.9",\
                 "2.333, 2.392, 2.589, 2.925, 3.392, 3.987, 4.709, 5.553, 6.515, 7.598");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.1429, 0.1563, 0.2033, 0.2936, 0.4339, 0.6306, 0.8902, 1.214, 1.613, 2.089",\
                 "0.1428, 0.1562, 0.2034, 0.2935, 0.4339, 0.6305, 0.889, 1.215, 1.613, 2.092",\
                 "0.1778, 0.1876, 0.223, 0.2993, 0.4338, 0.6305, 0.8892, 1.217, 1.616, 2.092",\
                 "0.2685, 0.2831, 0.3304, 0.4089, 0.5131, 0.6645, 0.8947, 1.217, 1.616, 2.09",\
                 "0.3779, 0.3963, 0.4554, 0.5558, 0.691, 0.853, 1.038, 1.289, 1.635, 2.09",\
                 "0.5094, 0.5314, 0.6048, 0.726, 0.8878, 1.085, 1.309, 1.558, 1.836, 2.204",\
                 "0.6594, 0.6872, 0.7768, 0.9204, 1.111, 1.339, 1.602, 1.894, 2.211, 2.548",\
                 "0.8322, 0.8652, 0.9698, 1.141, 1.36, 1.622, 1.918, 2.253, 2.62, 3.009",\
                 "1.026, 1.064, 1.185, 1.384, 1.636, 1.933, 2.268, 2.64, 3.049, 3.489",\
                 "1.237, 1.283, 1.425, 1.648, 1.936, 2.273, 2.648, 3.061, 3.508, 3.995");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.6661, 0.7241, 0.9228, 1.296, 1.874, 2.689, 3.753, 5.091, 6.717, 8.667",\
                 "0.6664, 0.7224, 0.9218, 1.296, 1.876, 2.687, 3.752, 5.091, 6.724, 8.667",\
                 "0.6549, 0.7162, 0.9177, 1.296, 1.877, 2.688, 3.747, 5.092, 6.729, 8.681",\
                 "0.6698, 0.7226, 0.911, 1.289, 1.874, 2.687, 3.752, 5.093, 6.73, 8.67",\
                 "0.7602, 0.8148, 0.9916, 1.322, 1.87, 2.685, 3.747, 5.093, 6.728, 8.677",\
                 "0.8598, 0.9152, 1.109, 1.457, 1.958, 2.698, 3.749, 5.092, 6.725, 8.681",\
                 "0.9888, 1.048, 1.244, 1.611, 2.145, 2.84, 3.794, 5.09, 6.727, 8.678",\
                 "1.151, 1.208, 1.41, 1.788, 2.346, 3.084, 3.991, 5.184, 6.729, 8.679",\
                 "1.338, 1.4, 1.61, 1.995, 2.569, 3.341, 4.29, 5.427, 6.887, 8.714",\
                 "1.547, 1.614, 1.838, 2.236, 2.823, 3.62, 4.611, 5.789, 7.176, 8.906");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.1501, 0.1586, 0.1881, 0.2426, 0.3256, 0.4403, 0.5898, 0.7771, 1.005, 1.277",\
                 "0.1666, 0.175, 0.2043, 0.2589, 0.342, 0.4567, 0.6062, 0.7936, 1.022, 1.293",\
                 "0.2254, 0.234, 0.2628, 0.3169, 0.3996, 0.5142, 0.6638, 0.8511, 1.079, 1.351",\
                 "0.2902, 0.3026, 0.3438, 0.4143, 0.5092, 0.6262, 0.7751, 0.9622, 1.19, 1.461",\
                 "0.3248, 0.3414, 0.3963, 0.4892, 0.616, 0.769, 0.9438, 1.137, 1.365, 1.635",\
                 "0.3254, 0.3464, 0.4149, 0.5314, 0.6897, 0.8812, 1.1, 1.342, 1.603, 1.883",\
                 "0.2888, 0.3139, 0.3972, 0.5373, 0.7284, 0.9585, 1.222, 1.513, 1.828, 2.163",\
                 "0.2131, 0.2423, 0.338, 0.5045, 0.7282, 0.9976, 1.306, 1.646, 2.014, 2.407",\
                 "0.0968, 0.1297, 0.2403, 0.4296, 0.6866, 0.9959, 1.35, 1.74, 2.161, 2.61",\
                 "-0.0619, -0.0246, 0.0991, 0.3107, 0.5993, 0.951, 1.351, 1.791, 2.266, 2.772");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.5344, 0.5666, 0.6792, 0.8921, 1.223, 1.687, 2.297, 3.065, 4.003, 5.119",\
                 "0.5427, 0.5753, 0.6892, 0.9033, 1.236, 1.701, 2.311, 3.08, 4.018, 5.135",\
                 "0.584, 0.6169, 0.7307, 0.9471, 1.281, 1.748, 2.36, 3.13, 4.068, 5.187",\
                 "0.6617, 0.6948, 0.809, 1.023, 1.357, 1.824, 2.436, 3.207, 4.146, 5.265",\
                 "0.769, 0.8047, 0.9291, 1.153, 1.483, 1.946, 2.556, 3.324, 4.262, 5.382",\
                 "0.9266, 0.9649, 1.095, 1.33, 1.679, 2.141, 2.744, 3.507, 4.44, 5.556",\
                 "1.144, 1.184, 1.321, 1.566, 1.928, 2.411, 3.017, 3.77, 4.694, 5.801",\
                 "1.411, 1.455, 1.602, 1.862, 2.237, 2.737, 3.366, 4.126, 5.039, 6.135",\
                 "1.722, 1.771, 1.933, 2.213, 2.609, 3.126, 3.774, 4.559, 5.484, 6.569",\
                 "2.077, 2.131, 2.309, 2.613, 3.036, 3.577, 4.245, 5.053, 6.005, 7.104");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.195, 0.2093, 0.2575, 0.3482, 0.4887, 0.6861, 0.9453, 1.27, 1.668, 2.142",\
                 "0.1942, 0.2083, 0.2564, 0.3481, 0.4885, 0.6852, 0.9437, 1.271, 1.668, 2.143",\
                 "0.2073, 0.2187, 0.2604, 0.3468, 0.488, 0.6852, 0.945, 1.272, 1.668, 2.143",\
                 "0.3089, 0.3222, 0.3661, 0.4396, 0.5436, 0.7063, 0.9467, 1.271, 1.668, 2.143",\
                 "0.4288, 0.4458, 0.5022, 0.5978, 0.7268, 0.8824, 1.069, 1.327, 1.683, 2.144",\
                 "0.572, 0.594, 0.662, 0.7756, 0.9308, 1.124, 1.342, 1.585, 1.869, 2.246",\
                 "0.7374, 0.764, 0.8436, 0.9794, 1.159, 1.382, 1.64, 1.927, 2.241, 2.577",\
                 "0.9246, 0.9544, 1.05, 1.209, 1.418, 1.668, 1.959, 2.288, 2.651, 3.04",\
                 "1.133, 1.171, 1.283, 1.464, 1.704, 1.987, 2.312, 2.678, 3.08, 3.522",\
                 "1.37, 1.409, 1.536, 1.743, 2.02, 2.337, 2.697, 3.098, 3.543, 4.026");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.6777, 0.7309, 0.928, 1.3, 1.878, 2.687, 3.75, 5.092, 6.721, 8.674",\
                 "0.6771, 0.732, 0.9272, 1.298, 1.878, 2.687, 3.749, 5.087, 6.724, 8.68",\
                 "0.6774, 0.732, 0.9261, 1.299, 1.875, 2.686, 3.746, 5.093, 6.723, 8.666",\
                 "0.704, 0.7541, 0.9354, 1.301, 1.878, 2.686, 3.75, 5.09, 6.721, 8.673",\
                 "0.8, 0.852, 1.022, 1.349, 1.89, 2.685, 3.745, 5.093, 6.722, 8.679",\
                 "0.9012, 0.952, 1.134, 1.474, 1.982, 2.726, 3.753, 5.088, 6.72, 8.677",\
                 "1.041, 1.088, 1.268, 1.608, 2.135, 2.853, 3.823, 5.102, 6.718, 8.678",\
                 "1.216, 1.265, 1.437, 1.774, 2.302, 3.04, 3.986, 5.203, 6.756, 8.669",\
                 "1.417, 1.468, 1.644, 1.98, 2.503, 3.244, 4.214, 5.405, 6.903, 8.738",\
                 "1.646, 1.699, 1.889, 2.223, 2.744, 3.483, 4.457, 5.673, 7.129, 8.908");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.1559, 0.1655, 0.1983, 0.258, 0.3469, 0.4672, 0.6215, 0.8127, 1.044, 1.318",\
                 "0.1714, 0.1809, 0.2133, 0.2727, 0.3614, 0.4816, 0.6358, 0.827, 1.058, 1.332",\
                 "0.2336, 0.2424, 0.2729, 0.33, 0.4174, 0.5369, 0.6909, 0.8821, 1.113, 1.387",\
                 "0.3118, 0.3245, 0.3659, 0.4359, 0.5305, 0.6489, 0.8013, 0.9918, 1.223, 1.496",\
                 "0.3629, 0.3793, 0.4331, 0.5247, 0.6505, 0.8014, 0.9735, 1.167, 1.397, 1.67",\
                 "0.3837, 0.404, 0.4708, 0.5845, 0.7391, 0.9273, 1.142, 1.381, 1.638, 1.917",\
                 "0.3716, 0.3959, 0.4755, 0.6123, 0.7968, 1.021, 1.278, 1.564, 1.874, 2.205",\
                 "0.3254, 0.3536, 0.4462, 0.604, 0.82, 1.08, 1.38, 1.712, 2.074, 2.46",\
                 "0.2446, 0.2761, 0.3811, 0.5611, 0.8065, 1.105, 1.446, 1.825, 2.236, 2.678",\
                 "0.1304, 0.1652, 0.2813, 0.4808, 0.7565, 1.092, 1.476, 1.9, 2.363, 2.858");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.5953, 0.6275, 0.7402, 0.9533, 1.284, 1.748, 2.358, 3.126, 4.064, 5.181",\
                 "0.6081, 0.6407, 0.7547, 0.9691, 1.301, 1.766, 2.377, 3.146, 4.084, 5.201",\
                 "0.6543, 0.6869, 0.8007, 1.017, 1.351, 1.818, 2.43, 3.199, 4.139, 5.257",\
                 "0.7257, 0.7586, 0.8726, 1.088, 1.422, 1.89, 2.501, 3.272, 4.212, 5.331",\
                 "0.8086, 0.8438, 0.9645, 1.185, 1.517, 1.982, 2.594, 3.364, 4.302, 5.422",\
                 "0.9159, 0.9526, 1.078, 1.31, 1.655, 2.119, 2.725, 3.49, 4.426, 5.542",\
                 "1.064, 1.103, 1.236, 1.476, 1.831, 2.31, 2.919, 3.675, 4.601, 5.712",\
                 "1.254, 1.296, 1.44, 1.693, 2.059, 2.548, 3.172, 3.934, 4.851, 5.948",\
                 "1.483, 1.53, 1.687, 1.958, 2.342, 2.844, 3.478, 4.255, 5.182, 6.267",\
                 "1.748, 1.8, 1.971, 2.266, 2.674, 3.197, 3.845, 4.633, 5.574, 6.674");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.2352, 0.2505, 0.3028, 0.3987, 0.5439, 0.7418, 1.002, 1.328, 1.724, 2.199",\
                 "0.2317, 0.2474, 0.3001, 0.397, 0.5425, 0.7414, 1.001, 1.328, 1.725, 2.198",\
                 "0.2365, 0.2494, 0.2954, 0.3894, 0.5374, 0.7392, 1.001, 1.326, 1.725, 2.199",\
                 "0.3486, 0.3609, 0.4032, 0.4743, 0.5797, 0.7494, 0.9972, 1.325, 1.725, 2.198",\
                 "0.4838, 0.5002, 0.5534, 0.6442, 0.767, 0.9176, 1.104, 1.37, 1.732, 2.199",\
                 "0.646, 0.6648, 0.7294, 0.835, 0.9822, 1.165, 1.379, 1.616, 1.904, 2.288",\
                 "0.835, 0.859, 0.933, 1.059, 1.227, 1.435, 1.686, 1.965, 2.275, 2.608",\
                 "1.052, 1.082, 1.169, 1.312, 1.502, 1.737, 2.013, 2.332, 2.689, 3.073",\
                 "1.305, 1.335, 1.439, 1.6, 1.816, 2.074, 2.378, 2.728, 3.122, 3.556",\
                 "1.585, 1.622, 1.737, 1.928, 2.166, 2.453, 2.782, 3.158, 3.588, 4.063");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.00148, 0.003163, 0.006378, 0.01139, 0.01841, 0.02766, 0.03931, 0.05353, 0.07048");
          values("0.6762, 0.731, 0.9281, 1.3, 1.877, 2.686, 3.749, 5.092, 6.727, 8.666",\
                 "0.6765, 0.7324, 0.9274, 1.297, 1.875, 2.687, 3.751, 5.092, 6.727, 8.661",\
                 "0.678, 0.734, 0.9269, 1.3, 1.876, 2.683, 3.745, 5.091, 6.72, 8.68",\
                 "0.6886, 0.742, 0.9312, 1.299, 1.878, 2.687, 3.751, 5.09, 6.718, 8.67",\
                 "0.765, 0.814, 0.9896, 1.331, 1.884, 2.688, 3.747, 5.089, 6.73, 8.677",\
                 "0.859, 0.9108, 1.091, 1.435, 1.957, 2.715, 3.754, 5.088, 6.721, 8.678",\
                 "1.015, 1.062, 1.231, 1.568, 2.095, 2.83, 3.82, 5.108, 6.726, 8.674",\
                 "1.227, 1.278, 1.436, 1.755, 2.267, 2.999, 3.964, 5.199, 6.766, 8.666",\
                 "1.474, 1.522, 1.684, 2.001, 2.492, 3.205, 4.17, 5.384, 6.893, 8.754",\
                 "1.742, 1.794, 1.967, 2.285, 2.781, 3.47, 4.411, 5.629, 7.109, 8.907");
        }
      }
    }
  }

