/*
 * 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_2) {
    area : 30.732800 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.08134, 0.08128, 0.08112, 0.08095, 0.08098, 0.0809, 0.08094, \
                  0.08091, 0.08088, 0.08082");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.01899, -0.01896, -0.019, -0.01903, -0.01901, -0.01903, -0.01904, \
                  -0.01904, -0.01905, -0.01906");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.04307, 0.04299, 0.0429, 0.04285, 0.04296, 0.04287, 0.04292, \
                  0.04291, 0.04291, 0.04286");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.0195, -0.01948, -0.01952, -0.01954, -0.01953, -0.01953, -0.01957, \
                  -0.01958, -0.01959, -0.0196");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.04307, 0.04299, 0.0429, 0.04285, 0.04295, 0.04285, 0.04293, \
                  0.04291, 0.0429, 0.04285");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.0195, -0.01946, -0.01952, -0.01953, -0.01955, -0.01953, -0.01957, \
                  -0.01958, -0.0196, -0.01958");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.04092, 0.04086, 0.04094, 0.04088, 0.04093, 0.04087, 0.04092, \
                  0.04088, 0.04088, 0.04081");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.02066, -0.02064, -0.02067, -0.02068, -0.02081, -0.02075, -0.02081, \
                  -0.02083, -0.02086, -0.02087");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.06264, 0.06252, 0.06245, 0.06235, 0.06244, 0.06236, 0.06258, \
                  0.06248, 0.06248, 0.06246");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.0527, -0.05407, -0.05889, -0.06028, -0.06082, -0.06096, -0.06124, \
                  -0.06134, -0.06148, -0.06153");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.03775, 0.03769, 0.03779, 0.03774, 0.03784, 0.03779, 0.03788, \
                  0.03788, 0.03791, 0.03788");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.04605, -0.0453, -0.04365, -0.04149, -0.03986, -0.03879, -0.03828, \
                  -0.03792, -0.03767, -0.03745");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.06246, 0.06231, 0.06235, 0.06244, 0.06235, 0.06226, 0.06257, \
                  0.06238, 0.06252, 0.06252");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.05473, -0.05756, -0.05969, -0.06046, -0.06105, -0.06102, -0.06137, \
                  -0.06143, -0.06152, -0.06157");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.06247, 0.06247, 0.06239, 0.06231, 0.06255, 0.06228, 0.06258, \
                  0.06261, 0.06265, 0.06259");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.05272, -0.054, -0.0565, -0.05815, -0.05931, -0.05964, -0.06013, \
                  -0.06047, -0.06064, -0.06076");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.06246, 0.06231, 0.06235, 0.06244, 0.06238, 0.06244, 0.06256, \
                  0.06255, 0.06248, 0.06251");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.05821, -0.05875, -0.05969, -0.06045, -0.06103, -0.06101, -0.06138, \
                  -0.06144, -0.06149, -0.06156");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)&(!A2)&(!A3))" ;
      max_capacitance : 0.1831 ;
      max_transition : 5 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("-0.01141, -0.01109, -0.01016, -0.009443, -0.008991, -0.008663, -0.008504, -0.008387, -0.008305, -0.008248",\
                 "-0.01141, -0.01084, -0.009403, -0.008066, -0.007063, -0.006412, -0.005986, -0.005708, -0.005522, -0.005394",\
                 "-0.008626, -0.008265, -0.007119, -0.005726, -0.004601, -0.003634, -0.002971, -0.002556, -0.002262, -0.002014",\
                 "0.001038, 0.0008788, 0.0005664, 0.0004517, 0.0004488, 0.0004923, 0.000477, 0.0004953, 0.0004057, 0.0004932",\
                 "0.02174, 0.02095, 0.01856, 0.01559, 0.01298, 0.01073, 0.008898, 0.007452, 0.006302, 0.005404",\
                 "0.05673, 0.05504, 0.05016, 0.04353, 0.03705, 0.03115, 0.02635, 0.02226, 0.01882, 0.01604",\
                 "0.1075, 0.1051, 0.0976, 0.08697, 0.07566, 0.06509, 0.05572, 0.04796, 0.04105, 0.03544",\
                 "0.1748, 0.1717, 0.1621, 0.1473, 0.1306, 0.1145, 0.1, 0.08692, 0.07586, 0.06618",\
                 "0.2595, 0.2556, 0.2439, 0.2258, 0.2038, 0.1817, 0.1609, 0.1421, 0.1254, 0.1107",\
                 "0.3619, 0.358, 0.3444, 0.3227, 0.2961, 0.2675, 0.24, 0.2147, 0.1918, 0.1712");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2093, 0.2096, 0.2104, 0.2112, 0.212, 0.2129, 0.2138, 0.2148, 0.216, 0.217",\
                 "0.2069, 0.2073, 0.2084, 0.2098, 0.2111, 0.2122, 0.2133, 0.2144, 0.2154, 0.2165",\
                 "0.2093, 0.2092, 0.2092, 0.2097, 0.2105, 0.2116, 0.2126, 0.2139, 0.2147, 0.2161",\
                 "0.2244, 0.2236, 0.2215, 0.2189, 0.2171, 0.2163, 0.2161, 0.2161, 0.2166, 0.2177",\
                 "0.2534, 0.252, 0.2479, 0.2422, 0.2363, 0.2316, 0.2281, 0.2258, 0.2243, 0.2237",\
                 "0.297, 0.2952, 0.289, 0.2802, 0.2705, 0.2612, 0.2529, 0.2466, 0.242, 0.2382",\
                 "0.3571, 0.3544, 0.3463, 0.3342, 0.3208, 0.3071, 0.2941, 0.2823, 0.2732, 0.2654",\
                 "0.4343, 0.4311, 0.4213, 0.406, 0.3883, 0.3703, 0.3524, 0.3357, 0.3203, 0.3065",\
                 "0.5301, 0.5264, 0.5149, 0.4967, 0.4749, 0.4519, 0.4299, 0.4076, 0.3864, 0.3665",\
                 "0.6453, 0.6412, 0.628, 0.6073, 0.5817, 0.5534, 0.5259, 0.4989, 0.4722, 0.4466");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.02685, 0.02688, 0.02698, 0.02711, 0.02717, 0.02728, 0.02736, 0.02734, 0.02736, 0.0274",\
                 "0.02623, 0.02628, 0.02648, 0.02667, 0.0269, 0.02702, 0.02708, 0.02717, 0.02722, 0.02721",\
                 "0.02598, 0.02595, 0.02605, 0.0263, 0.02664, 0.02679, 0.02694, 0.02699, 0.02706, 0.02711",\
                 "0.03291, 0.0326, 0.03182, 0.03095, 0.03004, 0.02936, 0.02902, 0.02855, 0.02831, 0.02814",\
                 "0.05311, 0.0522, 0.0496, 0.0461, 0.04261, 0.03964, 0.03717, 0.03525, 0.0338, 0.03254",\
                 "0.08986, 0.08826, 0.08323, 0.07599, 0.06852, 0.06156, 0.05567, 0.05069, 0.04673, 0.04348",\
                 "0.1445, 0.142, 0.1345, 0.1232, 0.1107, 0.09843, 0.08759, 0.07845, 0.07062, 0.06407",\
                 "0.2176, 0.2147, 0.2048, 0.1894, 0.1714, 0.1532, 0.1362, 0.1213, 0.1083, 0.09719",\
                 "0.3106, 0.3069, 0.2949, 0.2757, 0.2522, 0.2277, 0.2039, 0.182, 0.1626, 0.1458",\
                 "0.4236, 0.4193, 0.4056, 0.3831, 0.3543, 0.323, 0.292, 0.2628, 0.2362, 0.2123");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2546, 0.2548, 0.2553, 0.256, 0.2567, 0.2573, 0.258, 0.259, 0.2601, 0.2611",\
                 "0.2522, 0.2526, 0.2535, 0.2545, 0.2558, 0.2567, 0.2575, 0.2585, 0.2593, 0.2608",\
                 "0.2497, 0.2499, 0.2508, 0.2521, 0.2534, 0.255, 0.2564, 0.2578, 0.2589, 0.26",\
                 "0.2578, 0.2574, 0.2566, 0.2558, 0.2557, 0.2563, 0.2568, 0.2581, 0.2595, 0.261",\
                 "0.2831, 0.2821, 0.2791, 0.2748, 0.2709, 0.2681, 0.2664, 0.2655, 0.2647, 0.2648",\
                 "0.3283, 0.3263, 0.3204, 0.3127, 0.3042, 0.2962, 0.2895, 0.2849, 0.2808, 0.2783",\
                 "0.3929, 0.3902, 0.3822, 0.37, 0.3569, 0.3439, 0.3318, 0.3209, 0.3124, 0.3054",\
                 "0.4774, 0.4745, 0.4642, 0.4484, 0.4298, 0.4116, 0.3939, 0.3772, 0.3623, 0.3495",\
                 "0.5827, 0.579, 0.5672, 0.5481, 0.5248, 0.5006, 0.4769, 0.4548, 0.4334, 0.4137",\
                 "0.7091, 0.7051, 0.692, 0.67, 0.6426, 0.6122, 0.5827, 0.5541, 0.5272, 0.501");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.06166, 0.0617, 0.06162, 0.06162, 0.06172, 0.06181, 0.06181, 0.06184, 0.06185, 0.06189",\
                 "0.05855, 0.05859, 0.05849, 0.0586, 0.05865, 0.0587, 0.05868, 0.05871, 0.05872, 0.05876",\
                 "0.05592, 0.05589, 0.05563, 0.05541, 0.05522, 0.05517, 0.05513, 0.0551, 0.05507, 0.05509",\
                 "0.06184, 0.06151, 0.06027, 0.05887, 0.05749, 0.05649, 0.05572, 0.05527, 0.05487, 0.0546",\
                 "0.0829, 0.08189, 0.0788, 0.07459, 0.07037, 0.06666, 0.06379, 0.06144, 0.05977, 0.05834",\
                 "0.1231, 0.1212, 0.1154, 0.1069, 0.09803, 0.09006, 0.08311, 0.07753, 0.07299, 0.06939",\
                 "0.1844, 0.1817, 0.1728, 0.1597, 0.1448, 0.1306, 0.118, 0.1074, 0.09843, 0.09104",\
                 "0.2681, 0.2644, 0.2527, 0.2347, 0.2133, 0.1917, 0.1719, 0.1543, 0.1394, 0.1269",\
                 "0.3748, 0.3704, 0.3562, 0.3334, 0.3054, 0.2759, 0.2476, 0.222, 0.1993, 0.1801",\
                 "0.5055, 0.5005, 0.4842, 0.4571, 0.4227, 0.3851, 0.3479, 0.3129, 0.2815, 0.2536");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2981, 0.2984, 0.2989, 0.2996, 0.3001, 0.3009, 0.3016, 0.3024, 0.3035, 0.304",\
                 "0.2956, 0.296, 0.2971, 0.298, 0.2992, 0.3, 0.3011, 0.3022, 0.3032, 0.3042",\
                 "0.2923, 0.2926, 0.2936, 0.2949, 0.2966, 0.2982, 0.2995, 0.3008, 0.3022, 0.3036",\
                 "0.2958, 0.2959, 0.2956, 0.2957, 0.2964, 0.2977, 0.2989, 0.3001, 0.3017, 0.3033",\
                 "0.3166, 0.3159, 0.3134, 0.3108, 0.3082, 0.3065, 0.3057, 0.3056, 0.3056, 0.3068",\
                 "0.3611, 0.3593, 0.3541, 0.347, 0.3399, 0.3335, 0.3281, 0.3241, 0.3214, 0.3188",\
                 "0.431, 0.4281, 0.4205, 0.4083, 0.3953, 0.3833, 0.3718, 0.3619, 0.3536, 0.3478",\
                 "0.526, 0.5226, 0.512, 0.4955, 0.4761, 0.4574, 0.44, 0.4239, 0.4091, 0.396",\
                 "0.6456, 0.642, 0.6293, 0.6095, 0.5847, 0.5584, 0.5338, 0.5104, 0.4891, 0.4694",\
                 "0.7902, 0.786, 0.7727, 0.7494, 0.7195, 0.687, 0.6541, 0.6235, 0.5945, 0.5678");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.08456, 0.09284, 0.1218, 0.1763, 0.2608, 0.379, 0.5345, 0.7304, 0.9695, 1.254",\
                 "0.09236, 0.1008, 0.13, 0.185, 0.2697, 0.3882, 0.5439, 0.7398, 0.9789, 1.264",\
                 "0.1196, 0.1288, 0.1588, 0.2137, 0.2986, 0.4172, 0.573, 0.7689, 1.008, 1.293",\
                 "0.1442, 0.1568, 0.1978, 0.2651, 0.3539, 0.4721, 0.6273, 0.823, 1.062, 1.347",\
                 "0.156, 0.1724, 0.2247, 0.3098, 0.4222, 0.557, 0.7139, 0.9086, 1.147, 1.431",\
                 "0.1518, 0.1726, 0.2372, 0.3417, 0.4771, 0.64, 0.8256, 1.031, 1.269, 1.552",\
                 "0.1308, 0.1552, 0.2329, 0.3573, 0.5184, 0.7084, 0.9251, 1.167, 1.428, 1.715",\
                 "0.0919, 0.1204, 0.2102, 0.3555, 0.5422, 0.7621, 1.009, 1.284, 1.584, 1.907",\
                 "0.0344, 0.0667, 0.1686, 0.3339, 0.5468, 0.7973, 1.078, 1.386, 1.722, 2.085",\
                 "-0.0434, -0.0067, 0.1079, 0.2923, 0.5318, 0.8124, 1.127, 1.472, 1.843, 2.244");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.1443, 0.1627, 0.2274, 0.3497, 0.5392, 0.8046, 1.153, 1.592, 2.128, 2.767",\
                 "0.1486, 0.1672, 0.2321, 0.3551, 0.5452, 0.8111, 1.16, 1.6, 2.136, 2.774",\
                 "0.1795, 0.1971, 0.2601, 0.3814, 0.5712, 0.837, 1.186, 1.626, 2.162, 2.8",\
                 "0.2471, 0.2658, 0.3284, 0.4454, 0.6313, 0.894, 1.241, 1.68, 2.215, 2.853",\
                 "0.3363, 0.3577, 0.4292, 0.5547, 0.7367, 0.9944, 1.337, 1.771, 2.305, 2.941",\
                 "0.4465, 0.472, 0.5524, 0.6915, 0.8892, 1.146, 1.482, 1.912, 2.439, 3.071",\
                 "0.5763, 0.6054, 0.699, 0.8534, 1.069, 1.346, 1.684, 2.107, 2.628, 3.254",\
                 "0.7254, 0.7596, 0.8668, 1.042, 1.276, 1.574, 1.936, 2.363, 2.878, 3.496",\
                 "0.8955, 0.9331, 1.055, 1.252, 1.512, 1.83, 2.217, 2.671, 3.191, 3.803",\
                 "1.086, 1.13, 1.265, 1.486, 1.772, 2.117, 2.527, 3.008, 3.558, 4.178");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.09401, 0.1074, 0.1537, 0.2417, 0.3794, 0.5728, 0.8276, 1.147, 1.539, 2.005",\
                 "0.09408, 0.107, 0.1537, 0.2417, 0.3796, 0.5724, 0.827, 1.148, 1.538, 2.004",\
                 "0.1082, 0.1184, 0.1572, 0.2425, 0.3792, 0.573, 0.8286, 1.148, 1.539, 2.006",\
                 "0.1555, 0.1689, 0.212, 0.2818, 0.3924, 0.5742, 0.8273, 1.149, 1.54, 2.005",\
                 "0.2153, 0.2312, 0.2825, 0.3684, 0.4848, 0.629, 0.8432, 1.149, 1.538, 2.005",\
                 "0.2889, 0.3086, 0.3696, 0.4685, 0.6022, 0.7678, 0.9584, 1.208, 1.554, 2.006",\
                 "0.3722, 0.3966, 0.4708, 0.5854, 0.735, 0.9202, 1.14, 1.385, 1.676, 2.062",\
                 "0.465, 0.4942, 0.582, 0.7174, 0.8888, 1.091, 1.331, 1.608, 1.914, 2.253",\
                 "0.5674, 0.6002, 0.7028, 0.8632, 1.058, 1.286, 1.545, 1.845, 2.183, 2.549",\
                 "0.6804, 0.7172, 0.8346, 1.016, 1.241, 1.496, 1.779, 2.099, 2.461, 2.862");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2618, 0.2945, 0.4086, 0.6222, 0.9529, 1.418, 2.023, 2.791, 3.73, 4.847",\
                 "0.2602, 0.2935, 0.4083, 0.622, 0.9539, 1.417, 2.024, 2.794, 3.732, 4.838",\
                 "0.2555, 0.2887, 0.4056, 0.6218, 0.9527, 1.416, 2.026, 2.794, 3.727, 4.842",\
                 "0.2844, 0.3134, 0.4144, 0.6187, 0.9521, 1.416, 2.026, 2.793, 3.728, 4.837",\
                 "0.3199, 0.3521, 0.4619, 0.6533, 0.9567, 1.417, 2.026, 2.788, 3.728, 4.844",\
                 "0.38, 0.4122, 0.5184, 0.7206, 1.018, 1.436, 2.024, 2.791, 3.723, 4.84",\
                 "0.4588, 0.4924, 0.601, 0.8006, 1.111, 1.521, 2.063, 2.792, 3.723, 4.838",\
                 "0.5494, 0.5852, 0.7048, 0.9072, 1.214, 1.642, 2.176, 2.856, 3.739, 4.84",\
                 "0.6456, 0.6878, 0.8188, 1.038, 1.345, 1.776, 2.331, 2.995, 3.827, 4.873",\
                 "0.7514, 0.7994, 0.9444, 1.183, 1.507, 1.931, 2.494, 3.184, 3.992, 4.987");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.1179, 0.1265, 0.1563, 0.2121, 0.2976, 0.4166, 0.5725, 0.7685, 1.008, 1.292",\
                 "0.1252, 0.134, 0.1639, 0.2197, 0.3053, 0.4242, 0.5802, 0.7762, 1.015, 1.3",\
                 "0.1527, 0.1614, 0.191, 0.2468, 0.3324, 0.4515, 0.6074, 0.8034, 1.042, 1.327",\
                 "0.1916, 0.2028, 0.2394, 0.301, 0.387, 0.5054, 0.6609, 0.8567, 1.095, 1.38",\
                 "0.2204, 0.2345, 0.2803, 0.3581, 0.4637, 0.5924, 0.7475, 0.9421, 1.18, 1.464",\
                 "0.237, 0.2543, 0.3106, 0.404, 0.5302, 0.6855, 0.8648, 1.066, 1.303, 1.585",\
                 "0.2409, 0.2611, 0.3273, 0.4378, 0.5862, 0.7652, 0.9741, 1.208, 1.465, 1.749",\
                 "0.231, 0.2546, 0.3305, 0.4581, 0.6284, 0.8337, 1.07, 1.336, 1.629, 1.946",\
                 "0.2071, 0.2334, 0.319, 0.4635, 0.6557, 0.8888, 1.155, 1.45, 1.778, 2.132",\
                 "0.1691, 0.1977, 0.2926, 0.4535, 0.6679, 0.9272, 1.224, 1.553, 1.912, 2.303");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2081, 0.2265, 0.2914, 0.4139, 0.6031, 0.8678, 1.216, 1.655, 2.191, 2.831",\
                 "0.2123, 0.2311, 0.2962, 0.4194, 0.6094, 0.8745, 1.223, 1.662, 2.198, 2.837",\
                 "0.231, 0.2496, 0.3148, 0.4381, 0.6286, 0.8946, 1.244, 1.683, 2.219, 2.859",\
                 "0.2682, 0.2884, 0.3557, 0.4773, 0.6659, 0.9306, 1.279, 1.718, 2.255, 2.894",\
                 "0.3298, 0.3506, 0.4207, 0.5482, 0.7367, 0.9978, 1.343, 1.779, 2.313, 2.951",\
                 "0.4172, 0.4402, 0.5153, 0.6474, 0.8434, 1.105, 1.445, 1.876, 2.405, 3.039",\
                 "0.5214, 0.5484, 0.634, 0.7776, 0.9795, 1.25, 1.593, 2.018, 2.541, 3.169",\
                 "0.642, 0.6733, 0.7702, 0.9303, 1.147, 1.426, 1.778, 2.208, 2.725, 3.345",\
                 "0.7773, 0.8125, 0.9232, 1.102, 1.34, 1.635, 1.996, 2.437, 2.96, 3.575",\
                 "0.9287, 0.9676, 1.092, 1.292, 1.553, 1.872, 2.249, 2.699, 3.234, 3.857");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.1341, 0.1477, 0.1953, 0.2848, 0.4238, 0.6173, 0.872, 1.192, 1.583, 2.049",\
                 "0.1341, 0.1477, 0.1953, 0.2852, 0.4237, 0.6175, 0.872, 1.192, 1.583, 2.049",\
                 "0.1372, 0.1497, 0.1954, 0.2849, 0.4237, 0.6176, 0.872, 1.192, 1.583, 2.049",\
                 "0.1898, 0.2024, 0.2424, 0.3114, 0.4304, 0.6177, 0.8718, 1.193, 1.583, 2.049",\
                 "0.258, 0.2724, 0.3212, 0.4028, 0.5146, 0.662, 0.8831, 1.193, 1.583, 2.049",\
                 "0.3398, 0.3571, 0.4135, 0.508, 0.6368, 0.799, 0.9886, 1.244, 1.595, 2.05",\
                 "0.4326, 0.4548, 0.5218, 0.6308, 0.7746, 0.9554, 1.172, 1.413, 1.708, 2.101",\
                 "0.5362, 0.5622, 0.6424, 0.7682, 0.9306, 1.129, 1.365, 1.639, 1.942, 2.284",\
                 "0.6504, 0.6822, 0.7768, 0.9204, 1.106, 1.324, 1.578, 1.874, 2.21, 2.576",\
                 "0.7726, 0.8076, 0.9166, 1.085, 1.297, 1.541, 1.815, 2.129, 2.489, 2.89");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2683, 0.2997, 0.4104, 0.623, 0.9548, 1.415, 2.022, 2.789, 3.727, 4.846",\
                 "0.2685, 0.2999, 0.4107, 0.6226, 0.9548, 1.417, 2.024, 2.789, 3.726, 4.838",\
                 "0.2717, 0.302, 0.4112, 0.6231, 0.9525, 1.417, 2.026, 2.789, 3.723, 4.837",\
                 "0.3054, 0.3327, 0.4301, 0.6268, 0.9528, 1.417, 2.025, 2.791, 3.73, 4.841",\
                 "0.3444, 0.3735, 0.4757, 0.6659, 0.9679, 1.418, 2.026, 2.793, 3.722, 4.846",\
                 "0.4122, 0.4376, 0.5312, 0.7226, 1.021, 1.445, 2.03, 2.79, 3.721, 4.838",\
                 "0.5012, 0.5278, 0.6202, 0.799, 1.093, 1.511, 2.072, 2.802, 3.729, 4.838",\
                 "0.6002, 0.629, 0.7302, 0.9094, 1.189, 1.601, 2.152, 2.86, 3.748, 4.844",\
                 "0.7074, 0.7392, 0.8504, 1.041, 1.319, 1.716, 2.265, 2.956, 3.817, 4.877",\
                 "0.8202, 0.8576, 0.9794, 1.188, 1.479, 1.869, 2.396, 3.084, 3.934, 4.966");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.1311, 0.1409, 0.1739, 0.234, 0.3236, 0.4459, 0.6041, 0.8019, 1.042, 1.328",\
                 "0.1372, 0.147, 0.1799, 0.2401, 0.3294, 0.4516, 0.6099, 0.8077, 1.048, 1.334",\
                 "0.1649, 0.1742, 0.2062, 0.2657, 0.3547, 0.4767, 0.6349, 0.8328, 1.073, 1.359",\
                 "0.2132, 0.2245, 0.2603, 0.3214, 0.409, 0.5301, 0.6876, 0.885, 1.125, 1.411",\
                 "0.2543, 0.2678, 0.3125, 0.3884, 0.4917, 0.618, 0.7745, 0.9706, 1.21, 1.494",\
                 "0.2867, 0.3026, 0.3566, 0.4467, 0.569, 0.7199, 0.8955, 1.095, 1.332, 1.616",\
                 "0.3103, 0.3292, 0.3914, 0.4961, 0.6374, 0.8112, 1.014, 1.244, 1.497, 1.78",\
                 "0.3259, 0.3474, 0.4177, 0.537, 0.6972, 0.8942, 1.123, 1.382, 1.669, 1.981",\
                 "0.3335, 0.3569, 0.4352, 0.5679, 0.7477, 0.9685, 1.223, 1.51, 1.828, 2.177",\
                 "0.3319, 0.3577, 0.4438, 0.5905, 0.7892, 1.033, 1.314, 1.629, 1.978, 2.359");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2345, 0.2532, 0.318, 0.4402, 0.6292, 0.8943, 1.243, 1.682, 2.218, 2.856",\
                 "0.2402, 0.2593, 0.3243, 0.4472, 0.6372, 0.9026, 1.251, 1.69, 2.227, 2.865",\
                 "0.2582, 0.277, 0.3424, 0.4659, 0.6564, 0.9226, 1.272, 1.712, 2.248, 2.887",\
                 "0.2853, 0.3049, 0.3709, 0.4934, 0.6833, 0.9488, 1.298, 1.737, 2.275, 2.914",\
                 "0.3261, 0.3461, 0.4141, 0.5397, 0.7282, 0.9905, 1.337, 1.775, 2.309, 2.947",\
                 "0.3824, 0.4044, 0.4783, 0.6069, 0.7994, 1.062, 1.402, 1.835, 2.365, 3",\
                 "0.4479, 0.4733, 0.5569, 0.6979, 0.8958, 1.161, 1.504, 1.93, 2.453, 3.082",\
                 "0.5249, 0.5534, 0.6467, 0.803, 1.017, 1.289, 1.635, 2.064, 2.581, 3.202",\
                 "0.6106, 0.6429, 0.7467, 0.9202, 1.154, 1.444, 1.797, 2.228, 2.75, 3.364",\
                 "0.7045, 0.7408, 0.8557, 1.046, 1.302, 1.615, 1.986, 2.424, 2.949, 3.568");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.1679, 0.1828, 0.2327, 0.3247, 0.465, 0.6594, 0.915, 1.236, 1.628, 2.094",\
                 "0.167, 0.1816, 0.232, 0.3239, 0.4648, 0.6593, 0.915, 1.236, 1.628, 2.093",\
                 "0.1632, 0.1778, 0.2283, 0.3226, 0.4645, 0.6597, 0.9149, 1.236, 1.628, 2.094",\
                 "0.2175, 0.2294, 0.2681, 0.3396, 0.4657, 0.6589, 0.915, 1.236, 1.628, 2.094",\
                 "0.2943, 0.3084, 0.3549, 0.4339, 0.5415, 0.6938, 0.9216, 1.236, 1.628, 2.094",\
                 "0.3872, 0.4037, 0.457, 0.5462, 0.6716, 0.8274, 1.018, 1.28, 1.636, 2.094",\
                 "0.496, 0.5152, 0.5776, 0.6768, 0.8136, 0.989, 1.202, 1.441, 1.742, 2.14",\
                 "0.621, 0.6432, 0.716, 0.8288, 0.978, 1.167, 1.398, 1.668, 1.969, 2.314",\
                 "0.7596, 0.7858, 0.8718, 0.9988, 1.168, 1.369, 1.615, 1.907, 2.238, 2.602",\
                 "0.9108, 0.9432, 1.039, 1.19, 1.375, 1.597, 1.857, 2.163, 2.519, 2.915");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002257, 0.006669, 0.01509, 0.02822, 0.04664, 0.07088, 0.1014, 0.1387, 0.1831");
          values("0.2686, 0.3001, 0.4106, 0.623, 0.9526, 1.416, 2.024, 2.789, 3.73, 4.845",\
                 "0.269, 0.2999, 0.4108, 0.6227, 0.9528, 1.417, 2.023, 2.788, 3.723, 4.838",\
                 "0.2709, 0.3017, 0.4114, 0.6225, 0.9527, 1.417, 2.023, 2.789, 3.726, 4.836",\
                 "0.2924, 0.3207, 0.4218, 0.6246, 0.9532, 1.418, 2.025, 2.79, 3.732, 4.848",\
                 "0.3288, 0.3571, 0.4583, 0.6531, 0.964, 1.419, 2.025, 2.793, 3.729, 4.846",\
                 "0.403, 0.4286, 0.5196, 0.7054, 1.007, 1.44, 2.028, 2.792, 3.727, 4.846",\
                 "0.5016, 0.5292, 0.6216, 0.792, 1.078, 1.497, 2.066, 2.802, 3.73, 4.837",\
                 "0.6096, 0.6398, 0.7398, 0.9198, 1.189, 1.585, 2.137, 2.853, 3.754, 4.851",\
                 "0.7262, 0.7576, 0.8664, 1.061, 1.339, 1.715, 2.246, 2.94, 3.813, 4.882",\
                 "0.8486, 0.8848, 1.001, 1.213, 1.514, 1.895, 2.395, 3.067, 3.917, 4.958");
        }
      }
    }
  }

