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

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

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

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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "5.349564e-05" ;
    }

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01229, 0.01228, 0.01222, 0.0122, 0.0122, 0.01222, 0.01221, 0.01221, \
                  0.01223, 0.01222");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.008415, -0.008409, -0.008407, -0.008408, -0.008432, -0.008458, \
                  -0.008459, -0.008473, -0.008472, -0.0085");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01228, 0.01227, 0.01223, 0.0122, 0.0122, 0.01221, 0.01222, 0.01221, \
                  0.0122, 0.01221");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.00841, -0.008417, -0.008413, -0.008424, -0.008441, -0.008473, \
                  -0.008464, -0.008474, -0.008492, -0.008507");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01227, 0.01228, 0.01223, 0.01222, 0.01221, 0.01223, 0.01223, \
                  0.01221, 0.01221, 0.01221");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.0008642, 0.0008478, 0.0008368, 0.0008295, 0.000797, 0.0007577, \
                  0.0007455, 0.0007275, 0.0007004, 0.0006853");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01384, 0.01385, 0.01396, 0.0141, 0.0142, 0.01431, 0.01438, 0.0144, \
                  0.01444, 0.01443");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.01081, -0.0108, -0.01077, -0.01075, -0.01076, -0.01078, -0.01078, \
                  -0.01078, -0.01078, -0.01078");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01198, 0.01116, 0.01081, 0.0108, 0.01079, 0.01081, 0.0108, 0.01081, \
                  0.0108, 0.0108");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.01079, -0.01079, -0.01077, -0.01075, -0.01074, -0.01078, -0.01078, \
                  -0.01077, -0.01077, -0.01077");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01188, 0.01187, 0.01183, 0.01181, 0.0118, 0.01181, 0.01181, \
                  0.0118, 0.01178, 0.01178");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.01014, -0.01013, -0.01012, -0.01012, -0.01013, -0.01015, -0.01017, \
                  -0.01018, -0.0102, -0.01023");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01086, 0.01085, 0.0108, 0.01079, 0.01078, 0.01081, 0.01081, \
                  0.01081, 0.01082, 0.01081");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.0108, -0.0108, -0.01077, -0.01075, -0.01075, -0.01076, -0.01076, \
                  -0.01077, -0.01077, -0.01078");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01086, 0.01083, 0.01081, 0.0108, 0.01078, 0.0108, 0.01082, 0.01081, \
                  0.0108, 0.0108");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.01079, -0.01078, -0.01078, -0.01077, -0.01075, -0.01078, -0.01078, \
                  -0.01077, -0.01077, -0.01078");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01099, 0.01085, 0.01081, 0.01079, 0.01078, 0.01081, 0.01081, \
                  0.01081, 0.0108, 0.01081");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.0108, -0.0108, -0.01078, -0.01075, -0.01076, -0.01078, -0.01078, \
                  -0.01077, -0.01077, -0.01078");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.9471 ;
      max_transition : 6.8 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.08337, 0.08376, 0.08487, 0.08595, 0.08654, 0.08688, 0.08708, 0.08719, 0.08726, 0.08731",\
                 "0.08321, 0.08368, 0.08473, 0.08578, 0.0864, 0.08671, 0.0869, 0.08703, 0.08711, 0.08714",\
                 "0.08219, 0.08247, 0.08356, 0.0847, 0.08533, 0.08571, 0.08592, 0.08608, 0.08614, 0.08616",\
                 "0.08173, 0.0819, 0.08264, 0.08368, 0.08443, 0.0849, 0.08518, 0.08538, 0.08544, 0.08553",\
                 "0.08296, 0.08273, 0.0829, 0.08364, 0.0844, 0.08491, 0.08524, 0.08546, 0.0856, 0.0857",\
                 "0.08572, 0.08509, 0.08483, 0.08517, 0.08578, 0.08629, 0.08665, 0.0869, 0.08707, 0.08719",\
                 "0.08991, 0.08898, 0.08814, 0.08806, 0.08841, 0.08889, 0.08925, 0.08951, 0.08969, 0.0898",\
                 "0.09562, 0.09417, 0.09289, 0.0923, 0.09244, 0.09278, 0.09315, 0.09338, 0.09354, 0.09367",\
                 "0.1028, 0.1011, 0.09904, 0.09818, 0.09802, 0.09817, 0.0984, 0.09859, 0.09875, 0.09887",\
                 "0.1118, 0.1097, 0.1069, 0.1054, 0.1051, 0.105, 0.1052, 0.1053, 0.1055, 0.1056");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.05211, 0.05207, 0.05235, 0.05344, 0.05455, 0.05563, 0.05665, 0.05771, 0.05827, 0.06001",\
                 "0.05173, 0.05162, 0.05209, 0.05313, 0.05415, 0.05532, 0.05641, 0.05712, 0.05867, 0.05942",\
                 "0.05104, 0.05095, 0.05129, 0.05235, 0.05346, 0.05456, 0.05562, 0.05672, 0.05768, 0.05882",\
                 "0.05078, 0.05061, 0.05076, 0.05154, 0.05249, 0.05371, 0.05485, 0.05573, 0.05669, 0.05803",\
                 "0.05198, 0.05158, 0.05147, 0.05198, 0.05269, 0.05391, 0.05508, 0.05633, 0.05748, 0.05863",\
                 "0.05437, 0.05376, 0.05322, 0.05338, 0.0541, 0.05498, 0.05609, 0.05712, 0.05808, 0.0594",\
                 "0.05799, 0.05717, 0.05617, 0.05562, 0.05641, 0.05779, 0.05839, 0.05969, 0.06025, 0.06177",\
                 "0.06284, 0.06187, 0.06049, 0.05974, 0.05956, 0.06092, 0.06221, 0.06266, 0.06322, 0.06492",\
                 "0.06906, 0.06776, 0.06612, 0.06497, 0.06459, 0.06504, 0.06667, 0.0688, 0.06877, 0.06965",\
                 "0.07677, 0.07516, 0.07323, 0.07192, 0.07132, 0.07126, 0.07132, 0.07355, 0.07539, 0.07713");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.09326, 0.09349, 0.0944, 0.09543, 0.09604, 0.09644, 0.09668, 0.09677, 0.09686, 0.09695",\
                 "0.09289, 0.09315, 0.09409, 0.09513, 0.09579, 0.09616, 0.09638, 0.09651, 0.0966, 0.09665",\
                 "0.09205, 0.09218, 0.09313, 0.09419, 0.09488, 0.09529, 0.09553, 0.09568, 0.09578, 0.09584",\
                 "0.09161, 0.09158, 0.09223, 0.09325, 0.09408, 0.09457, 0.09488, 0.09505, 0.09518, 0.09527",\
                 "0.09297, 0.09266, 0.09277, 0.09344, 0.09415, 0.09469, 0.09504, 0.09527, 0.09543, 0.09553",\
                 "0.09584, 0.09522, 0.09476, 0.09498, 0.09549, 0.09604, 0.09642, 0.09668, 0.09686, 0.09698",\
                 "0.1002, 0.09914, 0.09809, 0.09792, 0.09837, 0.09866, 0.09905, 0.0993, 0.09945, 0.09959",\
                 "0.106, 0.1046, 0.103, 0.1023, 0.1024, 0.1028, 0.103, 0.1032, 0.1034, 0.1036",\
                 "0.1133, 0.1115, 0.1094, 0.1083, 0.1081, 0.1082, 0.1084, 0.1086, 0.1087, 0.1089",\
                 "0.1223, 0.12, 0.1173, 0.1159, 0.1153, 0.1151, 0.1153, 0.1154, 0.1155, 0.1157");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.05202, 0.05193, 0.05229, 0.05342, 0.05453, 0.05565, 0.05667, 0.05791, 0.05827, 0.05942",\
                 "0.05179, 0.05184, 0.05208, 0.05303, 0.05425, 0.05542, 0.05641, 0.05771, 0.05867, 0.05981",\
                 "0.05107, 0.05111, 0.05157, 0.05225, 0.05346, 0.05464, 0.05568, 0.05692, 0.05788, 0.05902",\
                 "0.05062, 0.05046, 0.05058, 0.05132, 0.05243, 0.05365, 0.05475, 0.05593, 0.05689, 0.05803",\
                 "0.05101, 0.05073, 0.05073, 0.05128, 0.05227, 0.05348, 0.05461, 0.05553, 0.05669, 0.05744",\
                 "0.05268, 0.05207, 0.05165, 0.05206, 0.05299, 0.05385, 0.05475, 0.05593, 0.05689, 0.0588",\
                 "0.05547, 0.05488, 0.05403, 0.05374, 0.05467, 0.05575, 0.05661, 0.05732, 0.05907, 0.05959",\
                 "0.05969, 0.05887, 0.05758, 0.05709, 0.05711, 0.05821, 0.06005, 0.06068, 0.06124, 0.06294",\
                 "0.06532, 0.0642, 0.06286, 0.06206, 0.06162, 0.06203, 0.06356, 0.06543, 0.066, 0.06747",\
                 "0.07233, 0.07091, 0.06923, 0.06821, 0.068, 0.06799, 0.06869, 0.07038, 0.07281, 0.07377");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.1018, 0.1019, 0.1026, 0.1037, 0.1043, 0.1047, 0.1049, 0.1051, 0.1052, 0.1053",\
                 "0.1012, 0.1013, 0.1022, 0.1032, 0.1038, 0.1042, 0.1045, 0.1046, 0.1047, 0.1048",\
                 "0.1005, 0.1006, 0.1013, 0.1024, 0.1031, 0.1035, 0.1038, 0.104, 0.1041, 0.1041",\
                 "0.1003, 0.1003, 0.1009, 0.1018, 0.1026, 0.1031, 0.1034, 0.1036, 0.1037, 0.1038",\
                 "0.1018, 0.1015, 0.1015, 0.1021, 0.1028, 0.1033, 0.1037, 0.1039, 0.1041, 0.1042",\
                 "0.1048, 0.1042, 0.1037, 0.1039, 0.1042, 0.1048, 0.1051, 0.1054, 0.1056, 0.1057",\
                 "0.1093, 0.1082, 0.1071, 0.1067, 0.1071, 0.1076, 0.1079, 0.1081, 0.1083, 0.1085",\
                 "0.1153, 0.1137, 0.1121, 0.1114, 0.1115, 0.1116, 0.1119, 0.1121, 0.1123, 0.1125",\
                 "0.1228, 0.1209, 0.1187, 0.1176, 0.1172, 0.1174, 0.1175, 0.1177, 0.1178, 0.118",\
                 "0.1321, 0.1298, 0.127, 0.1255, 0.1246, 0.1246, 0.1247, 0.1248, 0.125, 0.1251");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.05202, 0.05213, 0.0523, 0.05344, 0.05455, 0.05559, 0.05665, 0.05751, 0.05827, 0.05942",\
                 "0.05179, 0.05181, 0.05205, 0.05321, 0.05431, 0.05536, 0.05641, 0.05732, 0.05808, 0.05902",\
                 "0.05109, 0.05099, 0.05133, 0.05243, 0.05354, 0.05464, 0.05566, 0.05652, 0.05728, 0.05843",\
                 "0.05045, 0.05029, 0.0507, 0.05136, 0.05247, 0.05365, 0.05467, 0.05613, 0.05629, 0.05823",\
                 "0.05051, 0.05031, 0.05048, 0.05113, 0.0521, 0.05328, 0.05445, 0.05514, 0.05689, 0.05823",\
                 "0.05162, 0.0513, 0.05089, 0.0516, 0.05263, 0.05363, 0.05467, 0.05573, 0.05649, 0.0588",\
                 "0.05404, 0.05359, 0.0529, 0.05271, 0.05376, 0.05514, 0.05601, 0.05692, 0.05768, 0.0588",\
                 "0.05797, 0.05725, 0.05644, 0.05604, 0.05663, 0.05785, 0.05936, 0.06029, 0.06105, 0.06195",\
                 "0.06339, 0.06245, 0.06132, 0.06091, 0.06047, 0.06128, 0.06247, 0.06425, 0.0652, 0.06569",\
                 "0.07054, 0.06927, 0.06787, 0.06697, 0.06693, 0.06704, 0.06768, 0.06959, 0.07134, 0.07317");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.278, 0.3085, 0.3835, 0.4907, 0.6367, 0.8334, 1.09, 1.413, 1.807, 2.278",\
                 "0.2959, 0.3262, 0.4012, 0.5084, 0.6545, 0.8514, 1.108, 1.431, 1.825, 2.296",\
                 "0.3569, 0.3873, 0.4623, 0.5695, 0.7156, 0.9124, 1.169, 1.492, 1.886, 2.357",\
                 "0.4749, 0.5056, 0.5811, 0.6885, 0.8347, 1.032, 1.288, 1.611, 2.006, 2.477",\
                 "0.6244, 0.6593, 0.742, 0.8542, 1.002, 1.199, 1.456, 1.779, 2.173, 2.644",\
                 "0.7831, 0.8229, 0.916, 1.035, 1.188, 1.387, 1.644, 1.966, 2.36, 2.832",\
                 "0.9537, 0.9976, 1.101, 1.229, 1.386, 1.587, 1.845, 2.168, 2.561, 3.031",\
                 "1.139, 1.187, 1.3, 1.439, 1.601, 1.804, 2.062, 2.385, 2.779, 3.249",\
                 "1.342, 1.393, 1.515, 1.664, 1.833, 2.04, 2.298, 2.621, 3.015, 3.485",\
                 "1.563, 1.617, 1.747, 1.909, 2.086, 2.295, 2.555, 2.878, 3.272, 3.741");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.3931, 0.4406, 0.5668, 0.7644, 1.051, 1.446, 1.965, 2.618, 3.416, 4.365",\
                 "0.4034, 0.4507, 0.5769, 0.7745, 1.061, 1.456, 1.975, 2.628, 3.424, 4.372",\
                 "0.4416, 0.4888, 0.6151, 0.8124, 1.099, 1.494, 2.013, 2.665, 3.464, 4.414",\
                 "0.5177, 0.565, 0.6911, 0.8882, 1.174, 1.57, 2.089, 2.742, 3.538, 4.487",\
                 "0.6057, 0.6544, 0.7836, 0.9829, 1.269, 1.665, 2.183, 2.836, 3.635, 4.585",\
                 "0.6807, 0.732, 0.8644, 1.066, 1.354, 1.751, 2.269, 2.923, 3.719, 4.669",\
                 "0.7394, 0.7939, 0.9316, 1.135, 1.423, 1.821, 2.341, 2.994, 3.791, 4.739",\
                 "0.7821, 0.8397, 0.9839, 1.19, 1.478, 1.875, 2.395, 3.049, 3.846, 4.795",\
                 "0.8092, 0.8699, 1.022, 1.232, 1.52, 1.916, 2.436, 3.09, 3.887, 4.837",\
                 "0.8208, 0.8845, 1.044, 1.259, 1.549, 1.944, 2.463, 3.116, 3.914, 4.864");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.08706, 0.1134, 0.1895, 0.3244, 0.543, 0.8649, 1.295, 1.844, 2.511, 3.312",\
                 "0.08718, 0.1138, 0.1899, 0.3243, 0.5424, 0.8644, 1.295, 1.843, 2.511, 3.313",\
                 "0.08708, 0.1135, 0.1896, 0.3244, 0.5424, 0.8638, 1.295, 1.842, 2.511, 3.311",\
                 "0.09046, 0.1165, 0.1915, 0.3258, 0.5428, 0.8642, 1.296, 1.842, 2.513, 3.313",\
                 "0.111, 0.1382, 0.2088, 0.3358, 0.5472, 0.8654, 1.295, 1.843, 2.513, 3.313",\
                 "0.1316, 0.1642, 0.2352, 0.357, 0.5608, 0.8708, 1.299, 1.843, 2.512, 3.312",\
                 "0.1518, 0.188, 0.2648, 0.3806, 0.5768, 0.8808, 1.302, 1.844, 2.511, 3.305",\
                 "0.1716, 0.21, 0.2954, 0.4092, 0.595, 0.89, 1.309, 1.849, 2.512, 3.308",\
                 "0.1912, 0.2326, 0.325, 0.4382, 0.6172, 0.9022, 1.314, 1.851, 2.516, 3.31",\
                 "0.2126, 0.2564, 0.357, 0.4732, 0.643, 0.917, 1.32, 1.857, 2.517, 3.311");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.1323, 0.1826, 0.3328, 0.6188, 1.087, 1.762, 2.652, 3.784, 5.154, 6.804",\
                 "0.1319, 0.1822, 0.333, 0.6188, 1.088, 1.762, 2.656, 3.782, 5.162, 6.806",\
                 "0.132, 0.1822, 0.3341, 0.6188, 1.087, 1.76, 2.655, 3.785, 5.16, 6.802",\
                 "0.1337, 0.1832, 0.3338, 0.6192, 1.088, 1.761, 2.655, 3.778, 5.161, 6.799",\
                 "0.1434, 0.193, 0.3432, 0.6244, 1.09, 1.762, 2.655, 3.785, 5.16, 6.801",\
                 "0.1564, 0.2066, 0.3538, 0.6336, 1.096, 1.763, 2.655, 3.783, 5.159, 6.793",\
                 "0.1724, 0.224, 0.3662, 0.6398, 1.1, 1.77, 2.657, 3.782, 5.149, 6.803",\
                 "0.188, 0.2424, 0.3832, 0.6474, 1.103, 1.772, 2.663, 3.783, 5.152, 6.794",\
                 "0.2032, 0.2616, 0.4014, 0.6572, 1.108, 1.771, 2.665, 3.788, 5.157, 6.796",\
                 "0.2194, 0.2794, 0.4236, 0.6708, 1.11, 1.775, 2.664, 3.789, 5.158, 6.792");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.3101, 0.3412, 0.4177, 0.5256, 0.6724, 0.8693, 1.126, 1.45, 1.844, 2.314",\
                 "0.3273, 0.3582, 0.4348, 0.5427, 0.6893, 0.8864, 1.143, 1.466, 1.86, 2.33",\
                 "0.3888, 0.42, 0.4963, 0.6044, 0.7511, 0.9482, 1.205, 1.528, 1.923, 2.392",\
                 "0.5095, 0.5406, 0.6168, 0.7251, 0.8719, 1.069, 1.326, 1.649, 2.044, 2.513",\
                 "0.6715, 0.7064, 0.7881, 0.8997, 1.048, 1.245, 1.502, 1.825, 2.219, 2.69",\
                 "0.8449, 0.8843, 0.976, 1.095, 1.247, 1.445, 1.703, 2.025, 2.42, 2.889",\
                 "1.03, 1.074, 1.176, 1.304, 1.46, 1.66, 1.918, 2.241, 2.635, 3.104",\
                 "1.231, 1.278, 1.39, 1.527, 1.688, 1.891, 2.149, 2.472, 2.867, 3.336",\
                 "1.449, 1.501, 1.622, 1.768, 1.936, 2.141, 2.399, 2.723, 3.117, 3.587",\
                 "1.689, 1.743, 1.873, 2.029, 2.204, 2.412, 2.671, 2.995, 3.389, 3.858");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.422, 0.4693, 0.5957, 0.7931, 1.079, 1.475, 1.993, 2.646, 3.444, 4.394",\
                 "0.4328, 0.4803, 0.6066, 0.8041, 1.091, 1.486, 2.004, 2.657, 3.455, 4.405",\
                 "0.4649, 0.5124, 0.6387, 0.836, 1.123, 1.518, 2.036, 2.689, 3.488, 4.438",\
                 "0.5245, 0.5719, 0.698, 0.8953, 1.182, 1.577, 2.095, 2.748, 3.547, 4.497",\
                 "0.5954, 0.6447, 0.7747, 0.9741, 1.261, 1.656, 2.175, 2.829, 3.624, 4.575",\
                 "0.6598, 0.7115, 0.8458, 1.048, 1.337, 1.733, 2.252, 2.904, 3.703, 4.653",\
                 "0.711, 0.7659, 0.9051, 1.11, 1.399, 1.796, 2.316, 2.968, 3.765, 4.715",\
                 "0.7468, 0.8041, 0.9497, 1.159, 1.448, 1.845, 2.365, 3.019, 3.815, 4.764",\
                 "0.7667, 0.8273, 0.9796, 1.193, 1.483, 1.879, 2.399, 3.053, 3.85, 4.799",\
                 "0.7699, 0.8334, 0.9941, 1.213, 1.505, 1.901, 2.42, 3.073, 3.87, 4.819");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.0913, 0.1175, 0.1933, 0.3273, 0.545, 0.8656, 1.296, 1.844, 2.514, 3.306",\
                 "0.0915, 0.1174, 0.1929, 0.3267, 0.5442, 0.8641, 1.297, 1.841, 2.514, 3.311",\
                 "0.09116, 0.1176, 0.1931, 0.3272, 0.5449, 0.8646, 1.297, 1.842, 2.513, 3.31",\
                 "0.0927, 0.119, 0.1943, 0.3268, 0.5444, 0.8658, 1.297, 1.841, 2.513, 3.311",\
                 "0.111, 0.1378, 0.2068, 0.3342, 0.5482, 0.8664, 1.297, 1.844, 2.513, 3.308",\
                 "0.1328, 0.1628, 0.232, 0.354, 0.5588, 0.8702, 1.296, 1.842, 2.51, 3.307",\
                 "0.1536, 0.1872, 0.2614, 0.3776, 0.5754, 0.879, 1.303, 1.846, 2.512, 3.31",\
                 "0.1742, 0.2104, 0.2908, 0.4028, 0.5916, 0.889, 1.309, 1.848, 2.512, 3.309",\
                 "0.1934, 0.233, 0.32, 0.4314, 0.6132, 0.8994, 1.314, 1.854, 2.518, 3.31",\
                 "0.214, 0.2552, 0.3498, 0.462, 0.6342, 0.9138, 1.318, 1.856, 2.519, 3.311");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.132, 0.1822, 0.3341, 0.6187, 1.087, 1.761, 2.652, 3.784, 5.154, 6.794",\
                 "0.1322, 0.1825, 0.3341, 0.619, 1.087, 1.761, 2.656, 3.785, 5.161, 6.804",\
                 "0.1321, 0.1824, 0.3339, 0.6196, 1.087, 1.76, 2.656, 3.785, 5.16, 6.803",\
                 "0.1336, 0.1835, 0.3336, 0.62, 1.087, 1.76, 2.655, 3.785, 5.159, 6.801",\
                 "0.1424, 0.193, 0.3424, 0.6244, 1.088, 1.761, 2.652, 3.778, 5.161, 6.793",\
                 "0.1532, 0.2054, 0.3536, 0.6334, 1.094, 1.763, 2.654, 3.783, 5.157, 6.801",\
                 "0.1666, 0.2204, 0.3684, 0.6412, 1.099, 1.768, 2.656, 3.782, 5.158, 6.801",\
                 "0.181, 0.237, 0.3838, 0.6504, 1.102, 1.768, 2.659, 3.781, 5.154, 6.796",\
                 "0.1958, 0.2542, 0.4014, 0.6614, 1.109, 1.77, 2.659, 3.783, 5.152, 6.795",\
                 "0.2108, 0.2724, 0.4232, 0.6764, 1.113, 1.773, 2.66, 3.784, 5.157, 6.788");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.3338, 0.3658, 0.444, 0.5533, 0.701, 0.8984, 1.155, 1.479, 1.873, 2.343",\
                 "0.35, 0.3822, 0.46, 0.5698, 0.7172, 0.9148, 1.172, 1.495, 1.89, 2.36",\
                 "0.4124, 0.4445, 0.5224, 0.632, 0.7795, 0.9772, 1.234, 1.557, 1.952, 2.422",\
                 "0.5347, 0.5667, 0.6445, 0.754, 0.9016, 1.099, 1.356, 1.68, 2.074, 2.544",\
                 "0.7065, 0.7413, 0.8235, 0.9351, 1.083, 1.281, 1.538, 1.862, 2.256, 2.726",\
                 "0.8918, 0.932, 1.023, 1.142, 1.294, 1.493, 1.75, 2.073, 2.467, 2.937",\
                 "1.09, 1.134, 1.236, 1.363, 1.519, 1.72, 1.977, 2.301, 2.695, 3.165",\
                 "1.304, 1.352, 1.464, 1.6, 1.76, 1.963, 2.221, 2.545, 2.939, 3.408",\
                 "1.538, 1.588, 1.71, 1.855, 2.022, 2.227, 2.485, 2.809, 3.204, 3.673",\
                 "1.793, 1.848, 1.977, 2.133, 2.306, 2.514, 2.773, 3.096, 3.491, 3.96");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.4336, 0.4809, 0.6073, 0.8047, 1.091, 1.486, 2.005, 2.658, 3.456, 4.406",\
                 "0.4455, 0.4927, 0.6189, 0.8165, 1.103, 1.498, 2.017, 2.67, 3.468, 4.417",\
                 "0.4729, 0.5201, 0.6465, 0.8438, 1.13, 1.526, 2.044, 2.698, 3.495, 4.445",\
                 "0.5148, 0.5623, 0.6885, 0.8859, 1.172, 1.568, 2.086, 2.739, 3.538, 4.487",\
                 "0.5612, 0.6104, 0.7401, 0.9396, 1.226, 1.622, 2.141, 2.794, 3.591, 4.541",\
                 "0.6009, 0.6523, 0.7865, 0.9892, 1.277, 1.673, 2.192, 2.845, 3.643, 4.593",\
                 "0.6306, 0.6842, 0.8233, 1.029, 1.319, 1.715, 2.234, 2.887, 3.683, 4.635",\
                 "0.6456, 0.7023, 0.8466, 1.056, 1.347, 1.743, 2.263, 2.916, 3.712, 4.66",\
                 "0.643, 0.7031, 0.8536, 1.068, 1.36, 1.757, 2.275, 2.929, 3.725, 4.673",\
                 "0.6219, 0.6839, 0.8429, 1.063, 1.358, 1.754, 2.273, 2.926, 3.722, 4.671");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.09578, 0.1222, 0.1972, 0.3304, 0.5473, 0.8656, 1.297, 1.845, 2.514, 3.311",\
                 "0.09572, 0.122, 0.1973, 0.3306, 0.5468, 0.8674, 1.297, 1.843, 2.514, 3.306",\
                 "0.09536, 0.1224, 0.1973, 0.3297, 0.5475, 0.8669, 1.297, 1.844, 2.514, 3.311",\
                 "0.09612, 0.1228, 0.1977, 0.3312, 0.5462, 0.8666, 1.298, 1.844, 2.511, 3.309",\
                 "0.1116, 0.1378, 0.2078, 0.3358, 0.5486, 0.867, 1.297, 1.845, 2.514, 3.31",\
                 "0.1336, 0.1632, 0.2324, 0.354, 0.5606, 0.8716, 1.3, 1.845, 2.514, 3.31",\
                 "0.1544, 0.188, 0.2606, 0.3756, 0.574, 0.879, 1.302, 1.846, 2.51, 3.309",\
                 "0.1754, 0.2118, 0.2902, 0.4016, 0.5908, 0.8888, 1.306, 1.849, 2.513, 3.309",\
                 "0.1944, 0.2332, 0.319, 0.4288, 0.6106, 0.8984, 1.311, 1.852, 2.516, 3.31",\
                 "0.2146, 0.2552, 0.3464, 0.4576, 0.6304, 0.912, 1.319, 1.856, 2.517, 3.312");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.00753, 0.03045, 0.07423, 0.1424, 0.2381, 0.364, 0.5227, 0.7163, 0.9471");
          values("0.1321, 0.1824, 0.3341, 0.6188, 1.087, 1.762, 2.652, 3.784, 5.155, 6.793",\
                 "0.132, 0.1825, 0.333, 0.6188, 1.087, 1.762, 2.652, 3.784, 5.155, 6.793",\
                 "0.1319, 0.1821, 0.3341, 0.6188, 1.087, 1.762, 2.652, 3.783, 5.153, 6.791",\
                 "0.1332, 0.1835, 0.3344, 0.6202, 1.088, 1.762, 2.656, 3.785, 5.157, 6.805",\
                 "0.1408, 0.1932, 0.3412, 0.6236, 1.089, 1.762, 2.655, 3.781, 5.162, 6.806",\
                 "0.1494, 0.202, 0.3522, 0.6318, 1.092, 1.761, 2.654, 3.782, 5.153, 6.807",\
                 "0.16, 0.2156, 0.365, 0.6412, 1.097, 1.765, 2.653, 3.78, 5.158, 6.792",\
                 "0.1722, 0.2282, 0.379, 0.6504, 1.101, 1.768, 2.655, 3.777, 5.155, 6.792",\
                 "0.1862, 0.244, 0.3958, 0.6624, 1.107, 1.768, 2.658, 3.778, 5.151, 6.787",\
                 "0.2014, 0.2626, 0.4168, 0.676, 1.115, 1.771, 2.657, 3.78, 5.152, 6.784");
        }
      }
    }
  }

