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

  cell(gf180mcu_fd_sc_mcu7t5v0__nor3_4) {
    area : 57.075200 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.08059, 0.08053, 0.08039, 0.08028, 0.08018, 0.08003, 0.07977, \
                  0.07935, 0.07863, 0.07691");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01655, -0.01654, -0.01654, -0.01656, -0.0166, -0.01661, -0.0166, \
                  -0.0166, -0.01659, -0.01655");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.04481, 0.04471, 0.04461, 0.04456, 0.04457, 0.04451, 0.0444, \
                  0.0442, 0.0439, 0.04315");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01662, -0.0166, -0.01661, -0.01663, -0.01667, -0.01668, -0.01668, \
                  -0.01668, -0.01668, -0.01666");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.0448, 0.04474, 0.04461, 0.04456, 0.04459, 0.04451, 0.04439, \
                  0.04421, 0.0439, 0.04317");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01662, -0.01661, -0.01661, -0.01662, -0.01668, -0.01667, -0.01667, \
                  -0.01668, -0.01668, -0.01668");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.03502, 0.035, 0.03499, 0.03492, 0.03492, 0.03478, 0.03457, 0.03425, \
                  0.03377, 0.03284");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.02155, -0.02154, -0.02156, -0.02159, -0.02167, -0.02168, -0.02172, \
                  -0.02177, -0.02183, -0.02192");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.05391, 0.05383, 0.0538, 0.05378, 0.05387, 0.05383, 0.05384, \
                  0.05386, 0.05384, 0.0538");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.04631, -0.04643, -0.04782, -0.04977, -0.05092, -0.05142, -0.05173, \
                  -0.05199, -0.05212, -0.05224");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.03109, 0.03102, 0.03108, 0.03109, 0.03118, 0.03119, 0.03119, \
                  0.0312, 0.0312, 0.0312");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.04305, -0.04278, -0.04269, -0.04256, -0.04258, -0.04245, -0.04229, \
                  -0.04211, -0.04183, -0.04135");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.05378, 0.05375, 0.05369, 0.05369, 0.05382, 0.05379, 0.0538, \
                  0.05379, 0.05379, 0.05377");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.05079, -0.0508, -0.05151, -0.05208, -0.05251, -0.0527, -0.05281, \
                  -0.0529, -0.05299, -0.05301");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.05385, 0.05383, 0.05377, 0.05381, 0.05383, 0.05391, 0.05391, \
                  0.05387, 0.05391, 0.05388");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.04372, -0.04507, -0.04728, -0.0491, -0.05029, -0.05093, -0.05131, \
                  -0.05159, -0.0518, -0.05193");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.05375, 0.05374, 0.05366, 0.05371, 0.05375, 0.05377, 0.05378, \
                  0.0538, 0.05376, 0.05377");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.05102, -0.05095, -0.05153, -0.05205, -0.0525, -0.05269, -0.05279, \
                  -0.05289, -0.05299, -0.05301");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.4485 ;
      max_transition : 15.6 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("-0.006483, -0.006257, -0.00587, -0.00559, -0.005457, -0.005369, -0.005324, -0.005283, -0.005268, -0.005256",\
                 "-0.007384, -0.006789, -0.005389, -0.004204, -0.003475, -0.003042, -0.002756, -0.002619, -0.002476, -0.002396",\
                 "-0.004763, -0.004303, -0.003201, -0.001911, -0.0009066, -0.0001929, 0.00027, 0.0006297, 0.0008562, 0.001006",\
                 "0.004561, 0.004315, 0.003897, 0.003676, 0.003645, 0.003561, 0.003547, 0.003473, 0.003429, 0.00339",\
                 "0.0229, 0.02192, 0.01933, 0.01658, 0.01411, 0.0121, 0.0106, 0.009325, 0.008338, 0.007577",\
                 "0.05304, 0.05123, 0.04619, 0.03984, 0.03396, 0.02893, 0.02475, 0.02131, 0.01852, 0.01625",\
                 "0.09631, 0.09375, 0.08632, 0.07603, 0.06575, 0.05662, 0.04874, 0.0421, 0.03648, 0.03187",\
                 "0.1534, 0.1502, 0.1405, 0.1265, 0.1113, 0.09721, 0.08477, 0.07389, 0.06455, 0.05657",\
                 "0.2252, 0.2214, 0.2096, 0.1921, 0.172, 0.1522, 0.1343, 0.1186, 0.1047, 0.09256",\
                 "0.312, 0.3076, 0.2941, 0.2732, 0.2485, 0.2232, 0.1992, 0.1777, 0.1585, 0.1416");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.1667, 0.1669, 0.1675, 0.168, 0.1687, 0.1691, 0.1699, 0.1726, 0.1963, 0.3082",\
                 "0.163, 0.1635, 0.1649, 0.1663, 0.1676, 0.1684, 0.1693, 0.1723, 0.1968, 0.3101",\
                 "0.1643, 0.1642, 0.1643, 0.1651, 0.1663, 0.1674, 0.1686, 0.1718, 0.1986, 0.3179",\
                 "0.1773, 0.1763, 0.1741, 0.1717, 0.1703, 0.1701, 0.17, 0.1736, 0.2038, 0.3347",\
                 "0.2017, 0.2001, 0.1956, 0.19, 0.1847, 0.1808, 0.1783, 0.1814, 0.2175, 0.3693",\
                 "0.2387, 0.2363, 0.2294, 0.2204, 0.2114, 0.203, 0.1965, 0.1984, 0.2458, 0.4306",\
                 "0.2892, 0.286, 0.2768, 0.2642, 0.2511, 0.2386, 0.2278, 0.2302, 0.2987, 0.5351",\
                 "0.3545, 0.3506, 0.339, 0.323, 0.3051, 0.2883, 0.2745, 0.2852, 0.3979, 0.703",\
                 "0.4356, 0.4309, 0.4172, 0.3973, 0.3753, 0.3532, 0.3407, 0.3841, 0.5781, 0.9475",\
                 "0.5334, 0.528, 0.512, 0.4887, 0.4624, 0.4377, 0.4467, 0.5789, 0.8673, 1.213");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.03467, 0.03461, 0.03464, 0.03465, 0.03471, 0.03472, 0.03477, 0.03477, 0.03474, 0.03474",\
                 "0.03454, 0.03457, 0.0346, 0.03472, 0.03484, 0.03487, 0.03492, 0.03494, 0.03491, 0.03493",\
                 "0.0339, 0.03399, 0.03405, 0.03423, 0.03438, 0.03447, 0.03457, 0.03462, 0.03464, 0.03463",\
                 "0.03918, 0.03895, 0.03813, 0.03745, 0.03678, 0.03626, 0.03585, 0.03555, 0.0353, 0.03516",\
                 "0.05581, 0.05494, 0.05254, 0.0494, 0.04652, 0.04405, 0.04213, 0.04061, 0.03936, 0.03845",\
                 "0.08647, 0.08483, 0.08014, 0.07375, 0.0672, 0.06146, 0.05658, 0.05266, 0.04946, 0.04696",\
                 "0.1323, 0.13, 0.1228, 0.1126, 0.1016, 0.09127, 0.08225, 0.07465, 0.06838, 0.06313",\
                 "0.1941, 0.1911, 0.1816, 0.1674, 0.1513, 0.1357, 0.1215, 0.1091, 0.09842, 0.08951",\
                 "0.2725, 0.2687, 0.2572, 0.2392, 0.218, 0.1965, 0.1763, 0.1581, 0.1421, 0.1282",\
                 "0.3679, 0.3635, 0.3502, 0.3287, 0.3025, 0.2748, 0.248, 0.2235, 0.2012, 0.1815");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.2289, 0.229, 0.2294, 0.2299, 0.2304, 0.2308, 0.2315, 0.2346, 0.2599, 0.3762",\
                 "0.2258, 0.2263, 0.2274, 0.2284, 0.2295, 0.2303, 0.2313, 0.2343, 0.2604, 0.378",\
                 "0.2227, 0.223, 0.2241, 0.2257, 0.2272, 0.2287, 0.2298, 0.2338, 0.2619, 0.3861",\
                 "0.2249, 0.2248, 0.2249, 0.2253, 0.2264, 0.2276, 0.229, 0.2332, 0.2654, 0.4018",\
                 "0.2399, 0.239, 0.2368, 0.2346, 0.2328, 0.2319, 0.2322, 0.2366, 0.2752, 0.4311",\
                 "0.2737, 0.2716, 0.2661, 0.2594, 0.2537, 0.2487, 0.2453, 0.2496, 0.2983, 0.4842",\
                 "0.3269, 0.3238, 0.3147, 0.3029, 0.2914, 0.2815, 0.2732, 0.2775, 0.3455, 0.5769",\
                 "0.3983, 0.3944, 0.3827, 0.3658, 0.348, 0.3317, 0.3196, 0.3296, 0.4338, 0.7277",\
                 "0.4879, 0.4833, 0.4689, 0.4481, 0.4243, 0.4014, 0.3869, 0.4199, 0.5937, 0.9529",\
                 "0.596, 0.5907, 0.5745, 0.5496, 0.5208, 0.4927, 0.4896, 0.5906, 0.8581, 1.224");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.06928, 0.06926, 0.06926, 0.06916, 0.06916, 0.06924, 0.06924, 0.06919, 0.06917, 0.06913",\
                 "0.066, 0.06598, 0.06591, 0.06581, 0.06583, 0.0659, 0.06592, 0.06589, 0.06587, 0.06583",\
                 "0.06305, 0.06295, 0.06285, 0.06265, 0.06253, 0.06238, 0.06236, 0.06233, 0.06228, 0.06222",\
                 "0.06744, 0.06713, 0.06603, 0.06488, 0.06384, 0.0631, 0.06244, 0.06203, 0.06173, 0.06143",\
                 "0.08483, 0.08378, 0.08086, 0.07704, 0.07355, 0.07061, 0.06837, 0.0666, 0.06522, 0.06415",\
                 "0.1186, 0.1167, 0.1112, 0.1035, 0.09586, 0.08897, 0.08335, 0.07888, 0.07537, 0.0725",\
                 "0.1706, 0.1677, 0.1594, 0.1471, 0.134, 0.1217, 0.1111, 0.1023, 0.09513, 0.08932",\
                 "0.2417, 0.2382, 0.2268, 0.2097, 0.1904, 0.1716, 0.1546, 0.14, 0.1276, 0.1174",\
                 "0.3332, 0.3287, 0.3146, 0.2927, 0.267, 0.2409, 0.2163, 0.1948, 0.1757, 0.1597",\
                 "0.4451, 0.44, 0.4236, 0.3972, 0.3649, 0.3311, 0.2984, 0.2686, 0.242, 0.2186");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.2655, 0.2658, 0.2661, 0.2665, 0.2671, 0.2677, 0.2682, 0.2713, 0.2968, 0.4148",\
                 "0.2625, 0.263, 0.2642, 0.2652, 0.2662, 0.2669, 0.268, 0.271, 0.2974, 0.4169",\
                 "0.2593, 0.2596, 0.2607, 0.2624, 0.264, 0.2654, 0.2666, 0.2704, 0.2991, 0.4248",\
                 "0.2593, 0.2596, 0.2599, 0.2609, 0.2623, 0.2638, 0.2651, 0.2698, 0.3026, 0.4396",\
                 "0.2704, 0.2698, 0.2684, 0.2672, 0.2664, 0.2663, 0.2672, 0.2718, 0.3109, 0.4665",\
                 "0.302, 0.3001, 0.2952, 0.2898, 0.2853, 0.2813, 0.2791, 0.2834, 0.3325, 0.5152",\
                 "0.3581, 0.3551, 0.3462, 0.3345, 0.3236, 0.3148, 0.3073, 0.3115, 0.3759, 0.6006",\
                 "0.439, 0.4348, 0.4221, 0.4044, 0.3857, 0.3695, 0.3571, 0.3647, 0.4597, 0.7409",\
                 "0.543, 0.5379, 0.5224, 0.4995, 0.4733, 0.4482, 0.4314, 0.4553, 0.6099, 0.954",\
                 "0.6696, 0.6639, 0.6462, 0.6186, 0.5859, 0.5538, 0.5407, 0.616, 0.8583, 1.23");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.1265, 0.1437, 0.2046, 0.3195, 0.4984, 0.749, 1.079, 1.494, 2.001, 2.607",\
                 "0.1551, 0.1729, 0.2345, 0.3508, 0.5302, 0.7812, 1.111, 1.527, 2.034, 2.64",\
                 "0.2303, 0.2561, 0.3348, 0.4576, 0.6372, 0.8888, 1.219, 1.635, 2.142, 2.748",\
                 "0.2706, 0.3087, 0.4245, 0.6047, 0.8299, 1.092, 1.421, 1.836, 2.344, 2.949",\
                 "0.2599, 0.3109, 0.4666, 0.7061, 1.007, 1.351, 1.732, 2.153, 2.659, 3.262",\
                 "0.1913, 0.2555, 0.4543, 0.7553, 1.132, 1.563, 2.041, 2.555, 3.101, 3.707",\
                 "0.062, 0.1405, 0.3798, 0.7472, 1.201, 1.72, 2.294, 2.914, 3.574, 4.266",\
                 "-0.1326, -0.0401, 0.2415, 0.6723, 1.21, 1.818, 2.49, 3.213, 3.987, 4.801",\
                 "-0.3977, -0.2904, 0.0341, 0.5305, 1.149, 1.853, 2.623, 3.452, 4.334, 5.27",\
                 "-0.7375, -0.6141, -0.2463, 0.3166, 1.013, 1.815, 2.687, 3.622, 4.62, 5.672");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.2907, 0.3479, 0.552, 0.9434, 1.552, 2.404, 3.525, 4.938, 6.661, 8.716",\
                 "0.3062, 0.3639, 0.5703, 0.9651, 1.576, 2.43, 3.552, 4.965, 6.689, 8.744",\
                 "0.42, 0.4719, 0.6684, 1.059, 1.67, 2.525, 3.648, 5.061, 6.786, 8.841",\
                 "0.6281, 0.6926, 0.9004, 1.273, 1.873, 2.722, 3.84, 5.251, 6.973, 9.028",\
                 "0.8912, 0.9667, 1.214, 1.631, 2.219, 3.053, 4.161, 5.566, 7.282, 9.331",\
                 "1.218, 1.306, 1.587, 2.062, 2.716, 3.547, 4.639, 6.028, 7.735, 9.773",\
                 "1.611, 1.713, 2.032, 2.559, 3.286, 4.198, 5.294, 6.664, 8.353, 10.38",\
                 "2.07, 2.188, 2.552, 3.135, 3.927, 4.926, 6.113, 7.494, 9.162, 11.17",\
                 "2.602, 2.734, 3.147, 3.793, 4.653, 5.726, 7.015, 8.495, 10.18, 12.17",\
                 "3.206, 3.356, 3.817, 4.535, 5.467, 6.616, 7.991, 9.583, 11.38, 13.38");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.1445, 0.1738, 0.2767, 0.4727, 0.7787, 1.209, 1.774, 2.485, 3.357, 4.388",\
                 "0.1444, 0.1735, 0.2766, 0.4732, 0.7801, 1.209, 1.774, 2.484, 3.356, 4.392",\
                 "0.2195, 0.246, 0.3266, 0.4844, 0.78, 1.21, 1.775, 2.486, 3.356, 4.394",\
                 "0.3399, 0.3768, 0.4932, 0.673, 0.9, 1.243, 1.775, 2.482, 3.355, 4.393",\
                 "0.4916, 0.5406, 0.6862, 0.9154, 1.208, 1.547, 1.951, 2.543, 3.359, 4.391",\
                 "0.671, 0.7334, 0.9174, 1.193, 1.543, 1.959, 2.423, 2.928, 3.578, 4.463",\
                 "0.8786, 0.955, 1.18, 1.514, 1.921, 2.399, 2.951, 3.544, 4.183, 4.914",\
                 "1.114, 1.205, 1.471, 1.871, 2.343, 2.887, 3.503, 4.194, 4.933, 5.721",\
                 "1.376, 1.484, 1.796, 2.255, 2.809, 3.423, 4.105, 4.872, 5.716, 6.604",\
                 "1.653, 1.782, 2.156, 2.679, 3.312, 4.006, 4.772, 5.604, 6.528, 7.52");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.5648, 0.6768, 1.051, 1.741, 2.796, 4.271, 6.212, 8.654, 11.64, 15.2",\
                 "0.5548, 0.669, 1.048, 1.741, 2.796, 4.269, 6.207, 8.648, 11.64, 15.19",\
                 "0.5432, 0.6468, 1.031, 1.736, 2.795, 4.271, 6.204, 8.659, 11.63, 15.2",\
                 "0.6454, 0.7478, 1.069, 1.718, 2.792, 4.27, 6.21, 8.655, 11.62, 15.2",\
                 "0.7636, 0.8724, 1.229, 1.842, 2.799, 4.266, 6.207, 8.655, 11.64, 15.2",\
                 "0.93, 1.04, 1.407, 2.074, 3.004, 4.321, 6.207, 8.657, 11.64, 15.19",\
                 "1.147, 1.251, 1.631, 2.324, 3.332, 4.606, 6.327, 8.652, 11.63, 15.18",\
                 "1.377, 1.507, 1.904, 2.613, 3.671, 5.042, 6.691, 8.84, 11.65, 15.18",\
                 "1.642, 1.785, 2.217, 2.958, 4.038, 5.486, 7.238, 9.298, 11.91, 15.26",\
                 "1.924, 2.088, 2.566, 3.352, 4.456, 5.948, 7.8, 9.958, 12.46, 15.57");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.1848, 0.2051, 0.2728, 0.3961, 0.5815, 0.8372, 1.171, 1.589, 2.098, 2.704",\
                 "0.2147, 0.2348, 0.3025, 0.4257, 0.6113, 0.867, 1.2, 1.618, 2.128, 2.734",\
                 "0.3166, 0.3388, 0.4083, 0.5297, 0.7148, 0.9704, 1.304, 1.722, 2.231, 2.837",\
                 "0.4079, 0.44, 0.5415, 0.7046, 0.9144, 1.172, 1.504, 1.921, 2.43, 3.036",\
                 "0.4554, 0.4974, 0.6315, 0.8463, 1.124, 1.452, 1.818, 2.238, 2.745, 3.35",\
                 "0.4538, 0.5071, 0.6737, 0.9419, 1.287, 1.696, 2.154, 2.653, 3.189, 3.795",\
                 "0.3998, 0.4639, 0.6633, 0.9847, 1.401, 1.888, 2.438, 3.037, 3.683, 4.363",\
                 "0.2922, 0.3656, 0.5979, 0.9737, 1.46, 2.03, 2.667, 3.367, 4.12, 4.918",\
                 "0.1285, 0.2117, 0.4744, 0.9025, 1.459, 2.112, 2.845, 3.64, 4.498, 5.412",\
                 "-0.095, -0.0043, 0.2917, 0.7701, 1.397, 2.135, 2.958, 3.856, 4.819, 5.845");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.545, 0.6053, 0.8131, 1.205, 1.812, 2.665, 3.786, 5.198, 6.922, 8.974",\
                 "0.5608, 0.6221, 0.833, 1.227, 1.837, 2.691, 3.813, 5.226, 6.95, 9.004",\
                 "0.6406, 0.7012, 0.9129, 1.309, 1.921, 2.777, 3.9, 5.315, 7.04, 9.094",\
                 "0.7602, 0.8286, 1.053, 1.45, 2.06, 2.915, 4.039, 5.452, 7.178, 9.235",\
                 "0.9269, 1, 1.243, 1.673, 2.289, 3.137, 4.255, 5.665, 7.389, 9.443",\
                 "1.171, 1.253, 1.514, 1.967, 2.623, 3.482, 4.588, 5.987, 7.703, 9.751",\
                 "1.487, 1.58, 1.871, 2.354, 3.038, 3.939, 5.062, 6.447, 8.149, 10.18",\
                 "1.867, 1.975, 2.303, 2.829, 3.549, 4.485, 5.655, 7.06, 8.744, 10.76",\
                 "2.306, 2.427, 2.798, 3.382, 4.153, 5.128, 6.338, 7.796, 9.503, 11.51",\
                 "2.805, 2.94, 3.357, 4.004, 4.842, 5.871, 7.121, 8.625, 10.39, 12.42");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.2296, 0.261, 0.3686, 0.5681, 0.8766, 1.306, 1.87, 2.582, 3.449, 4.484",\
                 "0.227, 0.2592, 0.368, 0.568, 0.876, 1.306, 1.87, 2.582, 3.449, 4.484",\
                 "0.2721, 0.2961, 0.3818, 0.5658, 0.8752, 1.306, 1.87, 2.583, 3.449, 4.483",\
                 "0.4172, 0.4516, 0.5588, 0.7274, 0.9564, 1.324, 1.872, 2.581, 3.449, 4.485",\
                 "0.5906, 0.6342, 0.7706, 0.9858, 1.268, 1.596, 2.014, 2.623, 3.453, 4.484",\
                 "0.7946, 0.8522, 1.018, 1.279, 1.617, 2.02, 2.475, 2.982, 3.649, 4.548",\
                 "1.026, 1.097, 1.3, 1.609, 1.999, 2.468, 3.008, 3.598, 4.23, 4.976",\
                 "1.286, 1.37, 1.612, 1.98, 2.43, 2.958, 3.568, 4.245, 4.985, 5.765",\
                 "1.57, 1.664, 1.954, 2.384, 2.907, 3.501, 4.175, 4.932, 5.762, 6.652",\
                 "1.887, 1.994, 2.331, 2.825, 3.43, 4.096, 4.836, 5.66, 6.578, 7.572");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.6103, 0.7092, 1.064, 1.741, 2.793, 4.272, 6.211, 8.656, 11.64, 15.18",\
                 "0.6118, 0.7113, 1.062, 1.742, 2.793, 4.269, 6.208, 8.658, 11.64, 15.18",\
                 "0.619, 0.7149, 1.065, 1.742, 2.795, 4.267, 6.209, 8.656, 11.64, 15.16",\
                 "0.7158, 0.8066, 1.115, 1.752, 2.796, 4.267, 6.205, 8.646, 11.62, 15.19",\
                 "0.8294, 0.9274, 1.267, 1.872, 2.834, 4.274, 6.206, 8.654, 11.64, 15.2",\
                 "1.017, 1.105, 1.432, 2.068, 3.014, 4.356, 6.22, 8.647, 11.64, 15.2",\
                 "1.262, 1.351, 1.664, 2.284, 3.26, 4.586, 6.354, 8.688, 11.64, 15.18",\
                 "1.54, 1.633, 1.956, 2.564, 3.534, 4.903, 6.639, 8.858, 11.7, 15.2",\
                 "1.838, 1.945, 2.294, 2.91, 3.864, 5.234, 7.022, 9.208, 11.91, 15.29",\
                 "2.156, 2.276, 2.658, 3.314, 4.272, 5.62, 7.426, 9.666, 12.33, 15.56");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.1926, 0.2154, 0.2909, 0.4238, 0.6193, 0.8832, 1.223, 1.646, 2.159, 2.768",\
                 "0.2205, 0.2429, 0.3173, 0.4499, 0.645, 0.9088, 1.248, 1.671, 2.184, 2.793",\
                 "0.3324, 0.3547, 0.4257, 0.553, 0.7458, 1.009, 1.348, 1.771, 2.284, 2.893",\
                 "0.4475, 0.4797, 0.5802, 0.7417, 0.9495, 1.21, 1.547, 1.97, 2.482, 3.091",\
                 "0.5249, 0.5661, 0.6963, 0.9067, 1.18, 1.502, 1.864, 2.285, 2.796, 3.403",\
                 "0.561, 0.6116, 0.7718, 1.03, 1.366, 1.766, 2.217, 2.71, 3.241, 3.848",\
                 "0.5551, 0.6149, 0.8045, 1.111, 1.51, 1.985, 2.521, 3.112, 3.748, 4.423",\
                 "0.5056, 0.5741, 0.7915, 1.147, 1.61, 2.159, 2.78, 3.463, 4.204, 4.994",\
                 "0.415, 0.4903, 0.7331, 1.136, 1.661, 2.286, 2.991, 3.766, 4.606, 5.507",\
                 "0.2826, 0.366, 0.6341, 1.078, 1.667, 2.365, 3.153, 4.021, 4.96, 5.966");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.6112, 0.6711, 0.8789, 1.271, 1.879, 2.731, 3.852, 5.265, 6.988, 9.043",\
                 "0.6337, 0.6955, 0.9063, 1.3, 1.91, 2.764, 3.886, 5.298, 7.023, 9.077",\
                 "0.712, 0.7732, 0.9845, 1.381, 1.994, 2.849, 3.972, 5.387, 7.111, 9.167",\
                 "0.8149, 0.8809, 1.099, 1.496, 2.107, 2.963, 4.087, 5.503, 7.228, 9.285",\
                 "0.9316, 1.002, 1.236, 1.656, 2.272, 3.123, 4.244, 5.655, 7.38, 9.435",\
                 "1.094, 1.171, 1.421, 1.859, 2.504, 3.364, 4.474, 5.877, 7.593, 9.643",\
                 "1.298, 1.386, 1.668, 2.134, 2.797, 3.687, 4.811, 6.199, 7.902, 9.939",\
                 "1.551, 1.651, 1.966, 2.478, 3.175, 4.084, 5.238, 6.644, 8.33, 10.35",\
                 "1.852, 1.965, 2.314, 2.878, 3.626, 4.568, 5.742, 7.181, 8.891, 10.89",\
                 "2.2, 2.322, 2.708, 3.329, 4.141, 5.135, 6.341, 7.802, 9.543, 11.58");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.2801, 0.3153, 0.4312, 0.6376, 0.9503, 1.382, 1.945, 2.659, 3.528, 4.563",\
                 "0.2728, 0.3086, 0.4262, 0.6367, 0.9499, 1.381, 1.947, 2.657, 3.526, 4.56",\
                 "0.3077, 0.3327, 0.4261, 0.6254, 0.9442, 1.379, 1.946, 2.656, 3.526, 4.563",\
                 "0.4716, 0.505, 0.6092, 0.7724, 1.005, 1.387, 1.943, 2.658, 3.525, 4.563",\
                 "0.666, 0.7074, 0.8392, 1.047, 1.319, 1.639, 2.068, 2.687, 3.528, 4.563",\
                 "0.8988, 0.9504, 1.107, 1.353, 1.679, 2.071, 2.519, 3.028, 3.705, 4.615",\
                 "1.169, 1.23, 1.422, 1.705, 2.077, 2.529, 3.055, 3.64, 4.27, 5.021",\
                 "1.472, 1.551, 1.774, 2.11, 2.527, 3.03, 3.623, 4.294, 5.026, 5.806",\
                 "1.819, 1.907, 2.168, 2.566, 3.034, 3.59, 4.239, 4.98, 5.806, 6.692",\
                 "2.204, 2.307, 2.611, 3.059, 3.605, 4.21, 4.914, 5.716, 6.618, 7.604");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.004089, 0.01493, 0.03564, 0.0679, 0.1132, 0.1727, 0.2478, 0.3394, 0.4485");
          values("0.6108, 0.7104, 1.064, 1.742, 2.795, 4.266, 6.21, 8.65, 11.63, 15.2",\
                 "0.6128, 0.711, 1.064, 1.741, 2.793, 4.271, 6.205, 8.646, 11.63, 15.17",\
                 "0.6176, 0.7143, 1.065, 1.742, 2.796, 4.267, 6.205, 8.649, 11.63, 15.19",\
                 "0.6842, 0.7732, 1.096, 1.747, 2.793, 4.265, 6.211, 8.656, 11.64, 15.19",\
                 "0.7832, 0.8812, 1.216, 1.838, 2.824, 4.274, 6.209, 8.656, 11.64, 15.2",\
                 "0.9642, 1.054, 1.375, 2.008, 2.976, 4.35, 6.219, 8.646, 11.64, 15.19",\
                 "1.24, 1.326, 1.636, 2.228, 3.198, 4.55, 6.346, 8.678, 11.64, 15.18",\
                 "1.551, 1.646, 1.967, 2.552, 3.472, 4.828, 6.604, 8.863, 11.71, 15.19",\
                 "1.885, 1.985, 2.334, 2.944, 3.853, 5.158, 6.934, 9.174, 11.93, 15.33",\
                 "2.244, 2.348, 2.724, 3.384, 4.314, 5.588, 7.32, 9.572, 12.3, 15.58");
        }
      }
    }
  }

