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

  cell(gf180mcu_fd_sc_mcu7t5v0__and3_4) {
    area : 43.904000 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.08731, 0.0872, 0.08684, 0.08655, 0.08679, 0.08661, 0.08671, \
                 0.08675, 0.08679, 0.08673");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.05749, -0.0574, -0.05744, -0.05739, -0.05741, -0.05726, -0.05761, \
                 -0.05761, -0.05759, -0.05764");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.08726, 0.08714, 0.08695, 0.08673, 0.08678, 0.08662, 0.08681, \
                 0.08683, 0.08673, 0.08672");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.05749, -0.05748, -0.05747, -0.05741, -0.05752, -0.05743, -0.05768, \
                 -0.05765, -0.05764, -0.05762");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.08707, 0.08699, 0.08676, 0.08679, 0.08679, 0.08669, 0.0868, \
                 0.08681, 0.08679, 0.08675");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.01496, 0.01504, 0.01491, 0.01514, 0.01495, 0.01504, 0.0147, \
                 0.01469, 0.01459, 0.01469");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.1023, 0.1073, 0.1134, 0.1159, 0.1181, 0.1198, 0.1213, 0.1223, \
                 0.1228, 0.1233");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.07872, -0.07851, -0.0784, -0.07835, -0.07821, -0.07815, -0.07846, \
                 -0.07836, -0.07837, -0.07835");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.09186, 0.08514, 0.07995, 0.07867, 0.07852, 0.07839, 0.07849, \
                 0.07846, 0.07844, 0.07847");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.07846, -0.07847, -0.07838, -0.07831, -0.07821, -0.07812, -0.07842, \
                 -0.0785, -0.07842, -0.07843");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.08663, 0.0865, 0.08658, 0.0862, 0.08623, 0.08617, 0.08621, 0.08625, \
                 0.08618, 0.08613");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.06553, -0.06563, -0.06548, -0.06546, -0.06542, -0.06546, -0.06573, \
                 -0.06573, -0.06577, -0.06586");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.07899, 0.07893, 0.07855, 0.07853, 0.07846, 0.07848, 0.07855, \
                 0.07853, 0.07849, 0.07855");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.0786, -0.07851, -0.07837, -0.07818, -0.0782, -0.07816, -0.07843, \
                 -0.07833, -0.0785, -0.0784");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.08547, 0.08065, 0.07858, 0.07858, 0.07846, 0.07834, 0.07857, \
                 0.07856, 0.07849, 0.07855");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.07845, -0.07843, -0.07852, -0.07825, -0.07829, -0.07818, -0.07838, \
                 -0.0784, -0.07839, -0.07838");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.08386, 0.08059, 0.07867, 0.07856, 0.07843, 0.07837, 0.07858, \
                 0.07851, 0.07853, 0.07857");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.07851, -0.07856, -0.07842, -0.07823, -0.07831, -0.07822, -0.07844, \
                 -0.07837, -0.07843, -0.07839");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.9569 ;
      max_transition : 4 ;
      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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.6537, 0.6406, 0.6214, 0.6119, 0.6061, 0.6028, 0.6006, 0.5995, 0.5983, 0.5976",\
                 "0.6539, 0.6401, 0.6218, 0.6124, 0.6064, 0.6031, 0.6011, 0.5994, 0.5986, 0.598",\
                 "0.6619, 0.648, 0.6278, 0.6177, 0.6124, 0.6095, 0.6069, 0.6052, 0.6045, 0.604",\
                 "0.7183, 0.7013, 0.6725, 0.656, 0.6472, 0.6416, 0.638, 0.6361, 0.6348, 0.6337",\
                 "0.8354, 0.8126, 0.7714, 0.7427, 0.7242, 0.7135, 0.7071, 0.7029, 0.7, 0.6981",\
                 "1.012, 0.9833, 0.926, 0.8817, 0.8538, 0.8347, 0.8226, 0.8149, 0.81, 0.8059",\
                 "1.243, 1.211, 1.139, 1.077, 1.036, 1.007, 0.9875, 0.9749, 0.9657, 0.9595",\
                 "1.531, 1.495, 1.41, 1.332, 1.273, 1.233, 1.205, 1.185, 1.172, 1.162",\
                 "1.876, 1.835, 1.741, 1.644, 1.571, 1.516, 1.477, 1.449, 1.43, 1.416",\
                 "2.277, 2.236, 2.13, 2.017, 1.927, 1.857, 1.806, 1.769, 1.743, 1.722");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.5055, 0.4812, 0.443, 0.4169, 0.4015, 0.3939, 0.3926, 0.3914, 0.3913, 0.3958",\
                 "0.5036, 0.4805, 0.4409, 0.4154, 0.4005, 0.3919, 0.3901, 0.3879, 0.3898, 0.3938",\
                 "0.507, 0.4834, 0.445, 0.4187, 0.4029, 0.3949, 0.3936, 0.3919, 0.3948, 0.4018",\
                 "0.5465, 0.5218, 0.4803, 0.4511, 0.4325, 0.4229, 0.4176, 0.4169, 0.4208, 0.4238",\
                 "0.638, 0.6121, 0.5664, 0.5297, 0.5055, 0.4914, 0.4851, 0.4799, 0.4798, 0.4828",\
                 "0.7835, 0.755, 0.6998, 0.6561, 0.6254, 0.6014, 0.5891, 0.5834, 0.5788, 0.5803",\
                 "0.9872, 0.9549, 0.8902, 0.8347, 0.7956, 0.7679, 0.7471, 0.7334, 0.7248, 0.7268",\
                 "1.243, 1.207, 1.135, 1.068, 1.014, 0.9769, 0.9566, 0.9389, 0.9238, 0.9163",\
                 "1.554, 1.515, 1.429, 1.352, 1.289, 1.238, 1.205, 1.19, 1.17, 1.158",\
                 "1.919, 1.878, 1.782, 1.691, 1.618, 1.556, 1.513, 1.483, 1.469, 1.453");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.7445, 0.7287, 0.7051, 0.6911, 0.6834, 0.6782, 0.6754, 0.6737, 0.6724, 0.6713",\
                 "0.7434, 0.7277, 0.7042, 0.6904, 0.6821, 0.6771, 0.6742, 0.6719, 0.6708, 0.67",\
                 "0.7504, 0.7343, 0.7093, 0.6951, 0.6873, 0.6826, 0.6797, 0.6775, 0.6762, 0.6755",\
                 "0.8058, 0.787, 0.7555, 0.7352, 0.7239, 0.7171, 0.7129, 0.7099, 0.7084, 0.7072",\
                 "0.9293, 0.9057, 0.8604, 0.8271, 0.8072, 0.7947, 0.7869, 0.7816, 0.7781, 0.7757",\
                 "1.116, 1.087, 1.027, 0.9781, 0.9473, 0.9252, 0.9115, 0.9022, 0.8959, 0.8916",\
                 "1.363, 1.33, 1.257, 1.191, 1.143, 1.11, 1.089, 1.074, 1.064, 1.056",\
                 "1.671, 1.633, 1.548, 1.463, 1.4, 1.354, 1.322, 1.3, 1.284, 1.273",\
                 "2.039, 1.998, 1.902, 1.799, 1.72, 1.658, 1.615, 1.584, 1.56, 1.544",\
                 "2.469, 2.427, 2.319, 2.201, 2.103, 2.025, 1.968, 1.926, 1.895, 1.873");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.5059, 0.4823, 0.4431, 0.4178, 0.4025, 0.3944, 0.3931, 0.3914, 0.3938, 0.4023",\
                 "0.5027, 0.4786, 0.4404, 0.4152, 0.4, 0.3914, 0.3896, 0.3889, 0.3903, 0.3933",\
                 "0.5021, 0.4793, 0.4399, 0.4129, 0.3977, 0.3899, 0.3886, 0.3869, 0.3893, 0.3968",\
                 "0.5356, 0.5112, 0.4692, 0.4409, 0.4227, 0.4129, 0.4096, 0.4084, 0.4128, 0.4128",\
                 "0.6221, 0.5958, 0.5517, 0.5163, 0.4925, 0.4784, 0.4726, 0.4699, 0.4703, 0.4728",\
                 "0.7708, 0.7417, 0.6878, 0.6445, 0.6167, 0.5924, 0.5811, 0.5739, 0.5718, 0.5723",\
                 "0.9797, 0.9478, 0.8836, 0.8279, 0.7893, 0.7629, 0.7436, 0.7309, 0.7233, 0.7198",\
                 "1.244, 1.21, 1.137, 1.069, 1.017, 0.9789, 0.9561, 0.9394, 0.9238, 0.9163",\
                 "1.565, 1.529, 1.444, 1.367, 1.304, 1.252, 1.221, 1.203, 1.185, 1.172",\
                 "1.943, 1.904, 1.81, 1.721, 1.642, 1.585, 1.539, 1.512, 1.5, 1.478");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.825, 0.808, 0.7789, 0.7616, 0.7515, 0.7449, 0.741, 0.7387, 0.7367, 0.7355",\
                 "0.8225, 0.8055, 0.7772, 0.7594, 0.7489, 0.7426, 0.7386, 0.736, 0.7342, 0.7329",\
                 "0.8296, 0.8117, 0.7823, 0.7646, 0.7543, 0.7479, 0.7444, 0.7418, 0.7397, 0.7387",\
                 "0.8849, 0.8654, 0.8297, 0.8063, 0.7934, 0.785, 0.7794, 0.7761, 0.7738, 0.7719",\
                 "1.016, 0.9917, 0.9443, 0.9075, 0.8842, 0.8701, 0.8609, 0.8547, 0.8506, 0.8478",\
                 "1.218, 1.188, 1.126, 1.074, 1.037, 1.013, 0.9973, 0.9867, 0.9795, 0.9743",\
                 "1.488, 1.454, 1.379, 1.307, 1.255, 1.22, 1.194, 1.177, 1.166, 1.157",\
                 "1.826, 1.789, 1.701, 1.611, 1.543, 1.492, 1.455, 1.429, 1.411, 1.398",\
                 "2.233, 2.193, 2.094, 1.987, 1.9, 1.832, 1.783, 1.746, 1.72, 1.701",\
                 "2.712, 2.669, 2.561, 2.436, 2.331, 2.246, 2.18, 2.132, 2.096, 2.069");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.5059, 0.4825, 0.4431, 0.4178, 0.4026, 0.3944, 0.3936, 0.3914, 0.3938, 0.4023",\
                 "0.5026, 0.4793, 0.4402, 0.415, 0.3994, 0.3909, 0.3891, 0.3904, 0.3903, 0.3923",\
                 "0.499, 0.4752, 0.4369, 0.4107, 0.3949, 0.3869, 0.3856, 0.3839, 0.3868, 0.3938",\
                 "0.5256, 0.5014, 0.4603, 0.432, 0.4152, 0.4064, 0.4036, 0.4019, 0.4063, 0.4063",\
                 "0.6088, 0.5828, 0.5387, 0.5053, 0.4837, 0.4709, 0.4651, 0.4609, 0.4633, 0.4643",\
                 "0.7626, 0.7341, 0.6804, 0.6376, 0.6118, 0.5904, 0.5801, 0.5754, 0.5698, 0.5703",\
                 "0.9823, 0.9522, 0.8865, 0.8319, 0.7936, 0.7719, 0.7516, 0.7369, 0.7313, 0.7293",\
                 "1.263, 1.23, 1.155, 1.088, 1.037, 0.9994, 0.9841, 0.9629, 0.9488, 0.9418",\
                 "1.606, 1.571, 1.486, 1.408, 1.343, 1.296, 1.264, 1.249, 1.231, 1.221",\
                 "2.009, 1.973, 1.881, 1.79, 1.711, 1.654, 1.607, 1.583, 1.571, 1.553");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.1608, 0.1798, 0.2307, 0.3101, 0.4222, 0.5754, 0.7765, 1.03, 1.339, 1.708",\
                 "0.1678, 0.1867, 0.2377, 0.3169, 0.429, 0.5822, 0.7833, 1.037, 1.346, 1.715",\
                 "0.1936, 0.2124, 0.2632, 0.3424, 0.4544, 0.6076, 0.8087, 1.062, 1.371, 1.74",\
                 "0.2425, 0.2616, 0.3125, 0.3915, 0.5033, 0.6563, 0.8571, 1.11, 1.419, 1.788",\
                 "0.3003, 0.3207, 0.374, 0.4545, 0.5668, 0.7193, 0.9195, 1.172, 1.481, 1.85",\
                 "0.3613, 0.3836, 0.441, 0.5246, 0.6381, 0.791, 0.9907, 1.243, 1.551, 1.92",\
                 "0.4241, 0.4486, 0.511, 0.5986, 0.7159, 0.8698, 1.069, 1.321, 1.629, 1.996",\
                 "0.4891, 0.5158, 0.5829, 0.6753, 0.7965, 0.9536, 1.156, 1.407, 1.715, 2.082",\
                 "0.5555, 0.5846, 0.6564, 0.7546, 0.879, 1.04, 1.246, 1.501, 1.81, 2.176",\
                 "0.6244, 0.6549, 0.7318, 0.8358, 0.9649, 1.129, 1.339, 1.598, 1.911, 2.28");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.2477, 0.2715, 0.3381, 0.4482, 0.6099, 0.8341, 1.13, 1.502, 1.958, 2.501",\
                 "0.2507, 0.2747, 0.3411, 0.4512, 0.6129, 0.8372, 1.132, 1.505, 1.961, 2.504",\
                 "0.2655, 0.2895, 0.3561, 0.4662, 0.6277, 0.8518, 1.147, 1.52, 1.976, 2.516",\
                 "0.3016, 0.3255, 0.3916, 0.501, 0.6623, 0.8863, 1.181, 1.554, 2.009, 2.551",\
                 "0.3479, 0.3724, 0.439, 0.5484, 0.7093, 0.9322, 1.227, 1.598, 2.053, 2.597",\
                 "0.4007, 0.4254, 0.4929, 0.6014, 0.7619, 0.9846, 1.278, 1.65, 2.104, 2.647",\
                 "0.4548, 0.4809, 0.5508, 0.6606, 0.8207, 1.042, 1.335, 1.705, 2.159, 2.701",\
                 "0.5082, 0.5358, 0.6087, 0.7209, 0.8827, 1.105, 1.397, 1.766, 2.219, 2.76",\
                 "0.5596, 0.5891, 0.6654, 0.7801, 0.9449, 1.169, 1.463, 1.832, 2.284, 2.824",\
                 "0.6085, 0.6399, 0.7198, 0.837, 1.005, 1.233, 1.531, 1.902, 2.353, 2.893");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.05632, 0.07656, 0.135, 0.2412, 0.4118, 0.6623, 0.9957, 1.417, 1.933, 2.55",\
                 "0.05628, 0.07652, 0.1356, 0.2411, 0.4118, 0.6611, 0.9954, 1.418, 1.933, 2.549",\
                 "0.05658, 0.07676, 0.1354, 0.2416, 0.4118, 0.662, 0.9955, 1.416, 1.933, 2.549",\
                 "0.0616, 0.08148, 0.1386, 0.2427, 0.4125, 0.6618, 0.9957, 1.416, 1.933, 2.548",\
                 "0.07396, 0.09424, 0.1501, 0.2514, 0.4161, 0.6626, 0.9942, 1.415, 1.932, 2.549",\
                 "0.09008, 0.1115, 0.1674, 0.265, 0.4246, 0.6652, 0.9954, 1.417, 1.931, 2.547",\
                 "0.1064, 0.1302, 0.1878, 0.2846, 0.4414, 0.6758, 0.9994, 1.417, 1.932, 2.543",\
                 "0.1246, 0.1516, 0.2126, 0.3078, 0.463, 0.6946, 1.013, 1.423, 1.932, 2.544",\
                 "0.1434, 0.172, 0.2378, 0.3326, 0.4858, 0.7182, 1.036, 1.442, 1.942, 2.547",\
                 "0.1616, 0.1922, 0.2638, 0.3606, 0.5108, 0.7422, 1.063, 1.473, 1.969, 2.563");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.08272, 0.1113, 0.1994, 0.3707, 0.6439, 1.036, 1.56, 2.222, 3.035, 3.997",\
                 "0.0823, 0.111, 0.1992, 0.3705, 0.6439, 1.037, 1.562, 2.225, 3.035, 3.997",\
                 "0.08284, 0.1112, 0.1995, 0.3704, 0.6428, 1.036, 1.56, 2.222, 3.032, 3.993",\
                 "0.0829, 0.1116, 0.2002, 0.371, 0.6431, 1.036, 1.562, 2.225, 3.031, 3.994",\
                 "0.0871, 0.1161, 0.2042, 0.3741, 0.6454, 1.037, 1.56, 2.225, 3.031, 4",\
                 "0.09398, 0.1236, 0.2094, 0.378, 0.6486, 1.04, 1.561, 2.223, 3.034, 3.998",\
                 "0.1048, 0.1342, 0.2196, 0.386, 0.6528, 1.043, 1.564, 2.225, 3.034, 3.993",\
                 "0.1166, 0.148, 0.233, 0.3978, 0.665, 1.049, 1.567, 2.227, 3.031, 3.993",\
                 "0.1302, 0.1614, 0.248, 0.4122, 0.6808, 1.067, 1.579, 2.23, 3.035, 3.994",\
                 "0.1448, 0.1774, 0.265, 0.4274, 0.6986, 1.089, 1.6, 2.244, 3.039, 3.999");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.178, 0.1979, 0.2504, 0.3306, 0.4429, 0.5962, 0.7971, 1.05, 1.36, 1.728",\
                 "0.1843, 0.2042, 0.2567, 0.337, 0.4493, 0.6026, 0.8035, 1.057, 1.366, 1.734",\
                 "0.2099, 0.2297, 0.2822, 0.3623, 0.4746, 0.6278, 0.8287, 1.082, 1.391, 1.76",\
                 "0.262, 0.2817, 0.334, 0.4138, 0.5258, 0.6787, 0.8795, 1.133, 1.442, 1.81",\
                 "0.3273, 0.3485, 0.4033, 0.4844, 0.5966, 0.7489, 0.9491, 1.202, 1.51, 1.879",\
                 "0.3997, 0.423, 0.4817, 0.5655, 0.6789, 0.8311, 1.031, 1.283, 1.591, 1.959",\
                 "0.4776, 0.5028, 0.5665, 0.6541, 0.7704, 0.9233, 1.122, 1.374, 1.681, 2.049",\
                 "0.5614, 0.5892, 0.6578, 0.7504, 0.8699, 1.026, 1.227, 1.478, 1.785, 2.152",\
                 "0.6506, 0.681, 0.7548, 0.8535, 0.9769, 1.136, 1.34, 1.593, 1.9, 2.267",\
                 "0.747, 0.7789, 0.858, 0.9627, 1.091, 1.254, 1.46, 1.718, 2.028, 2.395");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.2684, 0.2924, 0.3589, 0.4688, 0.6307, 0.8548, 1.15, 1.523, 1.979, 2.52",\
                 "0.2701, 0.294, 0.3606, 0.4707, 0.6325, 0.8566, 1.152, 1.525, 1.98, 2.523",\
                 "0.2767, 0.3008, 0.3673, 0.4772, 0.6389, 0.8629, 1.159, 1.531, 1.987, 2.528",\
                 "0.2977, 0.3217, 0.3879, 0.4975, 0.6589, 0.8828, 1.178, 1.55, 2.006, 2.548",\
                 "0.3297, 0.3544, 0.4217, 0.5313, 0.6924, 0.9155, 1.21, 1.582, 2.038, 2.581",\
                 "0.368, 0.3935, 0.4622, 0.5719, 0.7326, 0.9551, 1.249, 1.62, 2.074, 2.617",\
                 "0.4048, 0.4318, 0.5034, 0.6154, 0.7765, 0.9984, 1.291, 1.662, 2.116, 2.658",\
                 "0.4371, 0.4659, 0.5412, 0.6557, 0.82, 1.043, 1.335, 1.705, 2.158, 2.699",\
                 "0.4643, 0.4947, 0.5734, 0.6916, 0.8591, 1.087, 1.382, 1.751, 2.203, 2.743",\
                 "0.4843, 0.5165, 0.5993, 0.721, 0.8917, 1.124, 1.424, 1.797, 2.249, 2.788");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.0614, 0.08196, 0.14, 0.2438, 0.4129, 0.6621, 0.9951, 1.417, 1.933, 2.549",\
                 "0.06142, 0.08196, 0.1398, 0.2441, 0.4129, 0.6621, 0.9951, 1.416, 1.933, 2.549",\
                 "0.0615, 0.08222, 0.14, 0.2444, 0.4135, 0.6628, 0.9957, 1.418, 1.933, 2.546",\
                 "0.06522, 0.08556, 0.1425, 0.246, 0.4134, 0.6629, 0.9959, 1.416, 1.933, 2.545",\
                 "0.07748, 0.09846, 0.1539, 0.2529, 0.4174, 0.6625, 0.995, 1.418, 1.933, 2.548",\
                 "0.09336, 0.1156, 0.1704, 0.2664, 0.4248, 0.6656, 0.9954, 1.416, 1.932, 2.547",\
                 "0.1112, 0.1354, 0.1934, 0.286, 0.4398, 0.6746, 0.9986, 1.418, 1.932, 2.545",\
                 "0.1296, 0.1552, 0.2174, 0.3082, 0.4604, 0.6906, 1.009, 1.421, 1.932, 2.545",\
                 "0.1482, 0.1776, 0.244, 0.3342, 0.4832, 0.7126, 1.031, 1.436, 1.939, 2.546",\
                 "0.1682, 0.2006, 0.2716, 0.3632, 0.5086, 0.7372, 1.055, 1.462, 1.96, 2.558");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.0829, 0.1112, 0.1997, 0.3706, 0.6428, 1.037, 1.561, 2.223, 3.032, 3.994",\
                 "0.08254, 0.1108, 0.1993, 0.3704, 0.6441, 1.037, 1.56, 2.222, 3.033, 3.997",\
                 "0.08308, 0.1112, 0.1994, 0.3707, 0.6428, 1.036, 1.56, 2.222, 3.032, 3.994",\
                 "0.08338, 0.1116, 0.2004, 0.371, 0.6431, 1.037, 1.562, 2.223, 3.029, 3.999",\
                 "0.0881, 0.1174, 0.2046, 0.3747, 0.6443, 1.037, 1.562, 2.224, 3.03, 4.001",\
                 "0.09608, 0.1253, 0.2106, 0.3784, 0.6482, 1.04, 1.563, 2.224, 3.032, 4",\
                 "0.1054, 0.137, 0.2232, 0.3888, 0.655, 1.042, 1.564, 2.227, 3.03, 3.997",\
                 "0.1176, 0.1486, 0.2372, 0.4034, 0.67, 1.052, 1.567, 2.226, 3.037, 3.994",\
                 "0.1304, 0.1634, 0.2538, 0.419, 0.689, 1.073, 1.581, 2.23, 3.034, 4",\
                 "0.1444, 0.1782, 0.271, 0.4368, 0.7098, 1.101, 1.61, 2.25, 3.042, 3.997");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.1905, 0.211, 0.2651, 0.3465, 0.4595, 0.6129, 0.8139, 1.067, 1.376, 1.745",\
                 "0.1964, 0.2169, 0.2709, 0.3523, 0.4654, 0.6188, 0.8198, 1.073, 1.382, 1.751",\
                 "0.222, 0.2426, 0.2965, 0.3778, 0.4908, 0.6441, 0.8451, 1.098, 1.408, 1.776",\
                 "0.2765, 0.2968, 0.3503, 0.4311, 0.5439, 0.697, 0.8977, 1.151, 1.46, 1.829",\
                 "0.3491, 0.3708, 0.4266, 0.5084, 0.6209, 0.7733, 0.9734, 1.226, 1.535, 1.903",\
                 "0.4325, 0.456, 0.5155, 0.6001, 0.7137, 0.8659, 1.065, 1.317, 1.625, 1.993",\
                 "0.5259, 0.552, 0.6163, 0.7044, 0.8205, 0.9732, 1.172, 1.423, 1.731, 2.099",\
                 "0.63, 0.6585, 0.728, 0.8209, 0.9407, 1.096, 1.296, 1.546, 1.853, 2.22",\
                 "0.7457, 0.7761, 0.8513, 0.9503, 1.074, 1.232, 1.434, 1.687, 1.993, 2.359",\
                 "0.8735, 0.9058, 0.9867, 1.092, 1.22, 1.381, 1.587, 1.843, 2.152, 2.518");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.2786, 0.3026, 0.3692, 0.4791, 0.641, 0.8651, 1.161, 1.533, 1.989, 2.53",\
                 "0.2801, 0.3042, 0.3706, 0.4807, 0.6424, 0.8666, 1.162, 1.535, 1.99, 2.534",\
                 "0.2815, 0.3054, 0.3721, 0.482, 0.6438, 0.8678, 1.163, 1.536, 1.992, 2.533",\
                 "0.2886, 0.3126, 0.379, 0.4888, 0.6502, 0.8743, 1.169, 1.542, 1.997, 2.54",\
                 "0.3032, 0.3278, 0.3947, 0.5046, 0.6659, 0.8893, 1.184, 1.556, 2.012, 2.555",\
                 "0.3199, 0.3456, 0.4152, 0.5258, 0.6869, 0.9095, 1.203, 1.575, 2.03, 2.573",\
                 "0.3308, 0.3586, 0.4319, 0.5454, 0.7087, 0.9314, 1.224, 1.595, 2.049, 2.591",\
                 "0.3339, 0.3632, 0.4406, 0.5582, 0.7257, 0.9518, 1.245, 1.615, 2.068, 2.608",\
                 "0.3264, 0.3577, 0.4391, 0.5611, 0.733, 0.9653, 1.263, 1.634, 2.086, 2.626",\
                 "0.307, 0.34, 0.4256, 0.5523, 0.7288, 0.9666, 1.272, 1.649, 2.102, 2.641");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.06552, 0.08706, 0.1451, 0.2481, 0.4159, 0.6627, 0.9965, 1.417, 1.932, 2.548",\
                 "0.06556, 0.08682, 0.1447, 0.2485, 0.4155, 0.6632, 0.9962, 1.417, 1.933, 2.548",\
                 "0.06572, 0.08686, 0.1451, 0.2479, 0.4158, 0.6632, 0.996, 1.416, 1.931, 2.547",\
                 "0.0683, 0.0892, 0.1466, 0.2493, 0.4161, 0.6633, 0.9965, 1.418, 1.933, 2.548",\
                 "0.08056, 0.1018, 0.1577, 0.2559, 0.4196, 0.6643, 0.9964, 1.418, 1.933, 2.548",\
                 "0.096, 0.1194, 0.175, 0.2692, 0.4266, 0.6676, 0.9962, 1.418, 1.932, 2.547",\
                 "0.114, 0.1392, 0.1968, 0.2878, 0.4414, 0.6742, 0.999, 1.418, 1.932, 2.547",\
                 "0.1328, 0.1602, 0.2212, 0.3118, 0.4618, 0.6912, 1.009, 1.422, 1.932, 2.544",\
                 "0.1526, 0.1842, 0.2492, 0.3374, 0.4846, 0.7126, 1.028, 1.435, 1.939, 2.546",\
                 "0.1744, 0.2074, 0.2774, 0.3684, 0.5114, 0.739, 1.054, 1.46, 1.956, 2.555");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.001, 0.007598, 0.03076, 0.07498, 0.1439, 0.2406, 0.3678, 0.528, 0.7237, 0.9569");
          values("0.08292, 0.1113, 0.1997, 0.3706, 0.6428, 1.037, 1.56, 2.223, 3.032, 3.994",\
                 "0.08232, 0.1111, 0.1994, 0.3704, 0.6439, 1.037, 1.56, 2.221, 3.033, 4",\
                 "0.08294, 0.1114, 0.1995, 0.3707, 0.6429, 1.037, 1.56, 2.222, 3.031, 3.993",\
                 "0.08318, 0.1113, 0.2004, 0.3707, 0.6443, 1.037, 1.56, 2.224, 3.029, 3.996",\
                 "0.0875, 0.1166, 0.2041, 0.3737, 0.6452, 1.036, 1.562, 2.225, 3.033, 4",\
                 "0.09622, 0.1267, 0.2129, 0.3794, 0.6482, 1.039, 1.56, 2.221, 3.034, 4.001",\
                 "0.1072, 0.1378, 0.2266, 0.3942, 0.658, 1.043, 1.564, 2.227, 3.034, 3.999",\
                 "0.119, 0.1522, 0.2432, 0.4112, 0.6796, 1.058, 1.569, 2.224, 3.034, 3.993",\
                 "0.1306, 0.1652, 0.261, 0.4292, 0.702, 1.087, 1.591, 2.236, 3.033, 3.998",\
                 "0.1446, 0.1796, 0.2792, 0.4498, 0.7276, 1.119, 1.628, 2.264, 3.05, 3.998");
        }
      }
    }
  }

