/*
 * 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__or3_4) {
    area : 48.294400 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.04593, 0.04593, 0.04595, 0.04588, 0.04585, 0.04586, 0.04582, \
                 0.04575, 0.04567, 0.04554");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.01042, -0.01044, -0.01049, -0.01053, -0.01051, -0.01055, -0.01056, \
                 -0.01056, -0.01055, -0.01056");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.02434, 0.02435, 0.02435, 0.02437, 0.02436, 0.0244, 0.02436, \
                 0.02434, 0.0243, 0.02425");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.01049, -0.01052, -0.01058, -0.01061, -0.01061, -0.01064, -0.01066, \
                 -0.01065, -0.01065, -0.01065");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.02434, 0.02436, 0.02437, 0.02436, 0.02435, 0.02438, 0.02436, \
                 0.02433, 0.02431, 0.02425");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.0105, -0.01053, -0.01058, -0.01061, -0.01063, -0.01066, -0.01066, \
                 -0.01065, -0.01066, -0.01066");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.02228, 0.02227, 0.02233, 0.02232, 0.02232, 0.02234, 0.02231, \
                 0.02224, 0.02217, 0.02207");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.01181, -0.01188, -0.0119, -0.01193, -0.01194, -0.01199, -0.012, \
                 -0.01202, -0.01206, -0.0121");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.03262, 0.03258, 0.03262, 0.03258, 0.03258, 0.03267, 0.03265, \
                 0.03262, 0.03263, 0.03262");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.02648, -0.02819, -0.03096, -0.03157, -0.03174, -0.03195, -0.03201, \
                 -0.03206, -0.03212, -0.03214");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.02032, 0.02033, 0.02038, 0.02041, 0.02042, 0.02047, 0.02049, \
                 0.02046, 0.02046, 0.02048");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.02113, -0.021, -0.02086, -0.02065, -0.02047, -0.02043, -0.02029, \
                 -0.02021, -0.02013, -0.0201");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.03255, 0.0326, 0.03258, 0.03256, 0.03258, 0.03265, 0.03262, \
                 0.03262, 0.03263, 0.03262");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.02861, -0.03043, -0.03127, -0.03163, -0.0318, -0.03199, -0.03201, \
                 -0.0321, -0.03215, -0.03216");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.03259, 0.03262, 0.03256, 0.03257, 0.03262, 0.0327, 0.03268, \
                 0.03264, 0.03264, 0.03265");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.02741, -0.02822, -0.0296, -0.03057, -0.03097, -0.03131, -0.03149, \
                 -0.0316, -0.03167, -0.03176");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.03258, 0.03261, 0.03258, 0.03264, 0.03261, 0.03268, 0.03263, \
                 0.03261, 0.0326, 0.03262");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.03021, -0.03065, -0.0313, -0.03166, -0.0318, -0.032, -0.03203, \
                 -0.03211, -0.03214, -0.03217");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1|A2|A3)" ;
      max_capacitance : 1.441 ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.3502, 0.335, 0.3112, 0.2979, 0.2907, 0.2863, 0.2834, 0.2815, 0.2801, 0.2792",\
                 "0.3481, 0.3331, 0.3092, 0.2958, 0.2886, 0.2841, 0.2814, 0.2795, 0.2783, 0.2773",\
                 "0.348, 0.3331, 0.3091, 0.2957, 0.2886, 0.2844, 0.2814, 0.2796, 0.2784, 0.2774",\
                 "0.3584, 0.3433, 0.3189, 0.3052, 0.2978, 0.2932, 0.2906, 0.2889, 0.2876, 0.2867",\
                 "0.3916, 0.3752, 0.3469, 0.3301, 0.3208, 0.3153, 0.3119, 0.3097, 0.3082, 0.307",\
                 "0.44, 0.4213, 0.3887, 0.3679, 0.3562, 0.349, 0.3446, 0.3416, 0.3397, 0.3384",\
                 "0.5031, 0.4827, 0.4454, 0.4202, 0.4052, 0.3957, 0.39, 0.3863, 0.3838, 0.382",\
                 "0.5847, 0.5625, 0.52, 0.4893, 0.4703, 0.4581, 0.4503, 0.4454, 0.442, 0.4396",\
                 "0.6855, 0.6621, 0.6136, 0.5764, 0.5527, 0.5368, 0.527, 0.5202, 0.5156, 0.5124",\
                 "0.8058, 0.7806, 0.7267, 0.6826, 0.6535, 0.6337, 0.6208, 0.6119, 0.6059, 0.6016");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.1429, 0.1413, 0.1426, 0.1457, 0.1486, 0.151, 0.1539, 0.1573, 0.1598, 0.1751",\
                 "0.144, 0.1425, 0.1434, 0.1464, 0.1494, 0.1523, 0.1552, 0.1583, 0.1622, 0.1758",\
                 "0.1491, 0.1469, 0.146, 0.1482, 0.1512, 0.1543, 0.1572, 0.1603, 0.1632, 0.181",\
                 "0.1663, 0.1615, 0.1578, 0.1566, 0.1575, 0.1602, 0.1645, 0.1666, 0.1724, 0.1848",\
                 "0.1941, 0.1874, 0.1783, 0.1752, 0.1747, 0.1754, 0.1777, 0.1817, 0.1844, 0.2044",\
                 "0.2362, 0.227, 0.2135, 0.2044, 0.2038, 0.2035, 0.2037, 0.2058, 0.2091, 0.2282",\
                 "0.2935, 0.2805, 0.2627, 0.2509, 0.244, 0.2431, 0.2446, 0.2444, 0.2455, 0.271",\
                 "0.3664, 0.3504, 0.3277, 0.3107, 0.2996, 0.2959, 0.2978, 0.2974, 0.3011, 0.3274",\
                 "0.4561, 0.4358, 0.4085, 0.3872, 0.3728, 0.3615, 0.3601, 0.3638, 0.3686, 0.4084",\
                 "0.5622, 0.5387, 0.5063, 0.4787, 0.4609, 0.4477, 0.4407, 0.439, 0.4495, 0.5096");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.3736, 0.3585, 0.3347, 0.3216, 0.314, 0.3096, 0.3069, 0.3048, 0.3036, 0.3026",\
                 "0.3717, 0.3566, 0.3327, 0.3196, 0.3121, 0.3076, 0.3048, 0.3029, 0.3017, 0.3008",\
                 "0.3692, 0.3541, 0.3302, 0.3168, 0.3095, 0.3051, 0.3023, 0.3004, 0.2992, 0.2983",\
                 "0.3771, 0.3616, 0.3365, 0.3224, 0.3146, 0.3101, 0.3071, 0.3052, 0.3038, 0.3027",\
                 "0.4059, 0.3897, 0.3616, 0.3451, 0.3356, 0.33, 0.3265, 0.3242, 0.3226, 0.3215",\
                 "0.4508, 0.4333, 0.4023, 0.3827, 0.3714, 0.3646, 0.3604, 0.3576, 0.3556, 0.3543",\
                 "0.516, 0.4972, 0.4625, 0.4388, 0.4245, 0.416, 0.4104, 0.4068, 0.4043, 0.4026",\
                 "0.6032, 0.583, 0.5431, 0.5137, 0.4961, 0.4846, 0.4776, 0.4726, 0.4691, 0.4667",\
                 "0.7118, 0.6898, 0.6445, 0.6094, 0.5867, 0.5722, 0.5624, 0.556, 0.5516, 0.5484",\
                 "0.8411, 0.8177, 0.7678, 0.7258, 0.6978, 0.6793, 0.667, 0.6583, 0.6525, 0.6482");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.1667, 0.1645, 0.1647, 0.1662, 0.1687, 0.1715, 0.174, 0.1781, 0.1813, 0.1913",\
                 "0.1665, 0.1645, 0.164, 0.1659, 0.1685, 0.1715, 0.1744, 0.1781, 0.181, 0.191",\
                 "0.1686, 0.1661, 0.1643, 0.1661, 0.1683, 0.1718, 0.1744, 0.1768, 0.1793, 0.1935",\
                 "0.1848, 0.1807, 0.1758, 0.1738, 0.1749, 0.1774, 0.1803, 0.183, 0.1856, 0.201",\
                 "0.2141, 0.2072, 0.1974, 0.1938, 0.192, 0.1936, 0.1958, 0.1986, 0.2028, 0.2186",\
                 "0.2584, 0.2494, 0.2355, 0.2265, 0.2247, 0.2243, 0.2239, 0.2259, 0.2282, 0.2493",\
                 "0.3196, 0.3072, 0.2901, 0.2767, 0.2693, 0.2688, 0.2684, 0.2679, 0.2709, 0.2983",\
                 "0.3981, 0.3823, 0.3613, 0.3435, 0.3309, 0.3262, 0.3278, 0.3278, 0.3291, 0.3586",\
                 "0.4946, 0.4762, 0.4492, 0.4279, 0.4121, 0.4008, 0.3968, 0.4004, 0.404, 0.4484",\
                 "0.61, 0.5881, 0.5562, 0.53, 0.5095, 0.4955, 0.4892, 0.4862, 0.4958, 0.5639");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.3962, 0.3809, 0.3572, 0.3439, 0.3365, 0.3321, 0.3293, 0.3273, 0.3259, 0.3249",\
                 "0.3941, 0.3791, 0.3551, 0.3419, 0.3346, 0.3301, 0.3274, 0.3253, 0.3241, 0.3232",\
                 "0.3913, 0.3761, 0.3521, 0.3389, 0.3316, 0.3272, 0.3244, 0.3225, 0.3211, 0.3201",\
                 "0.3951, 0.3798, 0.3551, 0.3412, 0.3337, 0.3292, 0.3262, 0.3243, 0.3229, 0.322",\
                 "0.4196, 0.4035, 0.3762, 0.3604, 0.3514, 0.3461, 0.3428, 0.3405, 0.3391, 0.338",\
                 "0.4666, 0.4493, 0.4192, 0.4002, 0.3894, 0.3827, 0.3785, 0.3758, 0.3739, 0.3726",\
                 "0.5425, 0.524, 0.4888, 0.4646, 0.4511, 0.4421, 0.4365, 0.4326, 0.4302, 0.4286",\
                 "0.6454, 0.625, 0.585, 0.555, 0.5361, 0.5242, 0.5166, 0.5114, 0.5078, 0.5053",\
                 "0.7732, 0.7513, 0.7057, 0.6683, 0.6443, 0.6291, 0.6189, 0.6119, 0.6069, 0.6033",\
                 "0.9249, 0.9015, 0.851, 0.8064, 0.7767, 0.7569, 0.7435, 0.7342, 0.7277, 0.7229");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.1898, 0.1871, 0.1854, 0.1869, 0.189, 0.1916, 0.1945, 0.1969, 0.1995, 0.213",\
                 "0.1872, 0.1844, 0.1832, 0.1849, 0.1869, 0.1899, 0.1925, 0.1946, 0.1995, 0.21",\
                 "0.1869, 0.184, 0.1813, 0.1822, 0.1845, 0.1876, 0.1905, 0.1923, 0.1962, 0.208",\
                 "0.2033, 0.1985, 0.1924, 0.1905, 0.1911, 0.1932, 0.1961, 0.1982, 0.2037, 0.2148",\
                 "0.2347, 0.228, 0.2173, 0.2126, 0.2098, 0.211, 0.2129, 0.215, 0.2183, 0.2341",\
                 "0.2839, 0.2744, 0.2604, 0.2498, 0.2469, 0.245, 0.245, 0.247, 0.2487, 0.2707",\
                 "0.3537, 0.3409, 0.3228, 0.3073, 0.2989, 0.2978, 0.2971, 0.2975, 0.2986, 0.3236",\
                 "0.4449, 0.4287, 0.4061, 0.3874, 0.3736, 0.3661, 0.3684, 0.3664, 0.3674, 0.3981",\
                 "0.5582, 0.5389, 0.511, 0.4866, 0.4694, 0.4569, 0.4519, 0.4548, 0.4584, 0.502",\
                 "0.6949, 0.6719, 0.6391, 0.6105, 0.5878, 0.5698, 0.5618, 0.5584, 0.5688, 0.6357");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.5024, 0.5566, 0.69, 0.8773, 1.114, 1.408, 1.774, 2.225, 2.771, 3.421",\
                 "0.5095, 0.5635, 0.6971, 0.8845, 1.121, 1.415, 1.781, 2.232, 2.778, 3.428",\
                 "0.5592, 0.6131, 0.7466, 0.9338, 1.17, 1.465, 1.83, 2.281, 2.827, 3.478",\
                 "0.6835, 0.7372, 0.8702, 1.057, 1.293, 1.588, 1.953, 2.404, 2.95, 3.601",\
                 "0.878, 0.9322, 1.066, 1.253, 1.49, 1.784, 2.15, 2.601, 3.147, 3.797",\
                 "1.118, 1.175, 1.311, 1.501, 1.741, 2.038, 2.404, 2.855, 3.401, 4.051",\
                 "1.412, 1.471, 1.611, 1.804, 2.045, 2.344, 2.712, 3.164, 3.71, 4.36",\
                 "1.762, 1.824, 1.97, 2.167, 2.411, 2.71, 3.079, 3.532, 4.079, 4.73",\
                 "2.164, 2.231, 2.387, 2.591, 2.841, 3.143, 3.512, 3.965, 4.512, 5.164",\
                 "2.624, 2.694, 2.859, 3.072, 3.332, 3.641, 4.014, 4.468, 5.016, 5.667");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.2093, 0.25, 0.3732, 0.5992, 0.95, 1.441, 2.086, 2.899, 3.893, 5.078",\
                 "0.2249, 0.2655, 0.3887, 0.6148, 0.9657, 1.456, 2.102, 2.916, 3.905, 5.094",\
                 "0.2777, 0.3182, 0.4401, 0.6657, 1.017, 1.507, 2.154, 2.967, 3.96, 5.141",\
                 "0.3364, 0.3788, 0.5022, 0.7261, 1.076, 1.567, 2.212, 3.026, 4.019, 5.199",\
                 "0.3662, 0.4117, 0.5382, 0.7607, 1.109, 1.599, 2.244, 3.058, 4.05, 5.234",\
                 "0.361, 0.4098, 0.5417, 0.7637, 1.11, 1.599, 2.243, 3.056, 4.049, 5.23",\
                 "0.3145, 0.3674, 0.5058, 0.7316, 1.077, 1.565, 2.208, 3.018, 4.009, 5.192",\
                 "0.224, 0.2811, 0.4275, 0.6567, 1.005, 1.493, 2.135, 2.945, 3.935, 5.116",\
                 "0.087, 0.1481, 0.3019, 0.5369, 0.8862, 1.377, 2.022, 2.831, 3.821, 5.001",\
                 "-0.101, -0.0351, 0.1275, 0.3683, 0.7197, 1.214, 1.864, 2.676, 3.665, 4.845");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.1582, 0.2098, 0.343, 0.5506, 0.8428, 1.255, 1.815, 2.544, 3.45, 4.543",\
                 "0.1582, 0.21, 0.3429, 0.5499, 0.8423, 1.255, 1.816, 2.544, 3.453, 4.541",\
                 "0.1582, 0.2101, 0.3428, 0.5495, 0.843, 1.255, 1.814, 2.546, 3.453, 4.543",\
                 "0.1568, 0.209, 0.3432, 0.5496, 0.8426, 1.255, 1.817, 2.544, 3.452, 4.537",\
                 "0.169, 0.2212, 0.3506, 0.5568, 0.8474, 1.257, 1.817, 2.546, 3.449, 4.543",\
                 "0.187, 0.2382, 0.3654, 0.5708, 0.86, 1.266, 1.821, 2.546, 3.452, 4.543",\
                 "0.206, 0.2578, 0.3832, 0.5834, 0.872, 1.278, 1.832, 2.556, 3.456, 4.544",\
                 "0.2278, 0.2834, 0.41, 0.6026, 0.886, 1.287, 1.84, 2.563, 3.463, 4.548",\
                 "0.2548, 0.3146, 0.4442, 0.634, 0.912, 1.303, 1.848, 2.567, 3.468, 4.551",\
                 "0.2842, 0.3474, 0.4852, 0.6756, 0.9506, 1.336, 1.872, 2.578, 3.472, 4.554");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.0821, 0.1371, 0.3319, 0.7243, 1.34, 2.208, 3.343, 4.777, 6.527, 8.62",\
                 "0.08212, 0.1374, 0.3319, 0.7245, 1.34, 2.205, 3.343, 4.778, 6.524, 8.621",\
                 "0.0827, 0.138, 0.3321, 0.7242, 1.34, 2.205, 3.343, 4.777, 6.523, 8.61",\
                 "0.0944, 0.1484, 0.337, 0.7252, 1.34, 2.205, 3.342, 4.776, 6.527, 8.618",\
                 "0.109, 0.1634, 0.3444, 0.7272, 1.342, 2.202, 3.341, 4.776, 6.523, 8.612",\
                 "0.1264, 0.181, 0.3588, 0.7308, 1.344, 2.204, 3.339, 4.772, 6.521, 8.62",\
                 "0.1468, 0.2026, 0.3788, 0.7416, 1.346, 2.206, 3.341, 4.778, 6.517, 8.608",\
                 "0.1684, 0.2258, 0.4024, 0.7566, 1.36, 2.215, 3.344, 4.772, 6.528, 8.599",\
                 "0.1922, 0.2498, 0.429, 0.7754, 1.376, 2.232, 3.355, 4.776, 6.52, 8.611",\
                 "0.2172, 0.2774, 0.458, 0.7974, 1.393, 2.255, 3.379, 4.791, 6.527, 8.6");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.5905, 0.6446, 0.778, 0.9654, 1.202, 1.496, 1.862, 2.312, 2.859, 3.509",\
                 "0.5983, 0.6524, 0.7857, 0.9732, 1.21, 1.504, 1.87, 2.32, 2.867, 3.517",\
                 "0.6306, 0.6845, 0.818, 1.005, 1.242, 1.536, 1.902, 2.352, 2.899, 3.549",\
                 "0.7092, 0.7629, 0.896, 1.083, 1.32, 1.614, 1.979, 2.43, 2.976, 3.627",\
                 "0.8442, 0.8999, 1.037, 1.226, 1.465, 1.759, 2.125, 2.576, 3.122, 3.772",\
                 "1.039, 1.096, 1.236, 1.43, 1.672, 1.97, 2.337, 2.788, 3.334, 3.984",\
                 "1.292, 1.351, 1.494, 1.692, 1.938, 2.238, 2.607, 3.059, 3.606, 4.256",\
                 "1.593, 1.656, 1.806, 2.01, 2.262, 2.565, 2.936, 3.389, 3.936, 4.587",\
                 "1.941, 2.007, 2.166, 2.38, 2.641, 2.951, 3.325, 3.779, 4.327, 4.978",\
                 "2.336, 2.405, 2.572, 2.797, 3.07, 3.393, 3.775, 4.233, 4.781, 5.433");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.2373, 0.2785, 0.402, 0.628, 0.9785, 1.469, 2.114, 2.927, 3.918, 5.099",\
                 "0.2519, 0.2931, 0.4165, 0.6427, 0.9932, 1.484, 2.128, 2.941, 3.932, 5.114",\
                 "0.3043, 0.3451, 0.4678, 0.6936, 1.044, 1.535, 2.18, 2.992, 3.983, 5.167",\
                 "0.3751, 0.4177, 0.5407, 0.7647, 1.114, 1.605, 2.25, 3.061, 4.053, 5.236",\
                 "0.4203, 0.4651, 0.5911, 0.8135, 1.162, 1.652, 2.296, 3.109, 4.101, 5.284",\
                 "0.4336, 0.4818, 0.6122, 0.8345, 1.181, 1.67, 2.314, 3.126, 4.118, 5.3",\
                 "0.4104, 0.4622, 0.5996, 0.8232, 1.17, 1.657, 2.3, 3.111, 4.102, 5.283",\
                 "0.3482, 0.404, 0.5483, 0.7765, 1.123, 1.612, 2.254, 3.064, 4.054, 5.235",\
                 "0.2455, 0.3056, 0.4569, 0.6897, 1.04, 1.53, 2.173, 2.983, 3.973, 5.152",\
                 "0.1001, 0.1642, 0.3235, 0.5625, 0.9139, 1.408, 2.056, 2.868, 3.857, 5.036");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.1583, 0.2101, 0.3429, 0.5505, 0.8436, 1.255, 1.814, 2.546, 3.453, 4.541",\
                 "0.1584, 0.2098, 0.3433, 0.5503, 0.8426, 1.255, 1.816, 2.546, 3.453, 4.541",\
                 "0.1584, 0.2101, 0.343, 0.5498, 0.8426, 1.256, 1.815, 2.544, 3.453, 4.537",\
                 "0.159, 0.2112, 0.344, 0.551, 0.8446, 1.255, 1.817, 2.543, 3.453, 4.542",\
                 "0.171, 0.2244, 0.3568, 0.5602, 0.849, 1.259, 1.819, 2.547, 3.453, 4.54",\
                 "0.1802, 0.2366, 0.3708, 0.5766, 0.8646, 1.269, 1.824, 2.549, 3.453, 4.542",\
                 "0.1958, 0.2518, 0.3882, 0.592, 0.8794, 1.281, 1.834, 2.556, 3.457, 4.54",\
                 "0.2172, 0.2772, 0.4152, 0.6192, 0.9014, 1.297, 1.844, 2.562, 3.459, 4.544",\
                 "0.2432, 0.3044, 0.4494, 0.6566, 0.9392, 1.327, 1.861, 2.57, 3.465, 4.547",\
                 "0.27, 0.3358, 0.488, 0.702, 0.9914, 1.375, 1.9, 2.592, 3.479, 4.551");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.08464, 0.1399, 0.3336, 0.7249, 1.34, 2.206, 3.342, 4.774, 6.523, 8.606",\
                 "0.08458, 0.1398, 0.3335, 0.7254, 1.34, 2.204, 3.34, 4.774, 6.522, 8.609",\
                 "0.08424, 0.14, 0.3339, 0.7259, 1.341, 2.204, 3.341, 4.772, 6.521, 8.606",\
                 "0.09426, 0.1485, 0.3369, 0.7248, 1.34, 2.203, 3.342, 4.77, 6.518, 8.606",\
                 "0.1078, 0.1614, 0.3446, 0.7276, 1.341, 2.207, 3.341, 4.773, 6.522, 8.603",\
                 "0.123, 0.1782, 0.357, 0.7312, 1.344, 2.205, 3.339, 4.773, 6.521, 8.605",\
                 "0.1434, 0.1974, 0.3752, 0.741, 1.347, 2.206, 3.341, 4.771, 6.518, 8.607",\
                 "0.1648, 0.2202, 0.3968, 0.7552, 1.36, 2.214, 3.345, 4.772, 6.518, 8.6",\
                 "0.1858, 0.2432, 0.422, 0.773, 1.377, 2.231, 3.354, 4.775, 6.521, 8.601",\
                 "0.2078, 0.269, 0.4494, 0.7934, 1.393, 2.255, 3.378, 4.79, 6.523, 8.603");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.625, 0.679, 0.8125, 0.9998, 1.236, 1.531, 1.896, 2.347, 2.893, 3.544",\
                 "0.6356, 0.6895, 0.8231, 1.01, 1.247, 1.541, 1.907, 2.358, 2.904, 3.554",\
                 "0.6663, 0.7203, 0.8538, 1.041, 1.278, 1.572, 1.938, 2.388, 2.935, 3.585",\
                 "0.7211, 0.7749, 0.908, 1.095, 1.332, 1.626, 1.992, 2.442, 2.988, 3.639",\
                 "0.8146, 0.8698, 1.006, 1.195, 1.433, 1.728, 2.094, 2.544, 3.091, 3.741",\
                 "0.9628, 1.019, 1.158, 1.352, 1.594, 1.892, 2.258, 2.709, 3.255, 3.906",\
                 "1.164, 1.224, 1.368, 1.566, 1.813, 2.114, 2.483, 2.934, 3.481, 4.131",\
                 "1.405, 1.468, 1.621, 1.83, 2.086, 2.392, 2.764, 3.216, 3.763, 4.413",\
                 "1.68, 1.747, 1.909, 2.13, 2.4, 2.719, 3.099, 3.554, 4.101, 4.751",\
                 "1.987, 2.058, 2.231, 2.465, 2.75, 3.086, 3.48, 3.945, 4.495, 5.146");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.2512, 0.2934, 0.4191, 0.6467, 0.9981, 1.489, 2.134, 2.947, 3.939, 5.121",\
                 "0.2644, 0.3065, 0.4323, 0.6601, 1.011, 1.502, 2.147, 2.96, 3.951, 5.133",\
                 "0.3173, 0.3591, 0.4838, 0.7109, 1.062, 1.553, 2.199, 3.012, 4.004, 5.185",\
                 "0.3969, 0.4396, 0.5638, 0.7893, 1.139, 1.63, 2.275, 3.087, 4.079, 5.26",\
                 "0.4538, 0.4997, 0.6262, 0.8498, 1.198, 1.688, 2.333, 3.146, 4.137, 5.319",\
                 "0.4836, 0.5321, 0.6636, 0.8868, 1.234, 1.722, 2.367, 3.178, 4.17, 5.352",\
                 "0.482, 0.5343, 0.6719, 0.8969, 1.243, 1.731, 2.375, 3.186, 4.177, 5.357",\
                 "0.4483, 0.5047, 0.6497, 0.8788, 1.226, 1.715, 2.357, 3.167, 4.157, 5.338",\
                 "0.3812, 0.4421, 0.5945, 0.8285, 1.18, 1.67, 2.314, 3.123, 4.113, 5.293",\
                 "0.2806, 0.3453, 0.5064, 0.7474, 1.1, 1.595, 2.244, 3.054, 4.043, 5.222");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.1579, 0.2098, 0.343, 0.5505, 0.8428, 1.255, 1.817, 2.544, 3.45, 4.54",\
                 "0.1579, 0.2102, 0.3429, 0.5501, 0.8438, 1.255, 1.814, 2.544, 3.453, 4.54",\
                 "0.1584, 0.2101, 0.3428, 0.5492, 0.8438, 1.255, 1.816, 2.543, 3.449, 4.541",\
                 "0.1588, 0.2106, 0.3434, 0.5502, 0.8444, 1.256, 1.814, 2.544, 3.452, 4.543",\
                 "0.1682, 0.221, 0.3534, 0.5582, 0.8486, 1.257, 1.818, 2.545, 3.453, 4.537",\
                 "0.1786, 0.233, 0.3678, 0.574, 0.8618, 1.268, 1.824, 2.547, 3.454, 4.54",\
                 "0.1978, 0.2542, 0.3894, 0.5954, 0.8804, 1.283, 1.832, 2.553, 3.454, 4.538",\
                 "0.222, 0.2812, 0.4248, 0.6324, 0.9148, 1.306, 1.846, 2.56, 3.457, 4.543",\
                 "0.2494, 0.3138, 0.4656, 0.6798, 0.9694, 1.355, 1.881, 2.577, 3.466, 4.543",\
                 "0.2794, 0.3476, 0.5086, 0.7328, 1.034, 1.428, 1.944, 2.623, 3.49, 4.557");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.01094, 0.04583, 0.1125, 0.2163, 0.3619, 0.5536, 0.7951, 1.09, 1.441");
          values("0.08788, 0.1443, 0.3386, 0.7289, 1.343, 2.205, 3.342, 4.773, 6.522, 8.607",\
                 "0.08806, 0.1445, 0.3385, 0.7299, 1.343, 2.206, 3.341, 4.773, 6.521, 8.601",\
                 "0.08734, 0.1435, 0.3383, 0.7287, 1.342, 2.206, 3.342, 4.774, 6.523, 8.607",\
                 "0.0952, 0.1509, 0.3403, 0.7286, 1.343, 2.209, 3.341, 4.774, 6.523, 8.603",\
                 "0.1098, 0.1644, 0.348, 0.7306, 1.345, 2.205, 3.342, 4.773, 6.519, 8.606",\
                 "0.126, 0.1814, 0.3602, 0.736, 1.346, 2.207, 3.341, 4.773, 6.52, 8.606",\
                 "0.146, 0.2004, 0.3778, 0.745, 1.351, 2.21, 3.342, 4.774, 6.517, 8.608",\
                 "0.168, 0.2238, 0.4002, 0.7594, 1.364, 2.218, 3.346, 4.774, 6.53, 8.605",\
                 "0.1902, 0.2492, 0.4266, 0.7786, 1.382, 2.236, 3.361, 4.779, 6.52, 8.613",\
                 "0.214, 0.2746, 0.4548, 0.8016, 1.402, 2.263, 3.381, 4.794, 6.528, 8.608");
        }
      }
    }
  }

