/*
 * 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.000790245" ;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.07083, 0.07071, 0.07051, 0.07037, 0.07032, 0.07044, 0.07046, \
                  0.07038, 0.07036, 0.07034");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.04707, -0.047, -0.04693, -0.04701, -0.04715, -0.04722, -0.04728, \
                  -0.0472, -0.04727, -0.04734");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.07079, 0.07067, 0.07054, 0.07038, 0.07028, 0.07042, 0.07043, \
                  0.07041, 0.0704, 0.07037");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.04694, -0.04691, -0.04685, -0.04693, -0.0469, -0.04712, -0.04705, \
                  -0.04712, -0.04716, -0.0472");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.07065, 0.07058, 0.07052, 0.07035, 0.07031, 0.07043, 0.07045, \
                  0.07041, 0.0704, 0.07035");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.01016, 0.0102, 0.01023, 0.01006, 0.01, 0.009833, 0.009683, 0.009727, \
                  0.009604, 0.009519");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.07464, 0.07642, 0.08041, 0.08392, 0.08632, 0.08801, 0.08909, \
                  0.0899, 0.09038, 0.09076");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.06386, -0.06361, -0.06356, -0.06344, -0.06348, -0.06366, -0.06365, \
                  -0.06361, -0.06371, -0.06363");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.07161, 0.06942, 0.0652, 0.06396, 0.06365, 0.06364, 0.06366, \
                  0.06364, 0.0636, 0.06359");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.06367, -0.06349, -0.06362, -0.06353, -0.06348, -0.06364, -0.06363, \
                  -0.06369, -0.0636, -0.06361");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.06947, 0.06955, 0.06928, 0.06925, 0.06922, 0.06928, 0.06926, \
                  0.06921, 0.06911, 0.0691");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.05484, -0.05465, -0.05472, -0.05457, -0.05465, -0.05486, -0.05492, \
                  -0.05499, -0.05503, -0.05516");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.06415, 0.06391, 0.06377, 0.06371, 0.06366, 0.06376, 0.0637, \
                  0.06377, 0.06369, 0.06373");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.0638, -0.06359, -0.06351, -0.06351, -0.06345, -0.06362, -0.06363, \
                  -0.0636, -0.0636, -0.06358");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.06991, 0.06595, 0.06386, 0.06375, 0.0637, 0.06374, 0.06374, \
                  0.06368, 0.06374, 0.06372");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.06371, -0.06354, -0.06367, -0.06346, -0.06351, -0.06361, -0.06366, \
                  -0.06362, -0.0636, -0.06363");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.06817, 0.06505, 0.06375, 0.06371, 0.06367, 0.06374, 0.06374, \
                  0.06372, 0.06374, 0.06372");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.06378, -0.0636, -0.06359, -0.06353, -0.06345, -0.06365, -0.06361, \
                  -0.06362, -0.06366, -0.06363");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.9869 ;
      max_transition : 7 ;
      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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.5234, 0.5158, 0.5065, 0.5024, 0.5005, 0.499, 0.4984, 0.4976, 0.4972, 0.497",\
                 "0.5238, 0.5158, 0.5069, 0.5029, 0.5009, 0.4997, 0.4987, 0.4981, 0.4977, 0.4974",\
                 "0.5263, 0.5182, 0.5086, 0.5044, 0.5023, 0.5013, 0.5006, 0.5002, 0.4998, 0.4994",\
                 "0.5573, 0.5462, 0.5317, 0.5241, 0.5203, 0.5181, 0.5169, 0.5164, 0.5158, 0.5155",\
                 "0.6274, 0.6123, 0.5875, 0.5721, 0.5639, 0.5594, 0.5568, 0.555, 0.5539, 0.5532",\
                 "0.7346, 0.7144, 0.6792, 0.6544, 0.6394, 0.6306, 0.6251, 0.6218, 0.6192, 0.6176",\
                 "0.8782, 0.855, 0.8085, 0.7723, 0.7491, 0.7338, 0.7248, 0.7187, 0.7146, 0.7119",\
                 "1.058, 1.032, 0.9748, 0.9264, 0.8935, 0.8711, 0.857, 0.8484, 0.8415, 0.8369",\
                 "1.276, 1.246, 1.178, 1.118, 1.075, 1.045, 1.025, 1.011, 1.001, 0.9946",\
                 "1.529, 1.497, 1.422, 1.349, 1.295, 1.256, 1.228, 1.209, 1.196, 1.186");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.3964, 0.3791, 0.3525, 0.3358, 0.3276, 0.3238, 0.3242, 0.3233, 0.3257, 0.3308",\
                 "0.3942, 0.3765, 0.3506, 0.334, 0.3258, 0.322, 0.3229, 0.3215, 0.3257, 0.3312",\
                 "0.3941, 0.3768, 0.3507, 0.3334, 0.3247, 0.322, 0.322, 0.3233, 0.323, 0.3321",\
                 "0.4133, 0.3955, 0.3683, 0.3488, 0.3385, 0.3346, 0.335, 0.3354, 0.3365, 0.3424",\
                 "0.4686, 0.4493, 0.4184, 0.3945, 0.3803, 0.3733, 0.3715, 0.3705, 0.3721, 0.3798",\
                 "0.5564, 0.535, 0.4973, 0.4695, 0.4512, 0.439, 0.434, 0.4317, 0.4321, 0.4382",\
                 "0.6819, 0.6582, 0.6147, 0.578, 0.5533, 0.5398, 0.529, 0.5217, 0.519, 0.5264",\
                 "0.8429, 0.8161, 0.7658, 0.7229, 0.6877, 0.6663, 0.6572, 0.6482, 0.6407, 0.6473",\
                 "1.04, 1.01, 0.9506, 0.8979, 0.8577, 0.8283, 0.812, 0.8052, 0.8, 0.8078",\
                 "1.271, 1.239, 1.172, 1.114, 1.064, 1.024, 0.9988, 0.9839, 0.9831, 0.9996");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.594, 0.5844, 0.572, 0.5658, 0.5621, 0.5601, 0.5586, 0.5579, 0.5573, 0.5572",\
                 "0.5925, 0.5833, 0.5705, 0.5642, 0.5608, 0.5586, 0.5575, 0.5567, 0.5562, 0.5556",\
                 "0.594, 0.5847, 0.571, 0.5653, 0.5618, 0.5598, 0.5589, 0.5581, 0.5575, 0.5573",\
                 "0.6235, 0.612, 0.5946, 0.5848, 0.5802, 0.5775, 0.5759, 0.5749, 0.5742, 0.5736",\
                 "0.6976, 0.6815, 0.655, 0.637, 0.6269, 0.6215, 0.6183, 0.616, 0.6147, 0.6136",\
                 "0.8105, 0.7906, 0.7528, 0.726, 0.7081, 0.698, 0.6922, 0.688, 0.6849, 0.6833",\
                 "0.9639, 0.94, 0.8919, 0.8527, 0.8259, 0.8104, 0.7995, 0.7923, 0.7878, 0.7846",\
                 "1.155, 1.129, 1.07, 1.019, 0.9825, 0.9578, 0.942, 0.9313, 0.924, 0.9188",\
                 "1.386, 1.357, 1.289, 1.225, 1.178, 1.145, 1.122, 1.107, 1.096, 1.088",\
                 "1.657, 1.625, 1.549, 1.473, 1.414, 1.371, 1.341, 1.32, 1.305, 1.294");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.3962, 0.3791, 0.3528, 0.3364, 0.3277, 0.3243, 0.3242, 0.3233, 0.3253, 0.3321",\
                 "0.394, 0.377, 0.3506, 0.3343, 0.3252, 0.3225, 0.3224, 0.3233, 0.3253, 0.3308",\
                 "0.3908, 0.3733, 0.3477, 0.3311, 0.3215, 0.3189, 0.3184, 0.3192, 0.3217, 0.329",\
                 "0.4067, 0.3891, 0.3612, 0.343, 0.3325, 0.3288, 0.3278, 0.3269, 0.3307, 0.3379",\
                 "0.4571, 0.438, 0.4078, 0.3848, 0.3715, 0.3652, 0.3625, 0.3624, 0.3626, 0.3726",\
                 "0.5448, 0.5239, 0.4877, 0.4601, 0.4424, 0.4309, 0.4259, 0.4227, 0.4231, 0.431",\
                 "0.6734, 0.6503, 0.6058, 0.5705, 0.545, 0.5331, 0.5231, 0.5177, 0.5167, 0.5241",\
                 "0.8398, 0.8131, 0.7632, 0.7204, 0.6879, 0.6654, 0.6568, 0.6491, 0.6425, 0.6509",\
                 "1.042, 1.014, 0.9558, 0.9035, 0.8634, 0.8346, 0.8174, 0.8111, 0.802, 0.8137",\
                 "1.281, 1.251, 1.187, 1.127, 1.077, 1.043, 1.015, 1.003, 1.002, 1.019");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.6563, 0.6455, 0.6295, 0.6217, 0.6163, 0.6136, 0.6121, 0.611, 0.61, 0.6095",\
                 "0.653, 0.6418, 0.6264, 0.6183, 0.6133, 0.6106, 0.6091, 0.6078, 0.607, 0.6064",\
                 "0.6539, 0.6429, 0.6267, 0.6185, 0.6137, 0.6111, 0.6095, 0.6086, 0.6077, 0.6071",\
                 "0.6829, 0.6705, 0.6504, 0.6394, 0.6334, 0.6298, 0.6278, 0.6266, 0.6258, 0.6251",\
                 "0.7612, 0.7443, 0.7158, 0.6957, 0.6847, 0.6781, 0.674, 0.6715, 0.6698, 0.6687",\
                 "0.8822, 0.8621, 0.8226, 0.7931, 0.7733, 0.7615, 0.7547, 0.7501, 0.7469, 0.7448",\
                 "1.048, 1.024, 0.9739, 0.9322, 0.9036, 0.8854, 0.8734, 0.8655, 0.8601, 0.8565",\
                 "1.258, 1.231, 1.171, 1.117, 1.078, 1.051, 1.033, 1.021, 1.012, 1.006",\
                 "1.513, 1.483, 1.414, 1.347, 1.296, 1.259, 1.233, 1.216, 1.204, 1.195",\
                 "1.814, 1.782, 1.704, 1.624, 1.561, 1.513, 1.479, 1.455, 1.438, 1.426");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.396, 0.3786, 0.3529, 0.336, 0.3279, 0.3243, 0.3247, 0.3255, 0.3275, 0.3335",\
                 "0.3937, 0.377, 0.3506, 0.3344, 0.3256, 0.322, 0.322, 0.321, 0.3226, 0.3299",\
                 "0.3898, 0.372, 0.346, 0.3291, 0.3205, 0.3175, 0.3179, 0.3188, 0.3208, 0.3285",\
                 "0.4009, 0.3833, 0.3561, 0.3379, 0.3284, 0.3243, 0.3242, 0.326, 0.3248, 0.3321",\
                 "0.4472, 0.4278, 0.3985, 0.3776, 0.3648, 0.3589, 0.3575, 0.3566, 0.3572, 0.3654",\
                 "0.5368, 0.5164, 0.4801, 0.453, 0.4382, 0.4278, 0.4237, 0.4227, 0.4209, 0.4283",\
                 "0.6712, 0.6484, 0.6059, 0.5702, 0.5472, 0.5362, 0.5285, 0.5213, 0.5217, 0.5277",\
                 "0.8468, 0.8212, 0.7714, 0.7284, 0.6959, 0.6762, 0.6698, 0.6626, 0.6564, 0.6649",\
                 "1.063, 1.035, 0.9784, 0.9261, 0.8869, 0.8589, 0.8426, 0.8376, 0.8344, 0.8403",\
                 "1.32, 1.291, 1.227, 1.166, 1.119, 1.085, 1.061, 1.046, 1.047, 1.061");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.2786, 0.3121, 0.4025, 0.5405, 0.7332, 0.9946, 1.337, 1.767, 2.293, 2.919",\
                 "0.2927, 0.3263, 0.4166, 0.5546, 0.7472, 1.009, 1.351, 1.781, 2.307, 2.932",\
                 "0.3422, 0.3758, 0.4659, 0.6039, 0.7966, 1.058, 1.4, 1.83, 2.356, 2.982",\
                 "0.4359, 0.4696, 0.5597, 0.6979, 0.8905, 1.152, 1.493, 1.924, 2.45, 3.076",\
                 "0.5447, 0.5811, 0.6759, 0.8177, 1.012, 1.273, 1.614, 2.044, 2.569, 3.196",\
                 "0.6604, 0.6999, 0.801, 0.9485, 1.146, 1.408, 1.749, 2.178, 2.703, 3.328",\
                 "0.7801, 0.824, 0.9336, 1.088, 1.291, 1.555, 1.896, 2.325, 2.849, 3.475",\
                 "0.904, 0.952, 1.071, 1.234, 1.444, 1.714, 2.057, 2.486, 3.01, 3.635",\
                 "1.031, 1.083, 1.211, 1.384, 1.602, 1.878, 2.228, 2.662, 3.185, 3.81",\
                 "1.164, 1.219, 1.355, 1.538, 1.764, 2.048, 2.405, 2.846, 3.375, 4.001");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.464, 0.5081, 0.63, 0.8285, 1.112, 1.502, 2.013, 2.658, 3.445, 4.38",\
                 "0.4698, 0.5136, 0.6359, 0.8343, 1.118, 1.508, 2.018, 2.663, 3.45, 4.387",\
                 "0.4969, 0.5409, 0.6631, 0.8608, 1.145, 1.534, 2.045, 2.69, 3.477, 4.415",\
                 "0.5613, 0.6049, 0.7266, 0.9241, 1.208, 1.596, 2.107, 2.752, 3.539, 4.477",\
                 "0.6461, 0.6906, 0.8134, 1.011, 1.294, 1.683, 2.192, 2.835, 3.622, 4.562",\
                 "0.7384, 0.7842, 0.9075, 1.105, 1.389, 1.777, 2.286, 2.929, 3.715, 4.654",\
                 "0.8354, 0.8832, 1.01, 1.209, 1.491, 1.879, 2.388, 3.03, 3.816, 4.753",\
                 "0.9316, 0.9817, 1.113, 1.316, 1.601, 1.988, 2.496, 3.138, 3.922, 4.858",\
                 "1.024, 1.077, 1.214, 1.421, 1.712, 2.103, 2.611, 3.252, 4.036, 4.971",\
                 "1.112, 1.169, 1.311, 1.524, 1.82, 2.217, 2.732, 3.373, 4.156, 5.091");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.09772, 0.1335, 0.2372, 0.4211, 0.7159, 1.143, 1.719, 2.448, 3.338, 4.399",\
                 "0.09772, 0.133, 0.2373, 0.4214, 0.715, 1.143, 1.718, 2.447, 3.338, 4.4",\
                 "0.09762, 0.133, 0.2374, 0.4213, 0.7144, 1.144, 1.719, 2.447, 3.338, 4.401",\
                 "0.1055, 0.1399, 0.2425, 0.4245, 0.7166, 1.144, 1.718, 2.446, 3.338, 4.398",\
                 "0.1254, 0.1614, 0.2616, 0.4378, 0.7222, 1.145, 1.719, 2.447, 3.334, 4.4",\
                 "0.1516, 0.188, 0.2872, 0.4602, 0.7372, 1.152, 1.722, 2.444, 3.337, 4.396",\
                 "0.1796, 0.2204, 0.3214, 0.4912, 0.7606, 1.165, 1.726, 2.447, 3.336, 4.396",\
                 "0.209, 0.2552, 0.3598, 0.5276, 0.7966, 1.193, 1.741, 2.454, 3.337, 4.39",\
                 "0.2404, 0.289, 0.4008, 0.568, 0.8348, 1.23, 1.776, 2.475, 3.346, 4.395",\
                 "0.2712, 0.3244, 0.4454, 0.6132, 0.8758, 1.273, 1.819, 2.52, 3.38, 4.414");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.1507, 0.2014, 0.3621, 0.6604, 1.133, 1.82, 2.736, 3.892, 5.306, 6.99",\
                 "0.1503, 0.2005, 0.362, 0.6605, 1.133, 1.82, 2.737, 3.892, 5.308, 6.988",\
                 "0.1505, 0.201, 0.3623, 0.6608, 1.133, 1.82, 2.737, 3.897, 5.307, 7.001",\
                 "0.1502, 0.2006, 0.363, 0.6608, 1.134, 1.818, 2.737, 3.897, 5.31, 6.989",\
                 "0.1578, 0.2092, 0.3706, 0.6662, 1.137, 1.821, 2.737, 3.893, 5.305, 6.998",\
                 "0.1688, 0.2184, 0.3786, 0.6758, 1.144, 1.825, 2.736, 3.893, 5.31, 6.999",\
                 "0.1854, 0.2364, 0.3924, 0.685, 1.151, 1.832, 2.742, 3.895, 5.306, 6.987",\
                 "0.2058, 0.259, 0.4124, 0.7054, 1.164, 1.836, 2.747, 3.9, 5.316, 6.995",\
                 "0.2262, 0.2804, 0.4354, 0.7306, 1.191, 1.857, 2.755, 3.903, 5.315, 7.002",\
                 "0.2496, 0.3058, 0.4624, 0.755, 1.223, 1.893, 2.786, 3.917, 5.317, 6.997");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.3095, 0.3447, 0.4373, 0.5768, 0.7702, 1.032, 1.374, 1.804, 2.33, 2.956",\
                 "0.3223, 0.3573, 0.45, 0.5896, 0.783, 1.045, 1.386, 1.817, 2.342, 2.969",\
                 "0.3713, 0.4061, 0.4988, 0.6383, 0.8317, 1.093, 1.435, 1.866, 2.391, 3.018",\
                 "0.4689, 0.5039, 0.5961, 0.7355, 0.9287, 1.19, 1.532, 1.962, 2.488, 3.115",\
                 "0.5907, 0.6284, 0.7253, 0.8676, 1.062, 1.323, 1.664, 2.094, 2.619, 3.245",\
                 "0.7243, 0.7653, 0.8686, 1.016, 1.213, 1.475, 1.815, 2.245, 2.769, 3.395",\
                 "0.868, 0.913, 1.024, 1.179, 1.381, 1.644, 1.984, 2.414, 2.937, 3.563",\
                 "1.023, 1.072, 1.192, 1.354, 1.563, 1.831, 2.173, 2.602, 3.125, 3.75",\
                 "1.188, 1.241, 1.37, 1.542, 1.759, 2.034, 2.38, 2.811, 3.334, 3.959",\
                 "1.365, 1.42, 1.561, 1.743, 1.968, 2.249, 2.602, 3.039, 3.566, 4.191");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.5025, 0.5466, 0.6684, 0.8665, 1.151, 1.54, 2.052, 2.696, 3.483, 4.418",\
                 "0.5075, 0.5518, 0.6738, 0.8717, 1.156, 1.545, 2.056, 2.701, 3.488, 4.425",\
                 "0.5212, 0.5651, 0.6876, 0.8854, 1.169, 1.559, 2.07, 2.714, 3.501, 4.439",\
                 "0.5581, 0.6018, 0.7235, 0.921, 1.205, 1.594, 2.104, 2.749, 3.536, 4.475",\
                 "0.6133, 0.6584, 0.7821, 0.9802, 1.264, 1.652, 2.163, 2.806, 3.593, 4.53",\
                 "0.6788, 0.7254, 0.8508, 1.05, 1.334, 1.722, 2.232, 2.875, 3.662, 4.598",\
                 "0.7449, 0.7938, 0.923, 1.125, 1.41, 1.798, 2.307, 2.949, 3.733, 4.67",\
                 "0.8041, 0.8555, 0.9912, 1.198, 1.488, 1.877, 2.385, 3.027, 3.81, 4.746",\
                 "0.8541, 0.9089, 1.05, 1.263, 1.56, 1.955, 2.466, 3.107, 3.89, 4.825",\
                 "0.893, 0.9509, 1.099, 1.318, 1.622, 2.026, 2.545, 3.189, 3.972, 4.907");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.1056, 0.1411, 0.2444, 0.4258, 0.7183, 1.145, 1.718, 2.448, 3.334, 4.4",\
                 "0.1055, 0.1415, 0.2441, 0.4259, 0.7181, 1.145, 1.72, 2.448, 3.338, 4.396",\
                 "0.1057, 0.1417, 0.2445, 0.4257, 0.7183, 1.145, 1.719, 2.446, 3.337, 4.4",\
                 "0.1109, 0.1463, 0.248, 0.4286, 0.719, 1.145, 1.72, 2.447, 3.339, 4.394",\
                 "0.1314, 0.1672, 0.2658, 0.4398, 0.7232, 1.146, 1.719, 2.447, 3.337, 4.4",\
                 "0.1566, 0.1942, 0.2914, 0.4624, 0.7368, 1.153, 1.72, 2.447, 3.336, 4.399",\
                 "0.1856, 0.2274, 0.3258, 0.4912, 0.759, 1.165, 1.726, 2.45, 3.337, 4.391",\
                 "0.215, 0.2608, 0.3642, 0.5276, 0.791, 1.186, 1.738, 2.454, 3.335, 4.397",\
                 "0.2468, 0.2966, 0.4072, 0.5674, 0.8286, 1.222, 1.766, 2.47, 3.343, 4.397",\
                 "0.2782, 0.3328, 0.4526, 0.6136, 0.871, 1.262, 1.807, 2.507, 3.37, 4.409");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.1503, 0.2012, 0.3624, 0.6611, 1.133, 1.82, 2.736, 3.892, 5.307, 6.989",\
                 "0.1512, 0.2012, 0.3624, 0.6617, 1.133, 1.817, 2.737, 3.897, 5.311, 6.988",\
                 "0.1503, 0.2012, 0.3622, 0.6619, 1.134, 1.82, 2.736, 3.892, 5.311, 6.992",\
                 "0.1508, 0.201, 0.3633, 0.6626, 1.133, 1.82, 2.736, 3.892, 5.309, 6.998",\
                 "0.1598, 0.2104, 0.3708, 0.6676, 1.137, 1.817, 2.736, 3.892, 5.302, 6.998",\
                 "0.17, 0.2222, 0.3802, 0.6762, 1.143, 1.825, 2.737, 3.89, 5.306, 6.988",\
                 "0.186, 0.2398, 0.3984, 0.69, 1.152, 1.829, 2.738, 3.897, 5.312, 6.995",\
                 "0.2066, 0.2608, 0.4202, 0.715, 1.174, 1.839, 2.743, 3.898, 5.312, 6.997",\
                 "0.2268, 0.2826, 0.4456, 0.7426, 1.206, 1.87, 2.761, 3.902, 5.309, 6.995",\
                 "0.2488, 0.3094, 0.4718, 0.77, 1.243, 1.912, 2.799, 3.925, 5.318, 6.995");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.3317, 0.3679, 0.4629, 0.6047, 0.7995, 1.062, 1.404, 1.834, 2.36, 2.986",\
                 "0.3428, 0.3793, 0.4743, 0.616, 0.8108, 1.073, 1.415, 1.845, 2.371, 2.998",\
                 "0.3917, 0.428, 0.5227, 0.6646, 0.8592, 1.121, 1.464, 1.894, 2.42, 3.045",\
                 "0.4927, 0.5288, 0.6231, 0.7645, 0.959, 1.221, 1.563, 1.993, 2.519, 3.146",\
                 "0.6261, 0.6646, 0.7629, 0.9068, 1.102, 1.363, 1.704, 2.134, 2.659, 3.286",\
                 "0.7764, 0.8183, 0.9227, 1.071, 1.269, 1.531, 1.871, 2.301, 2.826, 3.451",\
                 "0.9443, 0.9905, 1.103, 1.257, 1.459, 1.723, 2.063, 2.492, 3.016, 3.641",\
                 "1.131, 1.181, 1.302, 1.465, 1.673, 1.941, 2.282, 2.711, 3.234, 3.859",\
                 "1.337, 1.39, 1.521, 1.694, 1.909, 2.183, 2.528, 2.958, 3.481, 4.106",\
                 "1.564, 1.621, 1.762, 1.945, 2.168, 2.449, 2.801, 3.236, 3.761, 4.386");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.5193, 0.5633, 0.6854, 0.8839, 1.168, 1.557, 2.068, 2.713, 3.5, 4.437",\
                 "0.5251, 0.5691, 0.6914, 0.8893, 1.174, 1.563, 2.074, 2.719, 3.506, 4.441",\
                 "0.5321, 0.5759, 0.6982, 0.896, 1.18, 1.57, 2.08, 2.725, 3.512, 4.45",\
                 "0.5454, 0.5893, 0.7111, 0.9085, 1.193, 1.582, 2.093, 2.737, 3.524, 4.46",\
                 "0.5681, 0.6131, 0.7366, 0.9351, 1.219, 1.608, 2.118, 2.761, 3.549, 4.485",\
                 "0.5954, 0.6423, 0.7686, 0.9683, 1.253, 1.641, 2.151, 2.794, 3.581, 4.516",\
                 "0.6152, 0.6649, 0.7971, 1.002, 1.29, 1.678, 2.187, 2.829, 3.614, 4.55",\
                 "0.6216, 0.6742, 0.8132, 1.025, 1.321, 1.714, 2.223, 2.864, 3.648, 4.583",\
                 "0.612, 0.6676, 0.8135, 1.032, 1.338, 1.741, 2.256, 2.898, 3.681, 4.616",\
                 "0.5822, 0.6412, 0.7942, 1.021, 1.335, 1.75, 2.278, 2.927, 3.711, 4.645");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.1124, 0.1489, 0.2517, 0.4326, 0.7229, 1.147, 1.72, 2.447, 3.334, 4.398",\
                 "0.112, 0.1488, 0.252, 0.4324, 0.7229, 1.148, 1.72, 2.447, 3.339, 4.399",\
                 "0.1124, 0.149, 0.2511, 0.4322, 0.7219, 1.148, 1.72, 2.447, 3.337, 4.397",\
                 "0.1154, 0.1519, 0.2549, 0.4348, 0.723, 1.147, 1.72, 2.446, 3.336, 4.394",\
                 "0.1358, 0.1726, 0.2704, 0.444, 0.7278, 1.149, 1.721, 2.448, 3.334, 4.4",\
                 "0.161, 0.2, 0.296, 0.4656, 0.7398, 1.155, 1.722, 2.447, 3.334, 4.395",\
                 "0.1908, 0.2316, 0.33, 0.4942, 0.7608, 1.165, 1.727, 2.45, 3.337, 4.393",\
                 "0.2204, 0.2656, 0.3704, 0.5298, 0.7916, 1.187, 1.739, 2.454, 3.338, 4.396",\
                 "0.2536, 0.3026, 0.4122, 0.572, 0.8302, 1.221, 1.764, 2.468, 3.344, 4.397",\
                 "0.2868, 0.341, 0.4596, 0.6158, 0.8718, 1.261, 1.802, 2.5, 3.363, 4.405");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007805, 0.03169, 0.0773, 0.1484, 0.2481, 0.3793, 0.5446, 0.7463, 0.9869");
          values("0.1503, 0.2013, 0.3626, 0.6604, 1.133, 1.819, 2.737, 3.893, 5.31, 6.988",\
                 "0.1512, 0.2013, 0.3631, 0.6617, 1.133, 1.82, 2.736, 3.892, 5.308, 6.989",\
                 "0.1507, 0.2011, 0.3625, 0.6606, 1.132, 1.819, 2.737, 3.897, 5.311, 6.993",\
                 "0.1498, 0.2009, 0.3627, 0.6622, 1.133, 1.82, 2.732, 3.893, 5.307, 6.989",\
                 "0.1578, 0.209, 0.37, 0.6658, 1.136, 1.819, 2.737, 3.893, 5.302, 6.992",\
                 "0.17, 0.2224, 0.3818, 0.6762, 1.143, 1.821, 2.733, 3.892, 5.304, 6.989",\
                 "0.1878, 0.2432, 0.4032, 0.6972, 1.155, 1.828, 2.739, 3.889, 5.31, 6.992",\
                 "0.2072, 0.2638, 0.4276, 0.7272, 1.187, 1.848, 2.744, 3.896, 5.304, 6.997",\
                 "0.228, 0.2886, 0.4564, 0.759, 1.23, 1.89, 2.771, 3.906, 5.307, 6.991",\
                 "0.2498, 0.3114, 0.4852, 0.7936, 1.273, 1.946, 2.828, 3.943, 5.325, 6.993");
        }
      }
    }
  }

