/*
 * 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_mcu9t5v0__latq_1) {
    area : 56.448000 ;

    latch(IQ1,IQN1) {
      enable : "E" ;
      data_in : "(!D)" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&!E" ;
      value : "0.0001792548" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&E" ;
      value : "0.0001266552" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&!E" ;
      value : "0.0001997424" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&E" ;
      value : "0.0001239336" ;
    }

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

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

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

    pin(D) {
      capacitance : 0.00399 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 4.4 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.01757, 0.01748, 0.01752, 0.01752, 0.01756, 0.01754, 0.01755, \
                  0.01756, 0.01755, 0.01757");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("-0.0161, -0.01604, -0.01606, -0.01613, -0.01619, -0.01621, -0.01625, \
                  -0.01629, -0.01631, -0.01631");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : hold_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("-0.292, -0.282, -0.262, -0.227, -0.182, -0.137, -0.079, -0.016, 0.066, 0.159",\
                 "-0.296, -0.288, -0.263, -0.232, -0.189, -0.142, -0.081, -0.018, 0.065, 0.153",\
                 "-0.31, -0.303, -0.282, -0.243, -0.208, -0.157, -0.1, -0.03, 0.053, 0.14",\
                 "-0.353, -0.349, -0.32, -0.285, -0.248, -0.194, -0.135, -0.063, 0.019, 0.113",\
                 "-0.43, -0.415, -0.394, -0.361, -0.318, -0.269, -0.209, -0.13, -0.049, 0.049",\
                 "-0.534, -0.524, -0.501, -0.46, -0.416, -0.37, -0.31, -0.236, -0.155, -0.054",\
                 "-0.666, -0.656, -0.636, -0.6, -0.558, -0.507, -0.447, -0.374, -0.288, -0.194",\
                 "-0.832, -0.82, -0.794, -0.762, -0.717, -0.669, -0.611, -0.542, -0.459, -0.367",\
                 "-1.007, -1.005, -0.977, -0.946, -0.903, -0.857, -0.798, -0.737, -0.65, -0.564",\
                 "-1.219, -1.209, -1.186, -1.149, -1.114, -1.065, -1.007, -0.948, -0.871, -0.781");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("-0.052, -0.043, -0.013, 0.039, 0.106, 0.185, 0.284, 0.379, 0.498, 0.62",\
                 "-0.057, -0.048, -0.015, 0.04, 0.108, 0.188, 0.278, 0.375, 0.492, 0.623",\
                 "-0.07, -0.056, -0.027, 0.027, 0.095, 0.175, 0.268, 0.372, 0.493, 0.615",\
                 "-0.087, -0.077, -0.049, 0.01, 0.081, 0.166, 0.257, 0.36, 0.482, 0.607",\
                 "-0.106, -0.099, -0.07, -0.008, 0.06, 0.146, 0.243, 0.352, 0.467, 0.6",\
                 "-0.113, -0.107, -0.075, -0.019, 0.056, 0.14, 0.239, 0.346, 0.464, 0.597",\
                 "-0.107, -0.098, -0.069, -0.011, 0.061, 0.151, 0.249, 0.353, 0.475, 0.612",\
                 "-0.08, -0.073, -0.037, 0.02, 0.09, 0.181, 0.276, 0.385, 0.51, 0.648",\
                 "-0.032, -0.022, 0.008, 0.065, 0.138, 0.226, 0.326, 0.444, 0.568, 0.701",\
                 "0.033, 0.04, 0.074, 0.135, 0.207, 0.297, 0.403, 0.516, 0.638, 0.781");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : setup_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.401, 0.389, 0.369, 0.336, 0.317, 0.314, 0.367, 0.437, 0.536, 0.659",\
                 "0.404, 0.398, 0.378, 0.34, 0.319, 0.323, 0.375, 0.443, 0.55, 0.67",\
                 "0.417, 0.409, 0.385, 0.353, 0.331, 0.329, 0.369, 0.431, 0.518, 0.622",\
                 "0.456, 0.451, 0.423, 0.397, 0.364, 0.357, 0.381, 0.429, 0.491, 0.576",\
                 "0.529, 0.517, 0.496, 0.464, 0.431, 0.423, 0.42, 0.446, 0.484, 0.538",\
                 "0.632, 0.624, 0.601, 0.566, 0.532, 0.509, 0.505, 0.512, 0.535, 0.575",\
                 "0.769, 0.76, 0.735, 0.699, 0.663, 0.636, 0.619, 0.611, 0.617, 0.641",\
                 "0.921, 0.917, 0.894, 0.862, 0.827, 0.793, 0.766, 0.752, 0.755, 0.766",\
                 "1.108, 1.099, 1.082, 1.048, 1.007, 0.972, 0.947, 0.934, 0.933, 0.947",\
                 "1.306, 1.302, 1.281, 1.249, 1.213, 1.18, 1.149, 1.122, 1.114, 1.115");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.12, 0.112, 0.079, 0.022, -0.052, -0.133, -0.219, -0.316, -0.422, -0.549",\
                 "0.12, 0.117, 0.086, 0.024, -0.043, -0.127, -0.211, -0.311, -0.424, -0.545",\
                 "0.136, 0.126, 0.092, 0.031, -0.039, -0.118, -0.208, -0.305, -0.414, -0.542",\
                 "0.148, 0.141, 0.108, 0.056, -0.02, -0.1, -0.197, -0.295, -0.408, -0.543",\
                 "0.169, 0.155, 0.126, 0.069, -0.008, -0.088, -0.187, -0.29, -0.412, -0.538",\
                 "0.165, 0.161, 0.125, 0.068, 0.001, -0.088, -0.189, -0.293, -0.415, -0.544",\
                 "0.154, 0.146, 0.119, 0.056, -0.017, -0.101, -0.197, -0.312, -0.432, -0.567",\
                 "0.118, 0.111, 0.077, 0.016, -0.051, -0.137, -0.245, -0.355, -0.475, -0.607",\
                 "0.066, 0.056, 0.026, -0.037, -0.109, -0.199, -0.301, -0.416, -0.536, -0.674",\
                 "-0.006, -0.013, -0.046, -0.111, -0.182, -0.277, -0.38, -0.492, -0.62, -0.76");
        }
      }
    }

    pin(E) {
      capacitance : 0.004942 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 4.4 ;
      min_pulse_width_high : 0.422 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.1528, 0.1521, 0.1563, 0.1722, 0.2013, 0.2454, 0.3053, 0.382, \
                  0.4761, 0.5886");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.08269, 0.08218, 0.08535, 0.09799, 0.1232, 0.1618, 0.215, 0.2831, \
                  0.3667, 0.4672");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.1545, 0.1538, 0.1582, 0.1744, 0.2037, 0.2479, 0.308, 0.3848, \
                  0.4788, 0.5912");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.08151, 0.08101, 0.08404, 0.09646, 0.1213, 0.1599, 0.2128, 0.2808, \
                  0.3644, 0.4646");
        }
      }

      timing() {
        related_pin : "E" ;
        sdf_cond : "ENABLE_NOT_D === 1'b1" ;
        timing_type : min_pulse_width ;
        when : "!D" ;

        rise_constraint(scalar) {
          values("0.422");
        }
      }

      timing() {
        related_pin : "E" ;
        sdf_cond : "ENABLE_D === 1'b1" ;
        timing_type : min_pulse_width ;
        when : "D" ;

        rise_constraint(scalar) {
          values("0.282");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.4511 ;
      max_transition : 4.4 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "D" ;
        when : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.2999, 0.294, 0.2803, 0.2701, 0.2638, 0.2596, 0.2568, 0.2548, 0.2533, 0.2523",\
                 "0.2993, 0.2933, 0.2797, 0.2695, 0.2631, 0.259, 0.2561, 0.2541, 0.2527, 0.2517",\
                 "0.299, 0.293, 0.2794, 0.2691, 0.2627, 0.2586, 0.2558, 0.2538, 0.2524, 0.2514",\
                 "0.3062, 0.3, 0.2862, 0.2757, 0.2691, 0.2648, 0.2619, 0.2598, 0.2584, 0.2573",\
                 "0.3296, 0.3229, 0.3082, 0.2965, 0.2889, 0.284, 0.2807, 0.2784, 0.2767, 0.2755",\
                 "0.3696, 0.3628, 0.3467, 0.3328, 0.3238, 0.3178, 0.3138, 0.3108, 0.3088, 0.3073",\
                 "0.4294, 0.422, 0.404, 0.3874, 0.3761, 0.3684, 0.363, 0.3591, 0.3564, 0.3544",\
                 "0.5079, 0.5002, 0.4798, 0.4599, 0.4457, 0.4357, 0.4287, 0.4236, 0.4198, 0.417",\
                 "0.6028, 0.594, 0.5719, 0.5482, 0.5311, 0.5185, 0.5094, 0.5028, 0.4979, 0.4942",\
                 "0.7132, 0.7043, 0.6803, 0.6531, 0.6325, 0.6171, 0.6058, 0.5973, 0.591, 0.5862");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.1961, 0.1932, 0.189, 0.1865, 0.1853, 0.1853, 0.186, 0.1868, 0.1883, 0.1891",\
                 "0.1953, 0.1924, 0.1881, 0.1858, 0.1846, 0.1842, 0.1846, 0.1858, 0.1872, 0.1881",\
                 "0.1955, 0.1926, 0.1883, 0.1858, 0.1845, 0.1843, 0.1852, 0.1859, 0.1869, 0.1884",\
                 "0.2048, 0.2018, 0.1967, 0.1934, 0.1915, 0.1907, 0.191, 0.1922, 0.193, 0.1942",\
                 "0.2267, 0.2228, 0.2166, 0.2121, 0.2087, 0.2074, 0.2075, 0.208, 0.2092, 0.21",\
                 "0.2636, 0.2587, 0.2508, 0.244, 0.2402, 0.2371, 0.2358, 0.2362, 0.2362, 0.2367",\
                 "0.3149, 0.3091, 0.299, 0.2899, 0.2836, 0.2804, 0.2781, 0.276, 0.2758, 0.2759",\
                 "0.3812, 0.3742, 0.362, 0.3507, 0.3414, 0.3359, 0.3338, 0.3311, 0.3284, 0.3277",\
                 "0.4625, 0.4541, 0.4392, 0.4258, 0.4143, 0.4054, 0.4009, 0.3997, 0.3968, 0.3947",\
                 "0.5588, 0.5499, 0.5321, 0.5162, 0.502, 0.4915, 0.4833, 0.4789, 0.4778, 0.4761");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.2674, 0.2615, 0.2485, 0.2387, 0.2327, 0.2287, 0.2261, 0.2241, 0.2228, 0.2218",\
                 "0.2673, 0.2614, 0.2484, 0.2386, 0.2326, 0.2286, 0.226, 0.224, 0.2227, 0.2217",\
                 "0.2668, 0.261, 0.2479, 0.2383, 0.2322, 0.2282, 0.2256, 0.2237, 0.2223, 0.2213",\
                 "0.267, 0.2611, 0.2481, 0.2384, 0.2324, 0.2285, 0.2258, 0.2239, 0.2226, 0.2216",\
                 "0.2678, 0.2619, 0.2489, 0.2392, 0.2332, 0.2293, 0.2266, 0.2247, 0.2233, 0.2224",\
                 "0.27, 0.2641, 0.251, 0.2413, 0.2352, 0.2313, 0.2286, 0.2266, 0.2252, 0.2242",\
                 "0.2738, 0.2677, 0.2544, 0.2444, 0.2382, 0.2342, 0.2314, 0.2294, 0.2281, 0.227",\
                 "0.2785, 0.2726, 0.2589, 0.2485, 0.2421, 0.2379, 0.2351, 0.2332, 0.2317, 0.2307",\
                 "0.2843, 0.2782, 0.2642, 0.2536, 0.247, 0.2426, 0.2397, 0.2376, 0.2363, 0.2352",\
                 "0.2908, 0.2846, 0.2704, 0.2592, 0.2523, 0.2478, 0.2449, 0.2427, 0.2412, 0.2401");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.2088, 0.206, 0.2016, 0.1991, 0.1975, 0.1975, 0.1985, 0.1995, 0.2001, 0.2009",\
                 "0.2087, 0.2059, 0.2014, 0.1989, 0.1977, 0.1975, 0.1985, 0.1994, 0.1998, 0.201",\
                 "0.2089, 0.206, 0.2016, 0.199, 0.1978, 0.1974, 0.1983, 0.1992, 0.2, 0.2019",\
                 "0.2093, 0.2064, 0.202, 0.1994, 0.1981, 0.1978, 0.1983, 0.1996, 0.2006, 0.201",\
                 "0.2097, 0.2069, 0.2026, 0.1999, 0.1986, 0.1983, 0.1991, 0.1998, 0.2009, 0.2017",\
                 "0.2102, 0.2073, 0.2029, 0.2005, 0.1997, 0.1985, 0.1995, 0.2005, 0.202, 0.2028",\
                 "0.2106, 0.2079, 0.2032, 0.2, 0.1991, 0.2004, 0.2001, 0.2013, 0.2016, 0.2027",\
                 "0.2106, 0.2078, 0.2034, 0.2002, 0.1994, 0.1994, 0.2019, 0.2018, 0.2013, 0.2025",\
                 "0.211, 0.2082, 0.2039, 0.2014, 0.1999, 0.1991, 0.201, 0.2031, 0.2037, 0.2042",\
                 "0.2114, 0.2087, 0.2043, 0.2018, 0.1997, 0.1996, 0.1997, 0.2019, 0.2061, 0.2066");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.3393, 0.3647, 0.4328, 0.531, 0.6532, 0.8042, 0.9927, 1.226, 1.51, 1.849",\
                 "0.3444, 0.3698, 0.438, 0.5362, 0.6583, 0.8094, 0.9979, 1.231, 1.515, 1.854",\
                 "0.3606, 0.386, 0.4541, 0.5523, 0.6745, 0.8255, 1.014, 1.247, 1.531, 1.87",\
                 "0.4002, 0.4257, 0.4934, 0.5914, 0.7135, 0.8645, 1.053, 1.286, 1.57, 1.909",\
                 "0.4714, 0.4973, 0.5662, 0.6648, 0.787, 0.938, 1.126, 1.36, 1.643, 1.982",\
                 "0.5728, 0.5993, 0.67, 0.7708, 0.8948, 1.047, 1.235, 1.468, 1.752, 2.09",\
                 "0.7012, 0.7294, 0.803, 0.9069, 1.033, 1.186, 1.376, 1.609, 1.892, 2.23",\
                 "0.8516, 0.8816, 0.9599, 1.069, 1.2, 1.356, 1.546, 1.779, 2.063, 2.4",\
                 "1.023, 1.054, 1.138, 1.254, 1.391, 1.553, 1.746, 1.98, 2.263, 2.6",\
                 "1.215, 1.249, 1.337, 1.46, 1.605, 1.773, 1.973, 2.211, 2.495, 2.832");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.2344, 0.2567, 0.3255, 0.4454, 0.6257, 0.8779, 1.211, 1.629, 2.14, 2.751",\
                 "0.237, 0.2593, 0.3282, 0.4482, 0.6285, 0.8809, 1.214, 1.633, 2.144, 2.753",\
                 "0.2464, 0.2687, 0.3375, 0.4573, 0.6374, 0.8899, 1.222, 1.641, 2.152, 2.762",\
                 "0.2668, 0.2893, 0.3579, 0.4772, 0.657, 0.909, 1.242, 1.66, 2.172, 2.781",\
                 "0.2876, 0.3108, 0.3804, 0.5, 0.6791, 0.9306, 1.262, 1.681, 2.192, 2.802",\
                 "0.3004, 0.3246, 0.3957, 0.5161, 0.6946, 0.9451, 1.276, 1.694, 2.204, 2.813",\
                 "0.2985, 0.3243, 0.3978, 0.5204, 0.6994, 0.9489, 1.279, 1.696, 2.206, 2.815",\
                 "0.2801, 0.3076, 0.384, 0.5093, 0.6904, 0.9409, 1.27, 1.686, 2.196, 2.804",\
                 "0.2425, 0.2721, 0.3521, 0.4804, 0.6643, 0.9175, 1.248, 1.664, 2.172, 2.78",\
                 "0.1853, 0.2171, 0.3013, 0.4326, 0.6191, 0.8752, 1.21, 1.628, 2.136, 2.743");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.107, 0.132, 0.1997, 0.3007, 0.4416, 0.6472, 0.9356, 1.31, 1.776, 2.34",\
                 "0.1071, 0.1321, 0.1997, 0.3006, 0.4414, 0.6489, 0.9351, 1.31, 1.777, 2.34",\
                 "0.1073, 0.132, 0.1997, 0.3007, 0.4415, 0.6472, 0.9361, 1.31, 1.777, 2.34",\
                 "0.1069, 0.132, 0.1999, 0.3011, 0.4424, 0.6486, 0.9352, 1.31, 1.777, 2.34",\
                 "0.1127, 0.1377, 0.2049, 0.3047, 0.444, 0.6484, 0.9352, 1.312, 1.778, 2.34",\
                 "0.1202, 0.1456, 0.2144, 0.3144, 0.4516, 0.6538, 0.938, 1.311, 1.777, 2.339",\
                 "0.1326, 0.16, 0.23, 0.3284, 0.4632, 0.6612, 0.9426, 1.314, 1.78, 2.34",\
                 "0.1492, 0.1782, 0.2516, 0.3516, 0.4824, 0.6756, 0.95, 1.318, 1.781, 2.34",\
                 "0.1662, 0.197, 0.2758, 0.3796, 0.512, 0.7002, 0.9674, 1.326, 1.783, 2.339",\
                 "0.1834, 0.2168, 0.3012, 0.4098, 0.5448, 0.7356, 0.9974, 1.346, 1.795, 2.343");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.07796, 0.1065, 0.2076, 0.397, 0.7016, 1.139, 1.718, 2.444, 3.334, 4.388",\
                 "0.07796, 0.1067, 0.208, 0.3973, 0.7019, 1.139, 1.716, 2.448, 3.33, 4.39",\
                 "0.07754, 0.1066, 0.2077, 0.3965, 0.702, 1.139, 1.717, 2.445, 3.33, 4.393",\
                 "0.07936, 0.1081, 0.2088, 0.3978, 0.7022, 1.139, 1.716, 2.448, 3.331, 4.391",\
                 "0.08592, 0.1136, 0.2137, 0.4001, 0.7023, 1.139, 1.717, 2.444, 3.334, 4.388",\
                 "0.09294, 0.1215, 0.2208, 0.4058, 0.7046, 1.14, 1.717, 2.445, 3.331, 4.387",\
                 "0.1036, 0.1324, 0.2314, 0.4154, 0.7098, 1.141, 1.717, 2.443, 3.334, 4.388",\
                 "0.1156, 0.145, 0.2428, 0.4286, 0.723, 1.15, 1.719, 2.444, 3.334, 4.388",\
                 "0.1296, 0.1598, 0.2568, 0.4426, 0.737, 1.165, 1.729, 2.448, 3.33, 4.391",\
                 "0.1434, 0.1756, 0.272, 0.4576, 0.7546, 1.184, 1.751, 2.461, 3.336, 4.387");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : rising_edge ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.3633, 0.3889, 0.4571, 0.5553, 0.6775, 0.8286, 1.017, 1.251, 1.535, 1.873",\
                 "0.3692, 0.3949, 0.463, 0.5612, 0.6834, 0.8345, 1.023, 1.257, 1.541, 1.879",\
                 "0.3901, 0.4157, 0.4839, 0.582, 0.7042, 0.8553, 1.044, 1.277, 1.561, 1.9",\
                 "0.4148, 0.4403, 0.5085, 0.6066, 0.7288, 0.8799, 1.068, 1.302, 1.586, 1.925",\
                 "0.4344, 0.4601, 0.5282, 0.6264, 0.7487, 0.8997, 1.088, 1.322, 1.606, 1.944",\
                 "0.4481, 0.4736, 0.5418, 0.6399, 0.7622, 0.9134, 1.102, 1.335, 1.619, 1.958",\
                 "0.4527, 0.4783, 0.5466, 0.6449, 0.7673, 0.9184, 1.107, 1.34, 1.624, 1.963",\
                 "0.4464, 0.472, 0.5406, 0.6391, 0.7617, 0.9129, 1.102, 1.335, 1.619, 1.958",\
                 "0.4277, 0.4538, 0.5226, 0.6214, 0.7441, 0.8955, 1.084, 1.318, 1.602, 1.94",\
                 "0.3964, 0.4222, 0.4913, 0.5904, 0.7134, 0.865, 1.054, 1.287, 1.571, 1.91");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.3885, 0.4108, 0.4795, 0.5993, 0.7794, 1.032, 1.364, 1.783, 2.294, 2.904",\
                 "0.3946, 0.4168, 0.4855, 0.6053, 0.7855, 1.038, 1.37, 1.789, 2.3, 2.91",\
                 "0.4172, 0.4393, 0.5081, 0.6279, 0.8081, 1.061, 1.393, 1.812, 2.323, 2.932",\
                 "0.4435, 0.4657, 0.5345, 0.6542, 0.8344, 1.087, 1.419, 1.838, 2.349, 2.959",\
                 "0.4641, 0.4864, 0.5551, 0.6749, 0.8549, 1.107, 1.439, 1.858, 2.369, 2.98",\
                 "0.4768, 0.4993, 0.568, 0.6877, 0.8678, 1.12, 1.452, 1.871, 2.382, 2.993",\
                 "0.4794, 0.5017, 0.5703, 0.69, 0.8701, 1.122, 1.454, 1.873, 2.385, 2.993",\
                 "0.4692, 0.4915, 0.5603, 0.6801, 0.8602, 1.112, 1.445, 1.863, 2.374, 2.984",\
                 "0.4467, 0.4691, 0.5379, 0.6576, 0.8378, 1.09, 1.422, 1.841, 2.352, 2.961",\
                 "0.4098, 0.4322, 0.501, 0.6207, 0.8009, 1.053, 1.385, 1.804, 2.315, 2.924");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.1062, 0.1308, 0.1984, 0.2999, 0.4412, 0.647, 0.935, 1.311, 1.778, 2.34",\
                 "0.106, 0.1309, 0.1983, 0.2998, 0.4416, 0.647, 0.9359, 1.31, 1.777, 2.34",\
                 "0.1059, 0.1308, 0.1984, 0.2999, 0.4414, 0.647, 0.9348, 1.31, 1.778, 2.339",\
                 "0.1058, 0.1305, 0.1982, 0.2998, 0.4409, 0.6482, 0.9356, 1.31, 1.777, 2.34",\
                 "0.1059, 0.1308, 0.1984, 0.3001, 0.4418, 0.647, 0.9356, 1.311, 1.778, 2.34",\
                 "0.1062, 0.131, 0.1984, 0.3, 0.441, 0.6472, 0.9356, 1.312, 1.777, 2.34",\
                 "0.107, 0.132, 0.1994, 0.3008, 0.4418, 0.6474, 0.934, 1.309, 1.776, 2.34",\
                 "0.1082, 0.133, 0.2008, 0.302, 0.443, 0.6484, 0.9348, 1.31, 1.775, 2.335",\
                 "0.1094, 0.1342, 0.2022, 0.3032, 0.4438, 0.6486, 0.9366, 1.311, 1.776, 2.336",\
                 "0.1108, 0.1358, 0.2038, 0.3046, 0.445, 0.65, 0.9368, 1.311, 1.777, 2.336");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.004106, 0.01501, 0.03583, 0.06827, 0.1138, 0.1737, 0.2491, 0.3413, 0.4511");
          values("0.07734, 0.1065, 0.2077, 0.3974, 0.7015, 1.138, 1.719, 2.445, 3.335, 4.389",\
                 "0.0775, 0.1066, 0.208, 0.3968, 0.7018, 1.138, 1.719, 2.446, 3.336, 4.39",\
                 "0.07736, 0.1068, 0.2078, 0.3973, 0.7016, 1.139, 1.717, 2.444, 3.332, 4.389",\
                 "0.07774, 0.1066, 0.2077, 0.3968, 0.7017, 1.138, 1.718, 2.444, 3.332, 4.396",\
                 "0.07758, 0.1065, 0.2075, 0.397, 0.7018, 1.139, 1.716, 2.444, 3.33, 4.396",\
                 "0.0776, 0.1066, 0.2076, 0.397, 0.7016, 1.14, 1.716, 2.443, 3.334, 4.388",\
                 "0.0774, 0.1064, 0.2078, 0.3972, 0.7028, 1.138, 1.715, 2.446, 3.33, 4.387",\
                 "0.0776, 0.1066, 0.2078, 0.397, 0.7024, 1.138, 1.715, 2.442, 3.329, 4.391",\
                 "0.0772, 0.1066, 0.2078, 0.3974, 0.7016, 1.14, 1.715, 2.444, 3.328, 4.393",\
                 "0.0774, 0.1066, 0.2074, 0.397, 0.7022, 1.138, 1.715, 2.441, 3.329, 4.384");
        }
      }
    }
  }

