/*
 * 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__or3_2) {
    area : 26.342400 ;

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

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

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

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

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

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

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

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

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

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

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

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.04307, 0.04308, 0.04307, 0.04309, 0.04301, 0.04303, 0.04301, \
                  0.04296, 0.04292, 0.04284");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.009249, -0.009287, -0.009294, -0.009328, -0.009338, -0.009367, \
                  -0.009367, -0.009366, -0.00937, -0.009364");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.02178, 0.02175, 0.02178, 0.02179, 0.02176, 0.02181, 0.0218, \
                  0.02179, 0.02176, 0.02174");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.009309, -0.009342, -0.009364, -0.009422, -0.009415, -0.009465, \
                  -0.009459, -0.009453, -0.009457, -0.009465");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.02175, 0.02177, 0.02178, 0.02176, 0.02178, 0.02181, 0.0218, \
                  0.02178, 0.02177, 0.02174");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.009309, -0.00938, -0.009371, -0.009422, -0.009407, -0.009464, \
                  -0.009458, -0.00947, -0.009462, -0.009462");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.02163, 0.02158, 0.02165, 0.02165, 0.02164, 0.02168, 0.02165, \
                  0.02161, 0.02157, 0.0215");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.01044, -0.01047, -0.01048, -0.01051, -0.01051, -0.01059, -0.01057, \
                  -0.01059, -0.01062, -0.01064");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03191, 0.03189, 0.03184, 0.03183, 0.03188, 0.0319, 0.03188, \
                  0.0319, 0.0319, 0.0319");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.03028, -0.03017, -0.03042, -0.03073, -0.03104, -0.03124, -0.03129, \
                  -0.03139, -0.03143, -0.03145");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.01938, 0.0194, 0.01945, 0.01946, 0.01951, 0.01955, 0.01955, \
                  0.01955, 0.01956, 0.01954");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.02931, -0.0292, -0.02901, -0.02886, -0.02874, -0.02867, -0.02855, \
                  -0.02848, -0.02837, -0.02828");
        }
      }
    }

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

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03183, 0.03178, 0.0318, 0.03174, 0.03186, 0.03191, 0.03185, \
                  0.03187, 0.0319, 0.03187");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.03072, -0.03068, -0.03083, -0.031, -0.03114, -0.03133, -0.03139, \
                  -0.03143, -0.03148, -0.03149");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03189, 0.03186, 0.03185, 0.0319, 0.0319, 0.03189, 0.0319, 0.03191, \
                  0.03192, 0.03192");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.02759, -0.02774, -0.02872, -0.02964, -0.03019, -0.03057, -0.03077, \
                  -0.03091, -0.03101, -0.03107");
        }
      }

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

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.03181, 0.03176, 0.0318, 0.03186, 0.03179, 0.03187, 0.03185, \
                  0.03187, 0.03186, 0.03188");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.03083, -0.03078, -0.03089, -0.03098, -0.03116, -0.03132, -0.03139, \
                  -0.03143, -0.03147, -0.03151");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1|A2|A3)" ;
      max_capacitance : 0.4948 ;
      max_transition : 7 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.3888, 0.3773, 0.3516, 0.3281, 0.3129, 0.3029, 0.2958, 0.2909, 0.2872, 0.2845",\
                 "0.3874, 0.3759, 0.3503, 0.3267, 0.3116, 0.3015, 0.2945, 0.2895, 0.2859, 0.2832",\
                 "0.387, 0.3755, 0.3498, 0.3264, 0.3112, 0.3011, 0.2942, 0.2892, 0.2855, 0.2829",\
                 "0.3934, 0.3819, 0.3562, 0.3328, 0.3176, 0.3077, 0.3008, 0.2958, 0.2922, 0.2896",\
                 "0.4147, 0.4029, 0.3762, 0.3518, 0.3357, 0.3251, 0.3178, 0.3125, 0.3087, 0.306",\
                 "0.4548, 0.4423, 0.4133, 0.3858, 0.3674, 0.3553, 0.3468, 0.3408, 0.3365, 0.3333",\
                 "0.5097, 0.4961, 0.4649, 0.4335, 0.412, 0.3974, 0.3875, 0.3804, 0.3752, 0.3715",\
                 "0.5816, 0.5669, 0.532, 0.4968, 0.4713, 0.4537, 0.4414, 0.4328, 0.4265, 0.4219",\
                 "0.6715, 0.6559, 0.6178, 0.5775, 0.5472, 0.5256, 0.5105, 0.4995, 0.4918, 0.4857",\
                 "0.7796, 0.7629, 0.7213, 0.6757, 0.6401, 0.6136, 0.5951, 0.5817, 0.5717, 0.5643");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.1567, 0.1537, 0.1506, 0.1505, 0.1514, 0.1521, 0.1539, 0.157, 0.1595, 0.1631",\
                 "0.1575, 0.1547, 0.1521, 0.1516, 0.1524, 0.1532, 0.155, 0.1579, 0.1604, 0.1631",\
                 "0.1604, 0.1579, 0.1544, 0.1534, 0.1539, 0.1551, 0.1575, 0.1592, 0.1613, 0.1657",\
                 "0.1754, 0.1715, 0.1657, 0.1623, 0.1618, 0.1617, 0.1637, 0.1655, 0.1676, 0.1725",\
                 "0.2008, 0.1956, 0.1864, 0.1805, 0.1772, 0.1762, 0.176, 0.1777, 0.1797, 0.1833",\
                 "0.239, 0.232, 0.2191, 0.2087, 0.2035, 0.2005, 0.1991, 0.1984, 0.2003, 0.2044",\
                 "0.2901, 0.2813, 0.2646, 0.2506, 0.241, 0.2374, 0.2343, 0.2321, 0.2327, 0.2364",\
                 "0.3553, 0.3444, 0.3247, 0.3063, 0.2921, 0.2827, 0.2801, 0.278, 0.2759, 0.2786",\
                 "0.4349, 0.4224, 0.3982, 0.3762, 0.3572, 0.3444, 0.3371, 0.3361, 0.3347, 0.3389",\
                 "0.5292, 0.5147, 0.4868, 0.4604, 0.4373, 0.4203, 0.4089, 0.4027, 0.4034, 0.409");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.4126, 0.4012, 0.3755, 0.352, 0.3368, 0.3266, 0.3196, 0.3146, 0.311, 0.3083",\
                 "0.4113, 0.3999, 0.3742, 0.3507, 0.3355, 0.3253, 0.3182, 0.3134, 0.3096, 0.3069",\
                 "0.4091, 0.3977, 0.3721, 0.3485, 0.3331, 0.3229, 0.3161, 0.311, 0.3074, 0.3047",\
                 "0.4128, 0.4013, 0.3753, 0.3514, 0.336, 0.3258, 0.3189, 0.3138, 0.3102, 0.3074",\
                 "0.434, 0.4221, 0.3949, 0.3697, 0.353, 0.3419, 0.3344, 0.329, 0.325, 0.3221",\
                 "0.4738, 0.4613, 0.4323, 0.4044, 0.3858, 0.3735, 0.3648, 0.3587, 0.3542, 0.3508",\
                 "0.5316, 0.5184, 0.4872, 0.4564, 0.4345, 0.4201, 0.4097, 0.4025, 0.3972, 0.3933",\
                 "0.6105, 0.5965, 0.5626, 0.5275, 0.5015, 0.4838, 0.4711, 0.462, 0.4554, 0.4506",\
                 "0.7103, 0.6955, 0.6584, 0.6182, 0.5874, 0.5653, 0.5495, 0.5384, 0.5299, 0.5237",\
                 "0.8294, 0.8135, 0.7737, 0.7284, 0.6917, 0.6655, 0.6462, 0.6321, 0.6213, 0.6135");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.1805, 0.1772, 0.1729, 0.171, 0.1713, 0.1727, 0.1737, 0.1747, 0.1777, 0.1804",\
                 "0.1805, 0.1772, 0.1726, 0.1708, 0.1711, 0.1726, 0.1735, 0.1747, 0.1772, 0.1817",\
                 "0.1813, 0.1778, 0.1734, 0.1708, 0.1711, 0.1727, 0.174, 0.1752, 0.1777, 0.1826",\
                 "0.1936, 0.1897, 0.1828, 0.1784, 0.177, 0.1776, 0.1795, 0.1801, 0.1822, 0.1867",\
                 "0.2203, 0.2152, 0.2053, 0.1983, 0.1937, 0.1924, 0.1923, 0.1932, 0.1957, 0.2001",\
                 "0.2614, 0.2545, 0.2407, 0.2298, 0.2231, 0.2196, 0.2175, 0.2166, 0.2181, 0.2208",\
                 "0.3169, 0.3085, 0.2913, 0.2756, 0.2653, 0.2606, 0.2568, 0.2539, 0.2532, 0.2577",\
                 "0.389, 0.3784, 0.358, 0.3395, 0.3231, 0.3133, 0.3094, 0.3061, 0.3035, 0.3058",\
                 "0.4777, 0.4649, 0.4411, 0.4181, 0.3986, 0.3848, 0.3752, 0.3718, 0.3699, 0.3728",\
                 "0.5837, 0.5694, 0.5413, 0.5154, 0.4904, 0.4714, 0.457, 0.4501, 0.4486, 0.4556");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.4357, 0.4242, 0.3985, 0.3751, 0.3598, 0.3496, 0.3426, 0.3376, 0.3338, 0.3312",\
                 "0.4344, 0.4229, 0.3972, 0.3738, 0.3585, 0.3483, 0.3413, 0.3364, 0.3326, 0.3299",\
                 "0.4319, 0.4204, 0.3946, 0.3711, 0.3559, 0.3457, 0.3386, 0.3338, 0.33, 0.3273",\
                 "0.4327, 0.4211, 0.3953, 0.3716, 0.3562, 0.346, 0.3391, 0.3342, 0.3304, 0.3276",\
                 "0.4495, 0.4376, 0.4108, 0.3863, 0.3699, 0.3592, 0.3517, 0.3462, 0.3424, 0.3395",\
                 "0.4889, 0.4766, 0.4483, 0.4207, 0.4025, 0.3904, 0.3819, 0.3759, 0.3716, 0.3684",\
                 "0.5551, 0.5421, 0.5111, 0.4798, 0.458, 0.4428, 0.4326, 0.425, 0.42, 0.4159",\
                 "0.6492, 0.635, 0.6006, 0.5644, 0.5375, 0.5188, 0.5053, 0.4957, 0.489, 0.4836",\
                 "0.7682, 0.7531, 0.7152, 0.673, 0.6403, 0.6168, 0.5994, 0.5869, 0.5776, 0.5709",\
                 "0.9093, 0.8933, 0.8526, 0.805, 0.7652, 0.7365, 0.7152, 0.6995, 0.6874, 0.6784");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.2057, 0.2016, 0.1959, 0.1924, 0.1919, 0.1924, 0.1934, 0.1946, 0.1962, 0.1994",\
                 "0.2039, 0.1998, 0.1942, 0.1909, 0.1905, 0.1909, 0.1921, 0.1933, 0.1949, 0.198",\
                 "0.2017, 0.1978, 0.192, 0.1889, 0.1881, 0.1887, 0.1899, 0.191, 0.1926, 0.1962",\
                 "0.2123, 0.2078, 0.2002, 0.195, 0.1933, 0.1931, 0.194, 0.1951, 0.1967, 0.2007",\
                 "0.241, 0.2353, 0.2251, 0.216, 0.211, 0.209, 0.2084, 0.2086, 0.2102, 0.2142",\
                 "0.2864, 0.2795, 0.265, 0.2526, 0.2448, 0.239, 0.2364, 0.2356, 0.2362, 0.2407",\
                 "0.3505, 0.3411, 0.3233, 0.3061, 0.2933, 0.2878, 0.2826, 0.2783, 0.2767, 0.2803",\
                 "0.4341, 0.423, 0.4013, 0.3805, 0.3641, 0.3517, 0.3461, 0.3404, 0.3373, 0.3388",\
                 "0.5401, 0.5269, 0.5015, 0.4761, 0.4532, 0.4367, 0.4263, 0.4205, 0.4159, 0.4179",\
                 "0.6674, 0.6528, 0.6227, 0.5933, 0.5667, 0.5425, 0.5266, 0.5177, 0.5129, 0.5182");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.6519, 0.6988, 0.8248, 1.007, 1.238, 1.521, 1.863, 2.274, 2.767, 3.35",\
                 "0.6561, 0.7028, 0.829, 1.011, 1.242, 1.525, 1.867, 2.279, 2.771, 3.354",\
                 "0.6898, 0.7367, 0.8626, 1.045, 1.275, 1.558, 1.9, 2.312, 2.805, 3.387",\
                 "0.7846, 0.8313, 0.9572, 1.139, 1.37, 1.653, 1.995, 2.406, 2.899, 3.482",\
                 "0.9536, 0.9999, 1.125, 1.306, 1.536, 1.819, 2.161, 2.572, 3.065, 3.647",\
                 "1.183, 1.23, 1.356, 1.537, 1.768, 2.052, 2.393, 2.805, 3.297, 3.88",\
                 "1.465, 1.513, 1.639, 1.822, 2.055, 2.34, 2.683, 3.096, 3.587, 4.17",\
                 "1.801, 1.851, 1.981, 2.165, 2.398, 2.685, 3.03, 3.443, 3.936, 4.518",\
                 "2.189, 2.242, 2.376, 2.565, 2.802, 3.09, 3.436, 3.85, 4.346, 4.927",\
                 "2.628, 2.683, 2.825, 3.021, 3.264, 3.558, 3.907, 4.322, 4.816, 5.4");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.2927, 0.3258, 0.4274, 0.6079, 0.8855, 1.275, 1.787, 2.433, 3.222, 4.162",\
                 "0.3043, 0.3374, 0.4392, 0.6195, 0.8974, 1.286, 1.799, 2.444, 3.233, 4.172",\
                 "0.3444, 0.3774, 0.4788, 0.6588, 0.9365, 1.326, 1.838, 2.483, 3.271, 4.209",\
                 "0.4107, 0.444, 0.545, 0.7233, 0.9997, 1.389, 1.9, 2.547, 3.335, 4.275",\
                 "0.4602, 0.4952, 0.5981, 0.7764, 1.051, 1.439, 1.949, 2.596, 3.382, 4.321",\
                 "0.4803, 0.5177, 0.6239, 0.8027, 1.076, 1.462, 1.972, 2.615, 3.402, 4.341",\
                 "0.4643, 0.5046, 0.6154, 0.7978, 1.071, 1.455, 1.963, 2.605, 3.392, 4.329",\
                 "0.4084, 0.4518, 0.5689, 0.7549, 1.029, 1.414, 1.922, 2.562, 3.347, 4.283",\
                 "0.3098, 0.3567, 0.4801, 0.6704, 0.9461, 1.333, 1.843, 2.485, 3.268, 4.204",\
                 "0.1674, 0.217, 0.3474, 0.5429, 0.8215, 1.21, 1.723, 2.367, 3.151, 4.085");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.222, 0.2704, 0.3971, 0.5898, 0.8634, 1.233, 1.723, 2.359, 3.156, 4.121",\
                 "0.2222, 0.2703, 0.3971, 0.5895, 0.8636, 1.233, 1.723, 2.359, 3.156, 4.121",\
                 "0.2218, 0.2704, 0.3973, 0.5902, 0.8632, 1.234, 1.723, 2.358, 3.156, 4.122",\
                 "0.2218, 0.2698, 0.3972, 0.5906, 0.8632, 1.234, 1.724, 2.361, 3.154, 4.12",\
                 "0.2218, 0.2702, 0.3978, 0.592, 0.8648, 1.235, 1.724, 2.361, 3.157, 4.123",\
                 "0.2336, 0.2822, 0.41, 0.5998, 0.8716, 1.239, 1.728, 2.361, 3.158, 4.123",\
                 "0.2498, 0.2974, 0.4232, 0.6152, 0.8872, 1.253, 1.738, 2.366, 3.16, 4.124",\
                 "0.2736, 0.3218, 0.4442, 0.6322, 0.9012, 1.267, 1.75, 2.379, 3.168, 4.126",\
                 "0.3024, 0.353, 0.4772, 0.661, 0.9244, 1.284, 1.764, 2.389, 3.176, 4.134",\
                 "0.3346, 0.3878, 0.5176, 0.7028, 0.9618, 1.316, 1.788, 2.403, 3.186, 4.141");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.1152, 0.1604, 0.3152, 0.6237, 1.12, 1.818, 2.737, 3.904, 5.313, 6.999",\
                 "0.1154, 0.1603, 0.3151, 0.6236, 1.12, 1.819, 2.737, 3.904, 5.313, 7",\
                 "0.1151, 0.1606, 0.3159, 0.6237, 1.119, 1.819, 2.737, 3.901, 5.315, 7.005",\
                 "0.1213, 0.1653, 0.3178, 0.625, 1.12, 1.819, 2.74, 3.905, 5.31, 6.999",\
                 "0.1344, 0.1788, 0.3296, 0.6292, 1.122, 1.819, 2.736, 3.904, 5.313, 7.003",\
                 "0.1536, 0.1962, 0.344, 0.6364, 1.123, 1.821, 2.741, 3.902, 5.309, 7.001",\
                 "0.1742, 0.2176, 0.3624, 0.65, 1.13, 1.824, 2.74, 3.902, 5.307, 6.993",\
                 "0.1996, 0.244, 0.3856, 0.668, 1.144, 1.834, 2.744, 3.898, 5.309, 7",\
                 "0.2238, 0.2696, 0.4114, 0.6902, 1.162, 1.852, 2.76, 3.907, 5.314, 6.999",\
                 "0.2476, 0.298, 0.4396, 0.7136, 1.181, 1.872, 2.784, 3.929, 5.326, 7.001");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.7588, 0.8056, 0.9315, 1.113, 1.344, 1.628, 1.97, 2.381, 2.874, 3.456",\
                 "0.7635, 0.8102, 0.9362, 1.118, 1.349, 1.632, 1.974, 2.386, 2.878, 3.461",\
                 "0.7826, 0.8293, 0.9551, 1.137, 1.368, 1.651, 1.993, 2.405, 2.897, 3.48",\
                 "0.8352, 0.8819, 1.008, 1.189, 1.42, 1.703, 2.045, 2.457, 2.949, 3.532",\
                 "0.9491, 0.9958, 1.121, 1.303, 1.534, 1.816, 2.158, 2.57, 3.062, 3.645",\
                 "1.121, 1.169, 1.297, 1.481, 1.715, 1.999, 2.341, 2.752, 3.245, 3.827",\
                 "1.351, 1.4, 1.531, 1.718, 1.953, 2.241, 2.585, 2.997, 3.49, 4.072",\
                 "1.632, 1.683, 1.818, 2.01, 2.249, 2.539, 2.885, 3.3, 3.793, 4.375",\
                 "1.955, 2.008, 2.15, 2.351, 2.597, 2.892, 3.241, 3.658, 4.152, 4.735",\
                 "2.319, 2.376, 2.525, 2.735, 2.992, 3.296, 3.654, 4.074, 4.569, 5.153");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.3322, 0.3657, 0.4677, 0.648, 0.9254, 1.315, 1.827, 2.472, 3.259, 4.199",\
                 "0.3427, 0.3761, 0.4783, 0.6586, 0.9359, 1.325, 1.837, 2.483, 3.27, 4.209",\
                 "0.3807, 0.414, 0.5159, 0.696, 0.9738, 1.363, 1.875, 2.52, 3.308, 4.247",\
                 "0.4517, 0.4851, 0.5861, 0.7646, 1.041, 1.43, 1.942, 2.587, 3.375, 4.314",\
                 "0.5153, 0.5506, 0.6535, 0.8312, 1.106, 1.493, 2.004, 2.649, 3.435, 4.375",\
                 "0.5526, 0.5899, 0.696, 0.8741, 1.147, 1.533, 2.042, 2.685, 3.473, 4.41",\
                 "0.5576, 0.5977, 0.7082, 0.8887, 1.162, 1.546, 2.054, 2.696, 3.481, 4.418",\
                 "0.5286, 0.5717, 0.6874, 0.8724, 1.145, 1.53, 2.038, 2.678, 3.462, 4.398",\
                 "0.462, 0.5081, 0.6303, 0.8197, 1.096, 1.482, 1.99, 2.631, 3.414, 4.348",\
                 "0.3578, 0.407, 0.5361, 0.731, 1.008, 1.397, 1.908, 2.551, 3.335, 4.269");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.2217, 0.2704, 0.3981, 0.5895, 0.8646, 1.233, 1.724, 2.358, 3.153, 4.123",\
                 "0.2218, 0.2704, 0.3983, 0.5896, 0.8632, 1.232, 1.723, 2.358, 3.157, 4.124",\
                 "0.2217, 0.2706, 0.3978, 0.589, 0.863, 1.233, 1.724, 2.36, 3.153, 4.122",\
                 "0.2224, 0.2706, 0.3984, 0.5914, 0.8638, 1.234, 1.724, 2.361, 3.154, 4.123",\
                 "0.2274, 0.2758, 0.402, 0.5932, 0.8662, 1.235, 1.726, 2.362, 3.156, 4.12",\
                 "0.2394, 0.2892, 0.417, 0.6076, 0.8768, 1.242, 1.73, 2.364, 3.159, 4.125",\
                 "0.2532, 0.3034, 0.4332, 0.6258, 0.8928, 1.257, 1.741, 2.37, 3.161, 4.124",\
                 "0.2766, 0.3294, 0.4604, 0.6514, 0.9148, 1.277, 1.756, 2.38, 3.167, 4.127",\
                 "0.3062, 0.3606, 0.4976, 0.6898, 0.9528, 1.307, 1.78, 2.395, 3.179, 4.136",\
                 "0.3362, 0.3944, 0.54, 0.7392, 1.003, 1.355, 1.818, 2.425, 3.194, 4.147");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.1191, 0.1639, 0.3189, 0.6261, 1.12, 1.821, 2.742, 3.896, 5.309, 6.997",\
                 "0.1191, 0.1639, 0.3183, 0.6256, 1.121, 1.82, 2.74, 3.896, 5.311, 6.995",\
                 "0.1186, 0.1637, 0.3189, 0.6257, 1.12, 1.82, 2.741, 3.894, 5.309, 6.996",\
                 "0.1215, 0.1667, 0.3197, 0.6258, 1.12, 1.821, 2.741, 3.899, 5.311, 6.995",\
                 "0.1366, 0.1794, 0.3292, 0.6298, 1.121, 1.82, 2.741, 3.9, 5.309, 6.995",\
                 "0.153, 0.1962, 0.343, 0.637, 1.125, 1.82, 2.742, 3.898, 5.32, 6.994",\
                 "0.175, 0.2166, 0.3618, 0.6506, 1.132, 1.824, 2.741, 3.902, 5.317, 6.995",\
                 "0.1962, 0.2402, 0.3832, 0.6688, 1.144, 1.837, 2.746, 3.899, 5.312, 7.008",\
                 "0.2206, 0.2674, 0.4082, 0.6902, 1.163, 1.852, 2.763, 3.907, 5.314, 7.006",\
                 "0.2438, 0.2938, 0.4372, 0.715, 1.183, 1.875, 2.789, 3.931, 5.326, 7.003");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.8016, 0.8486, 0.9745, 1.156, 1.388, 1.67, 2.012, 2.424, 2.917, 3.499",\
                 "0.8089, 0.8558, 0.9819, 1.163, 1.395, 1.678, 2.02, 2.431, 2.924, 3.507",\
                 "0.8291, 0.8757, 1.002, 1.183, 1.415, 1.698, 2.04, 2.452, 2.944, 3.526",\
                 "0.8642, 0.911, 1.037, 1.218, 1.449, 1.732, 2.074, 2.486, 2.978, 3.561",\
                 "0.9411, 0.9876, 1.113, 1.295, 1.526, 1.809, 2.151, 2.562, 3.055, 3.637",\
                 "1.069, 1.117, 1.246, 1.43, 1.662, 1.946, 2.288, 2.7, 3.193, 3.775",\
                 "1.256, 1.305, 1.436, 1.623, 1.858, 2.145, 2.489, 2.901, 3.393, 3.976",\
                 "1.485, 1.537, 1.674, 1.868, 2.109, 2.4, 2.747, 3.161, 3.653, 4.235",\
                 "1.748, 1.803, 1.948, 2.153, 2.404, 2.704, 3.056, 3.473, 3.967, 4.549",\
                 "2.041, 2.099, 2.252, 2.468, 2.733, 3.047, 3.412, 3.837, 4.334, 4.917");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.3545, 0.3889, 0.4931, 0.6751, 0.9539, 1.344, 1.856, 2.501, 3.289, 4.226",\
                 "0.3634, 0.3975, 0.5018, 0.6838, 0.9627, 1.353, 1.865, 2.51, 3.297, 4.234",\
                 "0.3992, 0.4336, 0.5377, 0.7196, 0.9986, 1.388, 1.901, 2.546, 3.333, 4.271",\
                 "0.4738, 0.5077, 0.6103, 0.7905, 1.068, 1.458, 1.969, 2.614, 3.403, 4.341",\
                 "0.5483, 0.5836, 0.6882, 0.8668, 1.142, 1.53, 2.041, 2.686, 3.473, 4.411",\
                 "0.5993, 0.6375, 0.7447, 0.9239, 1.198, 1.583, 2.093, 2.737, 3.522, 4.46",\
                 "0.6233, 0.6639, 0.7756, 0.958, 1.23, 1.615, 2.123, 2.765, 3.551, 4.488",\
                 "0.6179, 0.6618, 0.7789, 0.9656, 1.24, 1.625, 2.132, 2.772, 3.556, 4.491",\
                 "0.5819, 0.6293, 0.7539, 0.9446, 1.221, 1.608, 2.117, 2.757, 3.539, 4.474",\
                 "0.5138, 0.5653, 0.6972, 0.894, 1.174, 1.562, 2.075, 2.718, 3.502, 4.434");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.2221, 0.2707, 0.3976, 0.5896, 0.8632, 1.234, 1.725, 2.361, 3.157, 4.122",\
                 "0.2221, 0.2703, 0.3978, 0.5896, 0.863, 1.234, 1.724, 2.357, 3.157, 4.122",\
                 "0.2221, 0.2701, 0.3982, 0.5904, 0.8628, 1.233, 1.723, 2.357, 3.157, 4.123",\
                 "0.2224, 0.2706, 0.3978, 0.5906, 0.8636, 1.233, 1.724, 2.361, 3.157, 4.123",\
                 "0.226, 0.2742, 0.4008, 0.5932, 0.866, 1.235, 1.725, 2.361, 3.157, 4.12",\
                 "0.2362, 0.2862, 0.414, 0.6052, 0.875, 1.242, 1.728, 2.362, 3.157, 4.121",\
                 "0.2538, 0.304, 0.4334, 0.6254, 0.8928, 1.256, 1.74, 2.369, 3.158, 4.125",\
                 "0.2828, 0.3352, 0.4706, 0.6592, 0.9218, 1.281, 1.757, 2.38, 3.167, 4.127",\
                 "0.3158, 0.3724, 0.5142, 0.711, 0.9736, 1.326, 1.792, 2.402, 3.178, 4.133",\
                 "0.3506, 0.4108, 0.5628, 0.7708, 1.041, 1.394, 1.852, 2.448, 3.206, 4.146");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004408, 0.01637, 0.03922, 0.07481, 0.1248, 0.1905, 0.2733, 0.3743, 0.4948");
          values("0.1247, 0.1702, 0.3254, 0.6323, 1.127, 1.824, 2.743, 3.9, 5.321, 6.991",\
                 "0.1246, 0.1702, 0.3254, 0.6323, 1.127, 1.824, 2.743, 3.901, 5.308, 6.994",\
                 "0.1239, 0.1694, 0.3248, 0.6321, 1.125, 1.824, 2.741, 3.899, 5.308, 6.992",\
                 "0.125, 0.1703, 0.3256, 0.6316, 1.126, 1.823, 2.743, 3.9, 5.32, 6.997",\
                 "0.1396, 0.1836, 0.334, 0.6348, 1.126, 1.822, 2.743, 3.902, 5.322, 6.997",\
                 "0.1584, 0.2, 0.3486, 0.6432, 1.129, 1.826, 2.744, 3.899, 5.311, 6.995",\
                 "0.1796, 0.223, 0.3676, 0.656, 1.137, 1.828, 2.745, 3.899, 5.312, 6.993",\
                 "0.2044, 0.2472, 0.3906, 0.6754, 1.153, 1.841, 2.752, 3.902, 5.319, 7.008",\
                 "0.2302, 0.2766, 0.4178, 0.699, 1.173, 1.863, 2.768, 3.913, 5.319, 6.998",\
                 "0.2616, 0.309, 0.4508, 0.7284, 1.197, 1.886, 2.794, 3.938, 5.334, 7.004");
        }
      }
    }
  }

