/*
 * 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__latq_2) {
    area : 48.294400 ;

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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.01142, 0.01146, 0.01144, 0.01143, 0.01144, 0.01145, 0.01144, \
                  0.01146, 0.01146, 0.01146");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.01039, -0.01038, -0.01039, -0.01044, -0.01047, -0.01049, -0.01052, \
                  -0.01054, -0.01055, -0.01055");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.424, -0.414, -0.381, -0.341, -0.295, -0.238, -0.181, -0.098, -0.01, 0.091",\
                 "-0.429, -0.416, -0.393, -0.346, -0.301, -0.245, -0.185, -0.109, -0.012, 0.083",\
                 "-0.45, -0.436, -0.412, -0.369, -0.322, -0.269, -0.201, -0.127, -0.034, 0.073",\
                 "-0.493, -0.489, -0.454, -0.416, -0.366, -0.316, -0.244, -0.163, -0.074, 0.03",\
                 "-0.586, -0.578, -0.545, -0.503, -0.452, -0.399, -0.329, -0.252, -0.155, -0.051",\
                 "-0.717, -0.707, -0.674, -0.634, -0.582, -0.524, -0.454, -0.379, -0.283, -0.173",\
                 "-0.883, -0.873, -0.846, -0.804, -0.75, -0.691, -0.627, -0.545, -0.453, -0.341",\
                 "-1.087, -1.074, -1.041, -0.997, -0.947, -0.896, -0.83, -0.747, -0.661, -0.558",\
                 "-1.305, -1.304, -1.271, -1.226, -1.18, -1.12, -1.059, -0.988, -0.896, -0.801",\
                 "-1.563, -1.552, -1.522, -1.479, -1.431, -1.377, -1.314, -1.241, -1.166, -1.069");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.115, -0.107, -0.066, -0.004, 0.075, 0.168, 0.27, 0.391, 0.514, 0.663",\
                 "-0.116, -0.106, -0.072, -0.005, 0.076, 0.162, 0.267, 0.386, 0.517, 0.659",\
                 "-0.127, -0.116, -0.083, -0.019, 0.061, 0.152, 0.258, 0.379, 0.506, 0.655",\
                 "-0.156, -0.141, -0.104, -0.042, 0.037, 0.135, 0.242, 0.363, 0.489, 0.637",\
                 "-0.181, -0.17, -0.132, -0.065, 0.017, 0.108, 0.218, 0.339, 0.472, 0.624",\
                 "-0.19, -0.185, -0.145, -0.079, -0.002, 0.095, 0.203, 0.327, 0.461, 0.614",\
                 "-0.19, -0.179, -0.138, -0.078, 0.005, 0.1, 0.211, 0.33, 0.471, 0.623",\
                 "-0.161, -0.153, -0.115, -0.045, 0.04, 0.128, 0.244, 0.367, 0.5, 0.654",\
                 "-0.108, -0.097, -0.064, 0.003, 0.091, 0.186, 0.301, 0.422, 0.563, 0.714",\
                 "-0.033, -0.025, 0.013, 0.087, 0.168, 0.268, 0.385, 0.509, 0.646, 0.806");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.51, 0.504, 0.477, 0.44, 0.426, 0.441, 0.509, 0.617, 0.753, 0.918",\
                 "0.519, 0.509, 0.487, 0.45, 0.432, 0.445, 0.514, 0.619, 0.761, 0.926",\
                 "0.537, 0.53, 0.5, 0.474, 0.45, 0.468, 0.529, 0.633, 0.758, 0.919",\
                 "0.579, 0.572, 0.542, 0.513, 0.49, 0.494, 0.541, 0.623, 0.729, 0.859",\
                 "0.667, 0.661, 0.632, 0.599, 0.573, 0.566, 0.595, 0.658, 0.74, 0.843",\
                 "0.799, 0.792, 0.765, 0.727, 0.698, 0.68, 0.69, 0.734, 0.801, 0.888",\
                 "0.964, 0.955, 0.926, 0.893, 0.858, 0.834, 0.828, 0.848, 0.891, 0.954",\
                 "1.169, 1.158, 1.135, 1.097, 1.058, 1.027, 1.012, 1.023, 1.06, 1.115",\
                 "1.405, 1.395, 1.363, 1.324, 1.285, 1.25, 1.235, 1.23, 1.259, 1.302",\
                 "1.659, 1.649, 1.621, 1.582, 1.541, 1.504, 1.481, 1.466, 1.475, 1.512");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.183, 0.178, 0.136, 0.069, -0.009, -0.1, -0.2, -0.309, -0.435, -0.567",\
                 "0.187, 0.177, 0.139, 0.075, -0.008, -0.1, -0.196, -0.31, -0.426, -0.562",\
                 "0.196, 0.191, 0.147, 0.083, 0.002, -0.087, -0.19, -0.301, -0.423, -0.563",\
                 "0.221, 0.21, 0.176, 0.109, 0.032, -0.061, -0.167, -0.279, -0.414, -0.555",\
                 "0.242, 0.232, 0.195, 0.134, 0.052, -0.047, -0.153, -0.265, -0.401, -0.544",\
                 "0.258, 0.247, 0.21, 0.144, 0.063, -0.034, -0.144, -0.264, -0.396, -0.543",\
                 "0.244, 0.235, 0.196, 0.135, 0.052, -0.041, -0.155, -0.275, -0.404, -0.553",\
                 "0.213, 0.206, 0.169, 0.104, 0.016, -0.081, -0.189, -0.31, -0.449, -0.595",\
                 "0.158, 0.148, 0.105, 0.04, -0.044, -0.141, -0.257, -0.379, -0.514, -0.67",\
                 "0.072, 0.064, 0.026, -0.046, -0.132, -0.229, -0.349, -0.47, -0.619, -0.775");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.113, 0.1127, 0.1164, 0.1292, 0.1527, 0.1881, 0.2361, 0.2974, \
                  0.3726, 0.4624");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.06349, 0.0632, 0.06592, 0.07624, 0.09653, 0.1274, 0.1697, 0.2239, \
                  0.2905, 0.3703");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1141, 0.1137, 0.1176, 0.1306, 0.1542, 0.1897, 0.2377, 0.2991, \
                  0.3743, 0.464");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.06232, 0.06195, 0.06467, 0.07486, 0.09494, 0.1259, 0.168, 0.222, \
                  0.2887, 0.3683");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.714 ;
      max_transition : 5.2 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.3512, 0.3375, 0.3069, 0.2812, 0.2657, 0.2556, 0.2487, 0.2438, 0.2403, 0.2378",\
                 "0.351, 0.3372, 0.3066, 0.2808, 0.2654, 0.2553, 0.2485, 0.2435, 0.24, 0.2375",\
                 "0.351, 0.3372, 0.3065, 0.2808, 0.2654, 0.2553, 0.2484, 0.2435, 0.24, 0.2375",\
                 "0.356, 0.3422, 0.3115, 0.2855, 0.2699, 0.2597, 0.2527, 0.2478, 0.2443, 0.2417",\
                 "0.3761, 0.3621, 0.3303, 0.3029, 0.286, 0.275, 0.2675, 0.2621, 0.2583, 0.2556",\
                 "0.4155, 0.4008, 0.3674, 0.3368, 0.3173, 0.3044, 0.2955, 0.2892, 0.2846, 0.2813",\
                 "0.4751, 0.4598, 0.4235, 0.3886, 0.3653, 0.3493, 0.3382, 0.3303, 0.3246, 0.3203",\
                 "0.5553, 0.5395, 0.5002, 0.4593, 0.431, 0.4109, 0.3968, 0.3865, 0.379, 0.3734",\
                 "0.6528, 0.636, 0.5935, 0.5469, 0.5128, 0.4882, 0.4703, 0.457, 0.4473, 0.4398",\
                 "0.7651, 0.7476, 0.7027, 0.6502, 0.609, 0.5797, 0.5575, 0.5414, 0.5286, 0.5195");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.2142, 0.2037, 0.1908, 0.1829, 0.1785, 0.1769, 0.1765, 0.1768, 0.1781, 0.1796",\
                 "0.2139, 0.2035, 0.1905, 0.1825, 0.1781, 0.1763, 0.1762, 0.1764, 0.1777, 0.1789",\
                 "0.2139, 0.2036, 0.1905, 0.1825, 0.1779, 0.1763, 0.1762, 0.1768, 0.1773, 0.1782",\
                 "0.2225, 0.212, 0.1982, 0.1892, 0.1841, 0.1816, 0.1812, 0.1814, 0.1835, 0.1843",\
                 "0.2462, 0.2345, 0.2186, 0.2077, 0.2001, 0.1964, 0.1953, 0.1948, 0.1953, 0.1962",\
                 "0.2851, 0.2721, 0.2521, 0.238, 0.2292, 0.2221, 0.2201, 0.2174, 0.2177, 0.217",\
                 "0.3392, 0.3246, 0.3006, 0.2821, 0.2695, 0.263, 0.2565, 0.2527, 0.2522, 0.2505",\
                 "0.4075, 0.3917, 0.3627, 0.3403, 0.323, 0.3117, 0.3058, 0.2999, 0.2969, 0.2942",\
                 "0.4902, 0.4729, 0.4388, 0.4124, 0.3908, 0.3743, 0.3648, 0.3604, 0.3548, 0.3508",\
                 "0.5863, 0.5677, 0.5289, 0.4979, 0.4717, 0.4518, 0.4372, 0.4298, 0.4254, 0.4202");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.3308, 0.3172, 0.287, 0.2615, 0.2464, 0.2365, 0.2298, 0.2249, 0.2215, 0.219",\
                 "0.3308, 0.3172, 0.2868, 0.2614, 0.2463, 0.2364, 0.2296, 0.2248, 0.2213, 0.2188",\
                 "0.3305, 0.3169, 0.2866, 0.2612, 0.2461, 0.2361, 0.2294, 0.2246, 0.2211, 0.2186",\
                 "0.3305, 0.3168, 0.2866, 0.2612, 0.2461, 0.2363, 0.2295, 0.2247, 0.2213, 0.2188",\
                 "0.3312, 0.3177, 0.2873, 0.262, 0.2468, 0.2369, 0.2302, 0.2253, 0.2219, 0.2194",\
                 "0.3328, 0.3192, 0.2889, 0.2633, 0.2481, 0.2383, 0.2314, 0.2266, 0.2231, 0.2206",\
                 "0.3364, 0.3228, 0.2921, 0.2662, 0.2507, 0.2406, 0.2336, 0.2287, 0.2252, 0.2226",\
                 "0.3414, 0.3274, 0.2964, 0.2701, 0.2542, 0.2439, 0.2368, 0.2318, 0.2282, 0.2256",\
                 "0.3472, 0.3331, 0.3017, 0.2747, 0.2584, 0.2477, 0.2404, 0.2353, 0.2317, 0.2289",\
                 "0.3537, 0.3397, 0.3078, 0.2802, 0.2635, 0.2526, 0.245, 0.2398, 0.236, 0.2331");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.2229, 0.2126, 0.1996, 0.1915, 0.1868, 0.1849, 0.1851, 0.1854, 0.1867, 0.1871",\
                 "0.2229, 0.2127, 0.1996, 0.1915, 0.1867, 0.1849, 0.1848, 0.1857, 0.1863, 0.1871",\
                 "0.2229, 0.2127, 0.1996, 0.1919, 0.1874, 0.1849, 0.1853, 0.1862, 0.1857, 0.1873",\
                 "0.2232, 0.2128, 0.1998, 0.1917, 0.1878, 0.186, 0.1848, 0.1854, 0.1874, 0.1875",\
                 "0.2237, 0.2134, 0.2004, 0.192, 0.1874, 0.1853, 0.1853, 0.1855, 0.1868, 0.1876",\
                 "0.2237, 0.2135, 0.2, 0.1928, 0.1882, 0.1858, 0.1857, 0.1862, 0.1868, 0.1884",\
                 "0.2239, 0.2136, 0.2005, 0.1918, 0.1881, 0.1875, 0.1864, 0.1866, 0.1868, 0.1889",\
                 "0.2242, 0.2139, 0.2009, 0.1929, 0.1873, 0.1868, 0.1882, 0.1884, 0.1886, 0.1885",\
                 "0.2243, 0.2141, 0.2011, 0.1932, 0.1888, 0.1849, 0.1867, 0.1905, 0.1914, 0.1895",\
                 "0.2246, 0.2143, 0.2012, 0.1932, 0.1885, 0.1859, 0.1847, 0.1875, 0.1917, 0.193");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.4501, 0.488, 0.581, 0.71, 0.8677, 1.059, 1.292, 1.579, 1.927, 2.341",\
                 "0.4564, 0.4946, 0.5877, 0.7166, 0.8743, 1.065, 1.299, 1.586, 1.933, 2.347",\
                 "0.4761, 0.514, 0.6072, 0.7362, 0.894, 1.085, 1.319, 1.605, 1.953, 2.367",\
                 "0.5234, 0.5614, 0.6542, 0.783, 0.9406, 1.131, 1.365, 1.652, 2, 2.413",\
                 "0.612, 0.65, 0.7433, 0.8719, 1.029, 1.22, 1.454, 1.741, 2.088, 2.502",\
                 "0.7385, 0.7778, 0.8731, 1.004, 1.163, 1.354, 1.588, 1.874, 2.221, 2.635",\
                 "0.9016, 0.9427, 1.041, 1.175, 1.336, 1.529, 1.764, 2.05, 2.397, 2.81",\
                 "1.094, 1.137, 1.241, 1.381, 1.547, 1.743, 1.979, 2.265, 2.612, 3.024",\
                 "1.312, 1.358, 1.468, 1.617, 1.79, 1.993, 2.232, 2.519, 2.865, 3.278",\
                 "1.558, 1.606, 1.722, 1.879, 2.062, 2.273, 2.519, 2.811, 3.158, 3.57");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.3053, 0.337, 0.4245, 0.5705, 0.7851, 1.084, 1.478, 1.975, 2.582, 3.308",\
                 "0.3083, 0.3403, 0.4276, 0.5734, 0.788, 1.087, 1.481, 1.978, 2.585, 3.31",\
                 "0.3185, 0.3505, 0.4376, 0.5835, 0.798, 1.097, 1.492, 1.988, 2.596, 3.321",\
                 "0.3427, 0.3746, 0.4617, 0.6071, 0.8212, 1.12, 1.514, 2.011, 2.618, 3.343",\
                 "0.3703, 0.4034, 0.492, 0.6379, 0.8513, 1.149, 1.543, 2.039, 2.646, 3.371",\
                 "0.3895, 0.4244, 0.5152, 0.6621, 0.875, 1.172, 1.564, 2.06, 2.666, 3.39",\
                 "0.392, 0.4292, 0.5235, 0.6731, 0.8867, 1.182, 1.573, 2.068, 2.674, 3.396",\
                 "0.3738, 0.4134, 0.5124, 0.6654, 0.8819, 1.178, 1.568, 2.062, 2.666, 3.388",\
                 "0.3325, 0.375, 0.4791, 0.6358, 0.8558, 1.155, 1.547, 2.039, 2.643, 3.364",\
                 "0.2663, 0.3114, 0.4215, 0.5824, 0.8063, 1.11, 1.505, 2.001, 2.603, 3.323");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.1312, 0.1693, 0.2601, 0.389, 0.5639, 0.8121, 1.156, 1.609, 2.177, 2.863",\
                 "0.1309, 0.1691, 0.2604, 0.3892, 0.5641, 0.8128, 1.158, 1.608, 2.177, 2.862",\
                 "0.131, 0.1689, 0.2605, 0.389, 0.5639, 0.8111, 1.155, 1.609, 2.176, 2.864",\
                 "0.1309, 0.1687, 0.2605, 0.3892, 0.5644, 0.813, 1.156, 1.609, 2.176, 2.864",\
                 "0.1348, 0.1726, 0.2638, 0.3916, 0.5658, 0.8122, 1.156, 1.609, 2.176, 2.861",\
                 "0.1426, 0.1816, 0.2752, 0.402, 0.5732, 0.8186, 1.16, 1.61, 2.177, 2.863",\
                 "0.157, 0.1972, 0.2916, 0.4184, 0.588, 0.8278, 1.165, 1.614, 2.178, 2.864",\
                 "0.1774, 0.22, 0.3182, 0.4458, 0.6104, 0.8452, 1.175, 1.618, 2.182, 2.864",\
                 "0.1982, 0.2438, 0.349, 0.4818, 0.6466, 0.8766, 1.197, 1.63, 2.185, 2.864",\
                 "0.2206, 0.269, 0.382, 0.5216, 0.6898, 0.9202, 1.233, 1.655, 2.197, 2.868");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.08586, 0.1215, 0.2412, 0.4636, 0.8202, 1.339, 2.023, 2.89, 3.948, 5.215",\
                 "0.08554, 0.1214, 0.2414, 0.4635, 0.82, 1.339, 2.023, 2.89, 3.948, 5.215",\
                 "0.08548, 0.1213, 0.2412, 0.4638, 0.8202, 1.339, 2.026, 2.889, 3.949, 5.216",\
                 "0.08586, 0.1219, 0.242, 0.4641, 0.8202, 1.339, 2.026, 2.891, 3.952, 5.205",\
                 "0.09306, 0.1297, 0.2478, 0.4676, 0.8212, 1.34, 2.027, 2.891, 3.949, 5.216",\
                 "0.1022, 0.1398, 0.2568, 0.4746, 0.8248, 1.339, 2.026, 2.891, 3.952, 5.211",\
                 "0.1146, 0.1538, 0.27, 0.4882, 0.8324, 1.342, 2.026, 2.892, 3.949, 5.211",\
                 "0.1296, 0.1702, 0.2862, 0.5048, 0.8468, 1.351, 2.027, 2.89, 3.95, 5.203",\
                 "0.1458, 0.1884, 0.3054, 0.5234, 0.8682, 1.371, 2.039, 2.895, 3.945, 5.208",\
                 "0.1636, 0.2084, 0.3268, 0.5432, 0.8904, 1.395, 2.066, 2.91, 3.952, 5.203");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.4876, 0.5255, 0.6186, 0.7475, 0.9053, 1.096, 1.33, 1.617, 1.965, 2.378",\
                 "0.4945, 0.5325, 0.6256, 0.7545, 0.9123, 1.103, 1.337, 1.624, 1.972, 2.385",\
                 "0.5192, 0.5572, 0.6501, 0.779, 0.9369, 1.128, 1.362, 1.649, 1.996, 2.41",\
                 "0.5475, 0.5857, 0.6788, 0.8077, 0.9655, 1.156, 1.39, 1.677, 2.025, 2.439",\
                 "0.5707, 0.6087, 0.7018, 0.8307, 0.9885, 1.179, 1.413, 1.7, 2.048, 2.462",\
                 "0.5863, 0.6245, 0.7175, 0.8465, 1.004, 1.195, 1.429, 1.716, 2.064, 2.478",\
                 "0.593, 0.6311, 0.7244, 0.8534, 1.011, 1.202, 1.436, 1.723, 2.071, 2.484",\
                 "0.5873, 0.6255, 0.719, 0.8482, 1.006, 1.197, 1.431, 1.718, 2.066, 2.479",\
                 "0.5669, 0.6054, 0.6993, 0.829, 0.9875, 1.179, 1.413, 1.7, 2.047, 2.461",\
                 "0.5323, 0.5707, 0.6651, 0.7952, 0.9539, 1.145, 1.38, 1.667, 2.014, 2.428");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.491, 0.5227, 0.6101, 0.7559, 0.9704, 1.269, 1.663, 2.161, 2.768, 3.491",\
                 "0.4981, 0.53, 0.6172, 0.7631, 0.9776, 1.276, 1.671, 2.167, 2.775, 3.5",\
                 "0.5248, 0.5567, 0.6439, 0.7897, 1.004, 1.303, 1.698, 2.195, 2.803, 3.525",\
                 "0.5563, 0.5881, 0.6755, 0.8213, 1.036, 1.335, 1.729, 2.226, 2.834, 3.558",\
                 "0.5814, 0.6133, 0.7005, 0.8463, 1.061, 1.36, 1.754, 2.251, 2.858, 3.581",\
                 "0.5973, 0.6291, 0.7165, 0.8623, 1.077, 1.376, 1.77, 2.267, 2.874, 3.599",\
                 "0.6015, 0.6333, 0.7206, 0.8664, 1.081, 1.38, 1.774, 2.271, 2.879, 3.601",\
                 "0.5916, 0.6233, 0.7107, 0.8564, 1.071, 1.37, 1.764, 2.261, 2.868, 3.592",\
                 "0.5671, 0.5988, 0.6861, 0.8319, 1.046, 1.346, 1.739, 2.236, 2.843, 3.566",\
                 "0.5264, 0.5581, 0.6453, 0.7912, 1.007, 1.305, 1.7, 2.196, 2.803, 3.526");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.1307, 0.1686, 0.2595, 0.3886, 0.5636, 0.8112, 1.158, 1.609, 2.177, 2.863",\
                 "0.1309, 0.1684, 0.2597, 0.3886, 0.564, 0.8126, 1.158, 1.609, 2.177, 2.864",\
                 "0.1308, 0.1684, 0.2593, 0.3886, 0.5634, 0.8108, 1.156, 1.609, 2.177, 2.864",\
                 "0.1304, 0.1685, 0.2596, 0.3886, 0.5642, 0.8118, 1.155, 1.61, 2.177, 2.864",\
                 "0.1308, 0.1684, 0.2596, 0.3886, 0.5644, 0.8114, 1.156, 1.608, 2.176, 2.864",\
                 "0.1306, 0.1686, 0.2596, 0.389, 0.5638, 0.8118, 1.157, 1.61, 2.177, 2.864",\
                 "0.1316, 0.1696, 0.2606, 0.3896, 0.5644, 0.8116, 1.155, 1.609, 2.178, 2.862",\
                 "0.1332, 0.1712, 0.2628, 0.3912, 0.566, 0.8126, 1.156, 1.608, 2.174, 2.859",\
                 "0.135, 0.173, 0.2644, 0.3932, 0.5676, 0.815, 1.157, 1.611, 2.177, 2.858",\
                 "0.1362, 0.1746, 0.2662, 0.3954, 0.5694, 0.8152, 1.157, 1.612, 2.176, 2.86");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.005921, 0.02319, 0.05618, 0.1076, 0.1797, 0.2746, 0.3941, 0.54, 0.714");
          values("0.08538, 0.1212, 0.2414, 0.4635, 0.8206, 1.338, 2.026, 2.894, 3.951, 5.208",\
                 "0.08536, 0.1209, 0.2413, 0.4635, 0.8205, 1.339, 2.026, 2.89, 3.949, 5.216",\
                 "0.08534, 0.121, 0.2414, 0.4635, 0.8205, 1.339, 2.027, 2.895, 3.954, 5.207",\
                 "0.08528, 0.1211, 0.2411, 0.4638, 0.8202, 1.339, 2.026, 2.891, 3.952, 5.216",\
                 "0.085, 0.1208, 0.2412, 0.4638, 0.8202, 1.338, 2.026, 2.891, 3.945, 5.206",\
                 "0.0854, 0.1212, 0.2412, 0.4636, 0.82, 1.339, 2.027, 2.89, 3.95, 5.205",\
                 "0.0852, 0.1212, 0.241, 0.4636, 0.8208, 1.337, 2.026, 2.892, 3.953, 5.204",\
                 "0.085, 0.1212, 0.2412, 0.463, 0.8202, 1.338, 2.022, 2.889, 3.948, 5.207",\
                 "0.085, 0.1206, 0.241, 0.4636, 0.821, 1.337, 2.023, 2.888, 3.943, 5.2",\
                 "0.0844, 0.1208, 0.241, 0.4634, 0.8222, 1.338, 2.023, 2.888, 3.942, 5.2");
        }
      }
    }
  }

