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

  cell(gf180mcu_fd_sc_mcu7t5v0__and3_2) {
    area : 24.147200 ;

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

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

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

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

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

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

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

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

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

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

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

    pin(A1) {
      capacitance : 0.004451 ;
      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.02864, 0.0285, 0.02843, 0.0284, 0.02838, 0.02839, 0.02842, 0.02843, \
                  0.02849, 0.02841");
        }

        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.01814, -0.0181, -0.01813, -0.01814, -0.0182, -0.01814, -0.01823, \
                  -0.01825, -0.01826, -0.01822");
        }
      }

      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.02863, 0.0285, 0.02847, 0.0284, 0.02842, 0.02837, 0.02845, 0.02845, \
                  0.02844, 0.02843");
        }

        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.01815, -0.01812, -0.01816, -0.01812, -0.01825, -0.01817, -0.01817, \
                  -0.01825, -0.01823, -0.01825");
        }
      }

      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.02851, 0.02842, 0.02843, 0.02838, 0.0284, 0.02835, 0.02841, \
                  0.02844, 0.02845, 0.02846");
        }

        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.01253, 0.01254, 0.01252, 0.01246, 0.01239, 0.01241, 0.01232, \
                  0.01232, 0.01229, 0.0123");
        }
      }
    }

    pin(A2) {
      capacitance : 0.00424 ;
      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.03305, 0.03464, 0.03664, 0.03723, 0.03801, 0.0386, 0.03918, \
                  0.03957, 0.03983, 0.04001");
        }

        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.02488, -0.02482, -0.02474, -0.02471, -0.02478, -0.02469, -0.02477, \
                  -0.02477, -0.02477, -0.02476");
        }
      }

      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.02877, 0.02622, 0.02478, 0.02476, 0.0248, 0.02477, 0.0248, 0.02484, \
                  0.02482, 0.02483");
        }

        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.02477, -0.02477, -0.02474, -0.02475, -0.02478, -0.02472, -0.02476, \
                  -0.02477, -0.02476, -0.02474");
        }
      }

      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.02854, 0.0285, 0.02845, 0.02843, 0.0284, 0.02838, 0.02851, 0.0284, \
                  0.02845, 0.02842");
        }

        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.0191, -0.01909, -0.01909, -0.01905, -0.01911, -0.01908, -0.01915, \
                  -0.01919, -0.01921, -0.01921");
        }
      }
    }

    pin(A3) {
      capacitance : 0.004209 ;
      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.02498, 0.0249, 0.02484, 0.02478, 0.0248, 0.02482, 0.02485, 0.02483, \
                  0.02484, 0.02485");
        }

        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.02484, -0.02481, -0.02477, -0.02472, -0.02474, -0.02472, -0.02477, \
                  -0.02473, -0.02475, -0.02476");
        }
      }

      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.02516, 0.02494, 0.0248, 0.02481, 0.0248, 0.02477, 0.02485, 0.02482, \
                  0.02484, 0.02481");
        }

        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.02482, -0.0248, -0.02474, -0.02473, -0.02478, -0.02474, -0.02479, \
                  -0.02476, -0.02479, -0.02477");
        }
      }

      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.02644, 0.02495, 0.02486, 0.02479, 0.0248, 0.02483, 0.02485, \
                  0.02483, 0.02486, 0.02485");
        }

        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.02484, -0.02482, -0.02479, -0.02474, -0.02475, -0.02465, -0.02476, \
                  -0.02476, -0.02478, -0.02477");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.505 ;
      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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.2667, 0.2618, 0.2563, 0.2539, 0.2527, 0.2521, 0.2518, 0.2514, 0.2515, 0.2512",\
                 "0.2662, 0.2614, 0.2558, 0.2534, 0.2523, 0.2514, 0.2513, 0.2509, 0.2508, 0.2506",\
                 "0.2657, 0.2606, 0.2549, 0.2524, 0.2515, 0.2509, 0.2503, 0.2503, 0.2502, 0.2501",\
                 "0.2751, 0.2696, 0.2621, 0.2587, 0.2572, 0.2563, 0.256, 0.2556, 0.2555, 0.2554",\
                 "0.3028, 0.2951, 0.2842, 0.2775, 0.2742, 0.2721, 0.2712, 0.2705, 0.27, 0.2698",\
                 "0.3432, 0.3342, 0.3191, 0.3092, 0.3031, 0.2994, 0.2975, 0.2963, 0.2953, 0.2948",\
                 "0.3986, 0.3877, 0.3685, 0.3541, 0.3451, 0.3396, 0.336, 0.3336, 0.3323, 0.3314",\
                 "0.4684, 0.4563, 0.4322, 0.4133, 0.4007, 0.3927, 0.3875, 0.3841, 0.3819, 0.3802",\
                 "0.5526, 0.5393, 0.5107, 0.4872, 0.4711, 0.4601, 0.4528, 0.4474, 0.4441, 0.4417",\
                 "0.6515, 0.6369, 0.6042, 0.5761, 0.5553, 0.5407, 0.531, 0.5244, 0.5198, 0.5166");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.1751, 0.1702, 0.1623, 0.1579, 0.1562, 0.1564, 0.1577, 0.1602, 0.1611, 0.1629",\
                 "0.1746, 0.1696, 0.1617, 0.1572, 0.1555, 0.1557, 0.1573, 0.1588, 0.1606, 0.1638",\
                 "0.1743, 0.1693, 0.1616, 0.1568, 0.1551, 0.1552, 0.1564, 0.1584, 0.1602, 0.1629",\
                 "0.1828, 0.1773, 0.1692, 0.1632, 0.1607, 0.1598, 0.161, 0.1633, 0.1642, 0.166",\
                 "0.2048, 0.1984, 0.1885, 0.1804, 0.1756, 0.1739, 0.1745, 0.1755, 0.1773, 0.1791",\
                 "0.2383, 0.2309, 0.218, 0.2086, 0.2021, 0.198, 0.1971, 0.1971, 0.1984, 0.1998",\
                 "0.2859, 0.2765, 0.2613, 0.248, 0.24, 0.2353, 0.2329, 0.2308, 0.2304, 0.2317",\
                 "0.347, 0.3359, 0.3183, 0.3008, 0.2893, 0.2826, 0.2804, 0.2772, 0.2749, 0.274",\
                 "0.4214, 0.4089, 0.3884, 0.3683, 0.3542, 0.3414, 0.3388, 0.3375, 0.3348, 0.3312",\
                 "0.5094, 0.4956, 0.4712, 0.4496, 0.4317, 0.416, 0.4067, 0.4041, 0.4045, 0.4041");
        }
      }

      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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.3016, 0.2959, 0.2883, 0.2843, 0.2823, 0.2812, 0.2806, 0.2802, 0.2799, 0.2797",\
                 "0.3005, 0.2946, 0.2874, 0.2835, 0.2814, 0.2804, 0.2801, 0.2796, 0.2792, 0.2791",\
                 "0.2999, 0.2942, 0.287, 0.2828, 0.2809, 0.2798, 0.2793, 0.2789, 0.2787, 0.2786",\
                 "0.3086, 0.3024, 0.2939, 0.289, 0.2868, 0.2855, 0.2849, 0.2845, 0.2842, 0.284",\
                 "0.3367, 0.3291, 0.317, 0.3089, 0.3045, 0.3022, 0.3009, 0.3, 0.2995, 0.2992",\
                 "0.3785, 0.3696, 0.3535, 0.342, 0.3352, 0.3311, 0.3289, 0.3274, 0.3264, 0.3258",\
                 "0.4356, 0.4251, 0.4048, 0.3893, 0.3797, 0.3734, 0.3694, 0.3669, 0.3654, 0.3644",\
                 "0.5081, 0.4961, 0.4714, 0.4519, 0.4382, 0.4295, 0.4239, 0.4199, 0.4175, 0.4157",\
                 "0.5954, 0.5819, 0.5535, 0.529, 0.5115, 0.4996, 0.4919, 0.4865, 0.4827, 0.4802",\
                 "0.6976, 0.6833, 0.651, 0.622, 0.6004, 0.5846, 0.5743, 0.5673, 0.5622, 0.5588");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.1752, 0.1702, 0.1625, 0.1579, 0.1562, 0.1564, 0.1577, 0.1597, 0.1611, 0.1642",\
                 "0.1746, 0.1697, 0.1619, 0.1571, 0.1556, 0.1556, 0.157, 0.1584, 0.1611, 0.162",\
                 "0.1733, 0.1683, 0.1607, 0.1558, 0.1542, 0.1542, 0.1555, 0.157, 0.1593, 0.162",\
                 "0.18, 0.1746, 0.1658, 0.1604, 0.1579, 0.1575, 0.1587, 0.1611, 0.162, 0.1638",\
                 "0.199, 0.1927, 0.1831, 0.176, 0.1716, 0.1703, 0.171, 0.1719, 0.175, 0.1777",\
                 "0.2319, 0.2249, 0.2128, 0.2027, 0.1977, 0.1935, 0.1927, 0.1948, 0.1948, 0.1971",\
                 "0.2794, 0.2707, 0.2559, 0.2426, 0.2343, 0.2309, 0.2279, 0.2263, 0.2272, 0.2299",\
                 "0.3411, 0.331, 0.3139, 0.2978, 0.2859, 0.2795, 0.2765, 0.274, 0.2718, 0.2727",\
                 "0.4165, 0.4052, 0.3845, 0.366, 0.3509, 0.3393, 0.336, 0.3357, 0.3334, 0.3294",\
                 "0.5061, 0.4935, 0.4693, 0.4492, 0.4312, 0.4165, 0.4081, 0.4041, 0.405, 0.4027");
        }
      }

      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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.3347, 0.3283, 0.319, 0.314, 0.3108, 0.3094, 0.3087, 0.3078, 0.3073, 0.307",\
                 "0.3331, 0.3266, 0.3176, 0.3124, 0.3093, 0.3079, 0.3072, 0.3063, 0.3058, 0.3056",\
                 "0.3331, 0.3264, 0.3174, 0.3121, 0.3093, 0.3075, 0.3066, 0.3061, 0.3056, 0.3055",\
                 "0.3414, 0.3347, 0.3245, 0.3186, 0.3155, 0.3138, 0.3128, 0.3122, 0.312, 0.3116",\
                 "0.3699, 0.3617, 0.3485, 0.3398, 0.3345, 0.3316, 0.33, 0.3291, 0.3284, 0.328",\
                 "0.4138, 0.4043, 0.3873, 0.3749, 0.3671, 0.3625, 0.3595, 0.3577, 0.3567, 0.3558",\
                 "0.473, 0.4621, 0.4413, 0.425, 0.4142, 0.4073, 0.403, 0.4002, 0.3984, 0.397",\
                 "0.5484, 0.5364, 0.5115, 0.4913, 0.4764, 0.4671, 0.4608, 0.4566, 0.454, 0.4519",\
                 "0.6402, 0.6274, 0.5981, 0.5734, 0.5549, 0.5423, 0.5339, 0.5281, 0.524, 0.5212",\
                 "0.7482, 0.7342, 0.7017, 0.672, 0.6501, 0.6337, 0.6226, 0.6148, 0.6094, 0.6058");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.1753, 0.1704, 0.1626, 0.1579, 0.1563, 0.1563, 0.1576, 0.1588, 0.1611, 0.1624",\
                 "0.1745, 0.1694, 0.1617, 0.1574, 0.1553, 0.1555, 0.1572, 0.1584, 0.1602, 0.1642",\
                 "0.173, 0.168, 0.1604, 0.1556, 0.1537, 0.1538, 0.1551, 0.157, 0.1584, 0.1602",\
                 "0.1771, 0.1717, 0.1637, 0.158, 0.156, 0.1558, 0.1576, 0.1584, 0.1602, 0.1629",\
                 "0.1931, 0.187, 0.1784, 0.1716, 0.1678, 0.1669, 0.168, 0.1692, 0.1719, 0.1732",\
                 "0.224, 0.2169, 0.206, 0.1969, 0.1934, 0.1895, 0.1896, 0.1899, 0.1917, 0.1957",\
                 "0.2714, 0.2633, 0.2493, 0.2376, 0.2301, 0.2276, 0.2261, 0.2241, 0.225, 0.2263",\
                 "0.3348, 0.3254, 0.3084, 0.2931, 0.2816, 0.2764, 0.2769, 0.274, 0.2709, 0.2736",\
                 "0.4131, 0.402, 0.3827, 0.3641, 0.35, 0.3401, 0.3375, 0.3361, 0.3357, 0.333",\
                 "0.5059, 0.4936, 0.471, 0.4519, 0.4343, 0.4224, 0.4125, 0.4104, 0.4131, 0.4113");
        }
      }

      timing() {
        related_pin : "A1" ;
        timing_sense : positive_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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.2531, 0.2786, 0.3471, 0.4503, 0.5921, 0.7835, 1.033, 1.348, 1.732, 2.19",\
                 "0.2621, 0.2876, 0.3563, 0.4595, 0.6012, 0.7926, 1.042, 1.357, 1.741, 2.2",\
                 "0.2962, 0.3217, 0.3902, 0.4935, 0.6352, 0.8266, 1.077, 1.391, 1.775, 2.234",\
                 "0.3678, 0.3933, 0.4614, 0.5642, 0.706, 0.8971, 1.147, 1.462, 1.846, 2.304",\
                 "0.4639, 0.4913, 0.5623, 0.6671, 0.8092, 1, 1.25, 1.564, 1.948, 2.406",\
                 "0.5743, 0.6034, 0.6784, 0.786, 0.9305, 1.122, 1.371, 1.686, 2.069, 2.527",\
                 "0.6991, 0.7307, 0.8102, 0.9227, 1.069, 1.261, 1.51, 1.824, 2.207, 2.664",\
                 "0.8365, 0.8703, 0.9561, 1.074, 1.224, 1.417, 1.666, 1.98, 2.363, 2.821",\
                 "0.9868, 1.023, 1.115, 1.24, 1.395, 1.592, 1.842, 2.154, 2.537, 2.995",\
                 "1.15, 1.189, 1.286, 1.418, 1.58, 1.781, 2.034, 2.348, 2.731, 3.187");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.2971, 0.3267, 0.4124, 0.554, 0.7628, 1.053, 1.434, 1.916, 2.502, 3.203",\
                 "0.3026, 0.332, 0.4177, 0.5594, 0.7682, 1.058, 1.44, 1.92, 2.509, 3.209",\
                 "0.3242, 0.3538, 0.4393, 0.5811, 0.7898, 1.08, 1.462, 1.942, 2.531, 3.231",\
                 "0.3709, 0.4004, 0.4857, 0.6267, 0.835, 1.125, 1.506, 1.988, 2.574, 3.275",\
                 "0.4239, 0.4539, 0.5398, 0.6815, 0.8893, 1.178, 1.559, 2.04, 2.627, 3.327",\
                 "0.4738, 0.5046, 0.5908, 0.7328, 0.9405, 1.23, 1.61, 2.09, 2.677, 3.377",\
                 "0.5194, 0.5516, 0.6397, 0.7818, 0.9882, 1.277, 1.657, 2.137, 2.722, 3.422",\
                 "0.5564, 0.5906, 0.6819, 0.8255, 1.033, 1.32, 1.699, 2.178, 2.764, 3.463",\
                 "0.5838, 0.6198, 0.7149, 0.861, 1.07, 1.358, 1.737, 2.215, 2.8, 3.498",\
                 "0.5992, 0.6376, 0.737, 0.8872, 1.099, 1.388, 1.767, 2.245, 2.83, 3.528");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.07984, 0.1051, 0.1793, 0.3069, 0.5106, 0.811, 1.216, 1.732, 2.36, 3.105",\
                 "0.07996, 0.1052, 0.1794, 0.3065, 0.5103, 0.8119, 1.217, 1.732, 2.359, 3.11",\
                 "0.07972, 0.1051, 0.1794, 0.3062, 0.5103, 0.811, 1.216, 1.732, 2.36, 3.111",\
                 "0.0816, 0.1068, 0.1809, 0.308, 0.5107, 0.8116, 1.216, 1.732, 2.359, 3.107",\
                 "0.09498, 0.1196, 0.1917, 0.3142, 0.515, 0.812, 1.216, 1.73, 2.359, 3.11",\
                 "0.109, 0.135, 0.2066, 0.3282, 0.5228, 0.8164, 1.217, 1.732, 2.361, 3.109",\
                 "0.1242, 0.1526, 0.2248, 0.3442, 0.5324, 0.8214, 1.22, 1.732, 2.361, 3.11",\
                 "0.1412, 0.1726, 0.2474, 0.3662, 0.5478, 0.8286, 1.224, 1.734, 2.36, 3.107",\
                 "0.1602, 0.194, 0.2724, 0.3906, 0.5714, 0.8442, 1.231, 1.736, 2.361, 3.109",\
                 "0.1778, 0.2146, 0.2992, 0.4192, 0.598, 0.8676, 1.249, 1.745, 2.364, 3.109");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.09402, 0.1296, 0.2452, 0.458, 0.8011, 1.298, 1.956, 2.788, 3.796, 5.004",\
                 "0.0941, 0.1293, 0.245, 0.4575, 0.8011, 1.298, 1.955, 2.782, 3.803, 5.013",\
                 "0.09384, 0.1294, 0.2454, 0.4576, 0.801, 1.299, 1.955, 2.782, 3.803, 5.012",\
                 "0.09446, 0.1297, 0.2461, 0.4577, 0.8024, 1.298, 1.956, 2.788, 3.796, 5.002",\
                 "0.1005, 0.1352, 0.2509, 0.4624, 0.8024, 1.296, 1.956, 2.785, 3.8, 5.006",\
                 "0.1086, 0.1422, 0.2566, 0.4664, 0.8068, 1.301, 1.955, 2.781, 3.8, 5.002",\
                 "0.1196, 0.1528, 0.2636, 0.4714, 0.8094, 1.302, 1.957, 2.785, 3.797, 5.004",\
                 "0.1326, 0.166, 0.2754, 0.4812, 0.8136, 1.304, 1.959, 2.786, 3.795, 5.001",\
                 "0.1446, 0.1822, 0.289, 0.4944, 0.8256, 1.309, 1.963, 2.786, 3.797, 5.006",\
                 "0.16, 0.1978, 0.3048, 0.5088, 0.8394, 1.325, 1.97, 2.789, 3.798, 5.002");
        }
      }

      timing() {
        related_pin : "A2" ;
        timing_sense : positive_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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.2812, 0.3079, 0.3784, 0.4826, 0.6249, 0.8163, 1.066, 1.381, 1.765, 2.223",\
                 "0.29, 0.3168, 0.387, 0.4913, 0.6336, 0.825, 1.075, 1.39, 1.774, 2.232",\
                 "0.3242, 0.351, 0.4211, 0.5256, 0.6679, 0.8593, 1.109, 1.424, 1.808, 2.266",\
                 "0.3971, 0.4237, 0.4938, 0.5979, 0.7399, 0.9313, 1.181, 1.496, 1.88, 2.338",\
                 "0.5017, 0.53, 0.6023, 0.7076, 0.8497, 1.041, 1.29, 1.605, 1.989, 2.447",\
                 "0.6222, 0.6523, 0.7289, 0.8378, 0.9817, 1.173, 1.422, 1.736, 2.12, 2.578",\
                 "0.7613, 0.7939, 0.875, 0.9875, 1.133, 1.325, 1.574, 1.888, 2.272, 2.729",\
                 "0.9171, 0.9521, 1.039, 1.157, 1.306, 1.498, 1.747, 2.06, 2.444, 2.901",\
                 "1.09, 1.127, 1.22, 1.344, 1.498, 1.693, 1.941, 2.254, 2.637, 3.094",\
                 "1.28, 1.32, 1.419, 1.549, 1.709, 1.907, 2.159, 2.472, 2.854, 3.31");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.3196, 0.3492, 0.4348, 0.5765, 0.7852, 1.075, 1.457, 1.939, 2.524, 3.226",\
                 "0.3244, 0.3539, 0.4394, 0.5812, 0.79, 1.08, 1.462, 1.943, 2.53, 3.231",\
                 "0.3377, 0.3672, 0.4528, 0.5944, 0.8032, 1.093, 1.475, 1.956, 2.544, 3.245",\
                 "0.3665, 0.3959, 0.4815, 0.6227, 0.8311, 1.121, 1.502, 1.984, 2.57, 3.271",\
                 "0.4035, 0.4338, 0.5204, 0.6626, 0.8708, 1.16, 1.541, 2.022, 2.61, 3.309",\
                 "0.4408, 0.4721, 0.5599, 0.7021, 0.9102, 1.199, 1.58, 2.06, 2.647, 3.348",\
                 "0.4715, 0.5042, 0.5939, 0.7378, 0.9451, 1.233, 1.614, 2.093, 2.679, 3.38",\
                 "0.4911, 0.5258, 0.6193, 0.7656, 0.9741, 1.261, 1.64, 2.12, 2.705, 3.404",\
                 "0.4976, 0.5348, 0.6316, 0.781, 0.9927, 1.282, 1.66, 2.139, 2.724, 3.422",\
                 "0.4887, 0.5283, 0.6289, 0.7831, 0.9977, 1.29, 1.672, 2.149, 2.733, 3.431");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.08666, 0.1122, 0.1848, 0.3107, 0.5122, 0.8125, 1.217, 1.731, 2.359, 3.108",\
                 "0.08636, 0.112, 0.1848, 0.3104, 0.5121, 0.8121, 1.218, 1.732, 2.36, 3.11",\
                 "0.0863, 0.112, 0.1852, 0.3103, 0.5124, 0.8118, 1.218, 1.732, 2.361, 3.111",\
                 "0.08714, 0.113, 0.1855, 0.3106, 0.5124, 0.812, 1.217, 1.73, 2.358, 3.109",\
                 "0.09958, 0.1248, 0.195, 0.3162, 0.5148, 0.8126, 1.217, 1.731, 2.359, 3.107",\
                 "0.113, 0.14, 0.2104, 0.33, 0.5232, 0.8168, 1.218, 1.732, 2.361, 3.109",\
                 "0.1278, 0.1568, 0.2278, 0.3448, 0.5326, 0.8208, 1.22, 1.731, 2.361, 3.11",\
                 "0.145, 0.1762, 0.2496, 0.3642, 0.5456, 0.8274, 1.223, 1.733, 2.359, 3.109",\
                 "0.1618, 0.1964, 0.274, 0.388, 0.5662, 0.8398, 1.228, 1.736, 2.361, 3.108",\
                 "0.18, 0.2184, 0.2998, 0.4148, 0.5912, 0.8596, 1.241, 1.742, 2.363, 3.109");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.09378, 0.1294, 0.2455, 0.4576, 0.8012, 1.299, 1.956, 2.788, 3.796, 5.012",\
                 "0.09396, 0.1293, 0.2452, 0.4576, 0.8024, 1.298, 1.956, 2.788, 3.796, 5.005",\
                 "0.0939, 0.1294, 0.2451, 0.4573, 0.8011, 1.298, 1.957, 2.785, 3.801, 5.011",\
                 "0.09498, 0.1304, 0.246, 0.4578, 0.8012, 1.298, 1.956, 2.788, 3.796, 5.002",\
                 "0.1005, 0.1354, 0.2518, 0.462, 0.8024, 1.299, 1.954, 2.786, 3.803, 5.012",\
                 "0.108, 0.1424, 0.257, 0.4662, 0.8068, 1.3, 1.955, 2.786, 3.801, 5.003",\
                 "0.1178, 0.1532, 0.266, 0.4736, 0.8088, 1.301, 1.957, 2.782, 3.798, 5.01",\
                 "0.1304, 0.1658, 0.2778, 0.4848, 0.8162, 1.303, 1.957, 2.785, 3.794, 5.005",\
                 "0.1436, 0.1796, 0.2916, 0.4998, 0.8304, 1.312, 1.96, 2.786, 3.796, 5.005",\
                 "0.1582, 0.1962, 0.3074, 0.5158, 0.847, 1.33, 1.973, 2.789, 3.802, 4.999");
        }
      }

      timing() {
        related_pin : "A3" ;
        timing_sense : positive_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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.3054, 0.3331, 0.4054, 0.5112, 0.6545, 0.8461, 1.096, 1.411, 1.795, 2.253",\
                 "0.3133, 0.3412, 0.4131, 0.5192, 0.6624, 0.854, 1.104, 1.419, 1.803, 2.261",\
                 "0.348, 0.3759, 0.448, 0.5539, 0.697, 0.8888, 1.139, 1.454, 1.838, 2.296",\
                 "0.4225, 0.4497, 0.522, 0.6275, 0.7706, 0.9622, 1.212, 1.527, 1.911, 2.369",\
                 "0.5343, 0.5629, 0.6362, 0.7424, 0.8855, 1.077, 1.326, 1.641, 2.025, 2.483",\
                 "0.6651, 0.6963, 0.774, 0.8837, 1.028, 1.219, 1.469, 1.783, 2.167, 2.624",\
                 "0.8178, 0.851, 0.9333, 1.047, 1.193, 1.385, 1.634, 1.948, 2.331, 2.789",\
                 "0.9922, 1.028, 1.116, 1.234, 1.383, 1.575, 1.824, 2.137, 2.52, 2.977",\
                 "1.188, 1.226, 1.32, 1.444, 1.597, 1.791, 2.04, 2.353, 2.735, 3.192",\
                 "1.407, 1.448, 1.547, 1.677, 1.835, 2.033, 2.283, 2.595, 2.978, 3.434");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.3323, 0.3619, 0.4473, 0.5891, 0.7979, 1.088, 1.47, 1.951, 2.538, 3.239",\
                 "0.3373, 0.3669, 0.4525, 0.5942, 0.8029, 1.093, 1.474, 1.956, 2.542, 3.242",\
                 "0.3464, 0.3759, 0.4615, 0.6031, 0.8118, 1.102, 1.484, 1.965, 2.551, 3.252",\
                 "0.3601, 0.3896, 0.4751, 0.6165, 0.8251, 1.115, 1.496, 1.978, 2.564, 3.266",\
                 "0.3766, 0.407, 0.4938, 0.636, 0.8444, 1.134, 1.515, 1.996, 2.584, 3.285",\
                 "0.3925, 0.4239, 0.5124, 0.6554, 0.8637, 1.153, 1.534, 2.014, 2.601, 3.3",\
                 "0.4004, 0.4334, 0.5243, 0.6697, 0.8782, 1.166, 1.547, 2.026, 2.612, 3.313",\
                 "0.3948, 0.4299, 0.5234, 0.6724, 0.8834, 1.172, 1.551, 2.031, 2.616, 3.315",\
                 "0.372, 0.409, 0.5066, 0.6591, 0.8741, 1.166, 1.546, 2.024, 2.609, 3.307",\
                 "0.3305, 0.3691, 0.4714, 0.6283, 0.8473, 1.143, 1.527, 2.006, 2.591, 3.288");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.09208, 0.1184, 0.1912, 0.3155, 0.5154, 0.8135, 1.219, 1.733, 2.36, 3.111",\
                 "0.09226, 0.1185, 0.191, 0.3156, 0.5154, 0.8135, 1.219, 1.733, 2.36, 3.111",\
                 "0.09248, 0.1182, 0.1912, 0.3156, 0.5151, 0.8139, 1.218, 1.732, 2.359, 3.107",\
                 "0.09238, 0.1186, 0.1914, 0.3156, 0.5156, 0.8138, 1.218, 1.733, 2.358, 3.107",\
                 "0.1028, 0.1294, 0.1984, 0.32, 0.518, 0.814, 1.218, 1.733, 2.361, 3.108",\
                 "0.1172, 0.1442, 0.2152, 0.3332, 0.5242, 0.8178, 1.219, 1.731, 2.361, 3.109",\
                 "0.1308, 0.1604, 0.2316, 0.3472, 0.534, 0.822, 1.221, 1.733, 2.358, 3.107",\
                 "0.147, 0.1792, 0.2524, 0.3652, 0.5458, 0.828, 1.224, 1.733, 2.36, 3.109",\
                 "0.1646, 0.1996, 0.2762, 0.388, 0.5638, 0.8388, 1.229, 1.736, 2.362, 3.108",\
                 "0.1816, 0.2182, 0.3, 0.4124, 0.5868, 0.8548, 1.24, 1.74, 2.364, 3.11");
        }

        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.004479, 0.01669, 0.04001, 0.07634, 0.1273, 0.1944, 0.2789, 0.382, 0.505");
          values("0.09434, 0.1293, 0.2452, 0.4578, 0.8023, 1.298, 1.956, 2.788, 3.795, 5.004",\
                 "0.09414, 0.1293, 0.245, 0.4572, 0.8008, 1.296, 1.955, 2.787, 3.8, 5.01",\
                 "0.09436, 0.1293, 0.2451, 0.4576, 0.8024, 1.298, 1.956, 2.788, 3.795, 5.002",\
                 "0.09478, 0.1297, 0.2461, 0.4576, 0.8013, 1.297, 1.956, 2.786, 3.799, 5.012",\
                 "0.09986, 0.1348, 0.2509, 0.4612, 0.8024, 1.298, 1.953, 2.784, 3.803, 5.012",\
                 "0.1066, 0.1414, 0.2566, 0.4652, 0.805, 1.299, 1.952, 2.786, 3.798, 5.01",\
                 "0.116, 0.1518, 0.2664, 0.4742, 0.8082, 1.299, 1.955, 2.781, 3.798, 5.007",\
                 "0.1274, 0.164, 0.279, 0.489, 0.8192, 1.304, 1.956, 2.782, 3.796, 5.003",\
                 "0.1404, 0.178, 0.293, 0.5058, 0.8368, 1.317, 1.961, 2.783, 3.793, 5.004",\
                 "0.1536, 0.1944, 0.3076, 0.5224, 0.8562, 1.34, 1.981, 2.792, 3.796, 4.997");
        }
      }
    }
  }

