/*
 * 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 : "6.384906e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&E" ;
      value : "4.18374e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&!E" ;
      value : "7.52994e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&E" ;
      value : "4.051278e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "7.52994e-05" ;
    }

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.003092, 0.003097, 0.003097, 0.003098, 0.003103, 0.003096, 0.003103, \
                  0.003101, 0.003101, 0.0031");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.002763, -0.002765, -0.002785, -0.002807, -0.002818, -0.002838, \
                  -0.00284, -0.002845, -0.002845, -0.002848");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.882, -0.864, -0.808, -0.719, -0.624, -0.521, -0.405, -0.267, -0.12, 0.045",\
                 "-0.899, -0.883, -0.825, -0.736, -0.641, -0.535, -0.421, -0.291, -0.136, 0.035",\
                 "-0.944, -0.933, -0.873, -0.783, -0.69, -0.585, -0.466, -0.341, -0.187, -0.015",\
                 "-1.033, -1.015, -0.955, -0.87, -0.774, -0.67, -0.551, -0.423, -0.268, -0.093",\
                 "-1.163, -1.144, -1.089, -0.998, -0.907, -0.803, -0.686, -0.548, -0.395, -0.217",\
                 "-1.349, -1.339, -1.279, -1.192, -1.092, -0.989, -0.868, -0.73, -0.574, -0.393",\
                 "-1.584, -1.566, -1.515, -1.42, -1.326, -1.215, -1.091, -0.953, -0.793, -0.611",\
                 "-1.847, -1.828, -1.774, -1.681, -1.585, -1.471, -1.345, -1.204, -1.045, -0.856",\
                 "-2.146, -2.13, -2.074, -1.979, -1.878, -1.765, -1.636, -1.491, -1.33, -1.14",\
                 "-2.478, -2.459, -2.405, -2.315, -2.204, -2.093, -1.967, -1.821, -1.651, -1.463");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.177, -0.157, -0.092, 0.029, 0.174, 0.344, 0.515, 0.709, 0.924, 1.166",\
                 "-0.186, -0.164, -0.102, 0.02, 0.165, 0.33, 0.507, 0.696, 0.917, 1.155",\
                 "-0.218, -0.199, -0.137, -0.012, 0.135, 0.297, 0.476, 0.666, 0.884, 1.122",\
                 "-0.278, -0.259, -0.194, -0.07, 0.081, 0.237, 0.414, 0.61, 0.827, 1.075",\
                 "-0.359, -0.338, -0.279, -0.151, -0.005, 0.159, 0.343, 0.536, 0.759, 0.998",\
                 "-0.437, -0.416, -0.354, -0.231, -0.081, 0.087, 0.265, 0.468, 0.688, 0.935",\
                 "-0.494, -0.479, -0.418, -0.294, -0.141, 0.025, 0.206, 0.41, 0.638, 0.882",\
                 "-0.539, -0.524, -0.458, -0.338, -0.181, -0.017, 0.166, 0.374, 0.599, 0.843",\
                 "-0.555, -0.538, -0.474, -0.353, -0.201, -0.027, 0.153, 0.357, 0.582, 0.835",\
                 "-0.544, -0.528, -0.464, -0.344, -0.183, -0.02, 0.167, 0.367, 0.596, 0.844");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("1.116, 1.101, 1.05, 0.967, 0.896, 0.831, 0.78, 0.74, 0.731, 0.735",\
                 "1.13, 1.115, 1.063, 0.983, 0.91, 0.843, 0.794, 0.761, 0.739, 0.751",\
                 "1.186, 1.165, 1.111, 1.036, 0.962, 0.892, 0.839, 0.799, 0.776, 0.784",\
                 "1.266, 1.245, 1.189, 1.111, 1.042, 0.972, 0.913, 0.867, 0.841, 0.833",\
                 "1.392, 1.375, 1.318, 1.239, 1.164, 1.093, 1.035, 0.981, 0.947, 0.928",\
                 "1.575, 1.561, 1.502, 1.423, 1.347, 1.276, 1.208, 1.147, 1.093, 1.047",\
                 "1.802, 1.787, 1.733, 1.66, 1.574, 1.496, 1.42, 1.35, 1.283, 1.206",\
                 "2.074, 2.058, 2.003, 1.917, 1.834, 1.753, 1.671, 1.586, 1.496, 1.407",\
                 "2.369, 2.349, 2.299, 2.216, 2.127, 2.041, 1.946, 1.851, 1.751, 1.647",\
                 "2.702, 2.684, 2.627, 2.546, 2.46, 2.361, 2.255, 2.15, 2.037, 1.917");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.361, 0.342, 0.285, 0.15, -0.007, -0.174, -0.351, -0.549, -0.764, -1",\
                 "0.371, 0.352, 0.286, 0.161, 0.001, -0.166, -0.348, -0.543, -0.756, -0.996",\
                 "0.402, 0.379, 0.313, 0.187, 0.03, -0.136, -0.316, -0.508, -0.725, -0.969",\
                 "0.457, 0.439, 0.369, 0.241, 0.083, -0.083, -0.261, -0.456, -0.667, -0.906",\
                 "0.532, 0.517, 0.45, 0.323, 0.169, 0.004, -0.178, -0.376, -0.594, -0.828",\
                 "0.607, 0.59, 0.521, 0.398, 0.244, 0.079, -0.103, -0.3, -0.52, -0.765",\
                 "0.664, 0.645, 0.578, 0.462, 0.306, 0.141, -0.039, -0.239, -0.459, -0.712",\
                 "0.7, 0.677, 0.617, 0.492, 0.341, 0.172, -0.003, -0.21, -0.433, -0.679",\
                 "0.708, 0.692, 0.626, 0.506, 0.353, 0.186, 0.007, -0.201, -0.427, -0.671",\
                 "0.684, 0.67, 0.609, 0.486, 0.324, 0.158, -0.026, -0.229, -0.453, -0.699");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.03274, 0.03253, 0.03218, 0.03218, 0.03271, 0.03377, 0.03533, \
                  0.0375, 0.04035, 0.04392");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01887, 0.01873, 0.01845, 0.01834, 0.01867, 0.01954, 0.02096, \
                  0.02294, 0.02554, 0.0288");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.03306, 0.03283, 0.03247, 0.03251, 0.03305, 0.0341, 0.03571, \
                  0.03788, 0.04077, 0.04433");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01862, 0.01849, 0.0182, 0.01811, 0.01842, 0.01931, 0.02068, \
                  0.02265, 0.02524, 0.02846");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.4751 ;
      max_transition : 6.8 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.06311, 0.06171, 0.05981, 0.05897, 0.05864, 0.05853, 0.05852, 0.05853, 0.05854, 0.05855",\
                 "0.06302, 0.06162, 0.05974, 0.05889, 0.05854, 0.05844, 0.05843, 0.05845, 0.05845, 0.05845",\
                 "0.0629, 0.06149, 0.05963, 0.05877, 0.05843, 0.05833, 0.05832, 0.05833, 0.05834, 0.05835",\
                 "0.06277, 0.06136, 0.05949, 0.05862, 0.05829, 0.0582, 0.05818, 0.05819, 0.05821, 0.05822",\
                 "0.06275, 0.06135, 0.05944, 0.05856, 0.05823, 0.05811, 0.05812, 0.05813, 0.05815, 0.05816",\
                 "0.06361, 0.06216, 0.06011, 0.05908, 0.05866, 0.05851, 0.0585, 0.05851, 0.05853, 0.05855",\
                 "0.06565, 0.06405, 0.06169, 0.06042, 0.05981, 0.05956, 0.05947, 0.05947, 0.05945, 0.05945",\
                 "0.06823, 0.06651, 0.06377, 0.06227, 0.06149, 0.06112, 0.06097, 0.06087, 0.06084, 0.06083",\
                 "0.07142, 0.06952, 0.06654, 0.06467, 0.06369, 0.06319, 0.06294, 0.06284, 0.0628, 0.06277",\
                 "0.07524, 0.07326, 0.06978, 0.0677, 0.06651, 0.06587, 0.06556, 0.06535, 0.0653, 0.06523");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.04407, 0.04388, 0.04376, 0.04415, 0.04466, 0.04531, 0.04583, 0.04634, 0.04679, 0.04757",\
                 "0.04396, 0.04378, 0.0437, 0.04403, 0.04452, 0.04515, 0.04571, 0.04624, 0.04691, 0.04701",\
                 "0.04379, 0.04363, 0.04354, 0.04388, 0.04438, 0.04501, 0.04555, 0.04608, 0.04653, 0.04693",\
                 "0.04372, 0.04351, 0.04345, 0.04371, 0.04417, 0.04478, 0.04537, 0.04589, 0.04635, 0.04711",\
                 "0.04417, 0.04388, 0.04366, 0.04388, 0.04426, 0.04482, 0.04537, 0.04591, 0.04637, 0.04715",\
                 "0.0449, 0.04453, 0.04417, 0.04435, 0.04452, 0.04503, 0.04561, 0.04614, 0.04661, 0.0471",\
                 "0.0462, 0.04573, 0.04522, 0.04493, 0.04531, 0.04585, 0.04614, 0.04672, 0.04717, 0.04772",\
                 "0.04801, 0.0474, 0.04667, 0.04629, 0.04618, 0.0468, 0.04751, 0.04771, 0.04812, 0.0486",\
                 "0.05031, 0.0496, 0.04866, 0.04814, 0.04791, 0.04771, 0.04885, 0.04957, 0.04966, 0.05005",\
                 "0.05331, 0.05245, 0.05125, 0.05051, 0.05018, 0.05, 0.05048, 0.05139, 0.05206, 0.05291");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.0581, 0.0567, 0.05484, 0.054, 0.05369, 0.05359, 0.05357, 0.05359, 0.0536, 0.0536",\
                 "0.05813, 0.05673, 0.05487, 0.05403, 0.05372, 0.05363, 0.05361, 0.05362, 0.05362, 0.05362",\
                 "0.05806, 0.05663, 0.0548, 0.05395, 0.05366, 0.05355, 0.05353, 0.05354, 0.05354, 0.05354",\
                 "0.05796, 0.05653, 0.05468, 0.05386, 0.05354, 0.05343, 0.05342, 0.05343, 0.05342, 0.05343",\
                 "0.05779, 0.05641, 0.05455, 0.05371, 0.05342, 0.05332, 0.05331, 0.05331, 0.05331, 0.05332",\
                 "0.05778, 0.05637, 0.05452, 0.0537, 0.05339, 0.05328, 0.05328, 0.05327, 0.05328, 0.05328",\
                 "0.05771, 0.05631, 0.05446, 0.05363, 0.0533, 0.05321, 0.05317, 0.05318, 0.05319, 0.05319",\
                 "0.0577, 0.05629, 0.05443, 0.05359, 0.05325, 0.05318, 0.05317, 0.05317, 0.05316, 0.05317",\
                 "0.05768, 0.05627, 0.05439, 0.05352, 0.05324, 0.05314, 0.05312, 0.05312, 0.05313, 0.05314",\
                 "0.05778, 0.05637, 0.05445, 0.05358, 0.05327, 0.05317, 0.05315, 0.05316, 0.05317, 0.05319");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.04609, 0.0459, 0.04577, 0.04613, 0.04654, 0.04717, 0.0477, 0.04846, 0.04861, 0.04909",\
                 "0.04604, 0.04587, 0.04578, 0.04608, 0.04656, 0.04715, 0.04767, 0.04819, 0.04861, 0.04911",\
                 "0.04605, 0.0459, 0.04576, 0.04615, 0.04656, 0.04709, 0.04766, 0.04822, 0.04865, 0.0494",\
                 "0.04602, 0.04588, 0.04578, 0.04616, 0.04655, 0.04712, 0.04767, 0.04809, 0.04862, 0.0494",\
                 "0.04603, 0.04588, 0.04576, 0.04617, 0.04658, 0.04721, 0.04769, 0.04834, 0.04865, 0.04924",\
                 "0.04602, 0.04586, 0.04576, 0.04605, 0.04658, 0.04713, 0.0477, 0.0482, 0.04887, 0.0492",\
                 "0.046, 0.04581, 0.04569, 0.04603, 0.04668, 0.04713, 0.04768, 0.04822, 0.04867, 0.0492",\
                 "0.046, 0.04582, 0.04572, 0.04612, 0.04645, 0.04733, 0.04797, 0.04805, 0.04848, 0.04924",\
                 "0.04601, 0.04583, 0.04579, 0.046, 0.04651, 0.04694, 0.04793, 0.04872, 0.0488, 0.04922",\
                 "0.04609, 0.0459, 0.04576, 0.04624, 0.04651, 0.047, 0.04756, 0.04851, 0.04908, 0.04987");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.974, 1.031, 1.175, 1.364, 1.578, 1.817, 2.092, 2.414, 2.793, 3.237",\
                 "0.9893, 1.046, 1.191, 1.38, 1.593, 1.832, 2.108, 2.43, 2.808, 3.252",\
                 "1.039, 1.096, 1.241, 1.43, 1.643, 1.882, 2.158, 2.48, 2.858, 3.302",\
                 "1.124, 1.181, 1.326, 1.515, 1.727, 1.967, 2.242, 2.564, 2.943, 3.387",\
                 "1.256, 1.313, 1.457, 1.646, 1.859, 2.098, 2.374, 2.696, 3.074, 3.518",\
                 "1.443, 1.5, 1.645, 1.835, 2.048, 2.287, 2.563, 2.885, 3.263, 3.707",\
                 "1.669, 1.729, 1.879, 2.074, 2.29, 2.532, 2.808, 3.131, 3.509, 3.953",\
                 "1.926, 1.988, 2.144, 2.348, 2.572, 2.819, 3.1, 3.425, 3.804, 4.248",\
                 "2.218, 2.282, 2.444, 2.656, 2.888, 3.142, 3.428, 3.756, 4.137, 4.582",\
                 "2.547, 2.613, 2.781, 3.001, 3.241, 3.502, 3.792, 4.124, 4.508, 4.954");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.5336, 0.5843, 0.7203, 0.9299, 1.223, 1.62, 2.14, 2.794, 3.592, 4.541",\
                 "0.544, 0.5949, 0.731, 0.9404, 1.233, 1.631, 2.15, 2.804, 3.602, 4.553",\
                 "0.5742, 0.625, 0.7611, 0.9706, 1.263, 1.661, 2.181, 2.834, 3.632, 4.583",\
                 "0.6318, 0.6825, 0.8186, 1.028, 1.32, 1.718, 2.238, 2.892, 3.689, 4.639",\
                 "0.7118, 0.7635, 0.9014, 1.111, 1.404, 1.801, 2.321, 2.975, 3.773, 4.722",\
                 "0.7868, 0.8408, 0.9844, 1.199, 1.493, 1.89, 2.41, 3.063, 3.861, 4.812",\
                 "0.8476, 0.9042, 1.054, 1.273, 1.569, 1.967, 2.487, 3.141, 3.938, 4.888",\
                 "0.888, 0.9469, 1.103, 1.328, 1.626, 2.025, 2.545, 3.198, 3.996, 4.946",\
                 "0.9031, 0.9658, 1.129, 1.36, 1.662, 2.06, 2.581, 3.233, 4.031, 4.981",\
                 "0.893, 0.9583, 1.129, 1.367, 1.672, 2.072, 2.591, 3.245, 4.042, 4.992");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.2405, 0.2894, 0.4148, 0.5734, 0.767, 1.029, 1.383, 1.848, 2.437, 3.16",\
                 "0.2406, 0.2898, 0.4148, 0.5734, 0.7676, 1.029, 1.383, 1.849, 2.437, 3.16",\
                 "0.241, 0.2896, 0.4154, 0.5734, 0.7676, 1.029, 1.383, 1.848, 2.437, 3.16",\
                 "0.241, 0.2896, 0.415, 0.5732, 0.7674, 1.029, 1.384, 1.849, 2.437, 3.16",\
                 "0.2408, 0.2898, 0.4154, 0.5732, 0.7676, 1.029, 1.383, 1.849, 2.437, 3.16",\
                 "0.2448, 0.294, 0.4182, 0.576, 0.7694, 1.03, 1.385, 1.848, 2.437, 3.159",\
                 "0.262, 0.3122, 0.4388, 0.5944, 0.7812, 1.039, 1.39, 1.852, 2.438, 3.159",\
                 "0.2798, 0.332, 0.4634, 0.6246, 0.8112, 1.062, 1.406, 1.862, 2.444, 3.161",\
                 "0.2978, 0.3516, 0.488, 0.6548, 0.8412, 1.094, 1.432, 1.88, 2.455, 3.17",\
                 "0.3162, 0.3724, 0.5128, 0.6848, 0.872, 1.121, 1.456, 1.902, 2.47, 3.179");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.1592, 0.2132, 0.3701, 0.6558, 1.11, 1.778, 2.669, 3.793, 5.172, 6.818",\
                 "0.1595, 0.2126, 0.3701, 0.6558, 1.11, 1.778, 2.668, 3.798, 5.177, 6.815",\
                 "0.1595, 0.2131, 0.3701, 0.656, 1.11, 1.778, 2.67, 3.797, 5.177, 6.817",\
                 "0.1595, 0.2129, 0.37, 0.656, 1.111, 1.777, 2.668, 3.793, 5.173, 6.818",\
                 "0.1662, 0.2196, 0.3748, 0.6578, 1.111, 1.778, 2.668, 3.794, 5.172, 6.818",\
                 "0.177, 0.2328, 0.3898, 0.6684, 1.118, 1.778, 2.671, 3.798, 5.174, 6.816",\
                 "0.1898, 0.2476, 0.4066, 0.683, 1.123, 1.781, 2.669, 3.799, 5.172, 6.813",\
                 "0.2044, 0.2646, 0.4254, 0.6978, 1.132, 1.787, 2.671, 3.798, 5.171, 6.805",\
                 "0.2208, 0.2832, 0.446, 0.7156, 1.143, 1.79, 2.673, 3.794, 5.167, 6.804",\
                 "0.2394, 0.3034, 0.4704, 0.7348, 1.155, 1.796, 2.676, 3.796, 5.169, 6.807");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("1.031, 1.088, 1.233, 1.422, 1.635, 1.874, 2.15, 2.472, 2.85, 3.294",\
                 "1.045, 1.102, 1.246, 1.435, 1.648, 1.888, 2.163, 2.485, 2.864, 3.307",\
                 "1.092, 1.149, 1.293, 1.482, 1.695, 1.935, 2.21, 2.532, 2.911, 3.355",\
                 "1.162, 1.219, 1.364, 1.553, 1.766, 2.005, 2.281, 2.603, 2.981, 3.425",\
                 "1.223, 1.28, 1.425, 1.613, 1.826, 2.066, 2.341, 2.663, 3.042, 3.486",\
                 "1.267, 1.324, 1.469, 1.658, 1.871, 2.11, 2.386, 2.708, 3.086, 3.53",\
                 "1.293, 1.35, 1.494, 1.684, 1.897, 2.136, 2.412, 2.734, 3.112, 3.556",\
                 "1.301, 1.358, 1.502, 1.692, 1.905, 2.144, 2.42, 2.742, 3.12, 3.564",\
                 "1.289, 1.347, 1.491, 1.68, 1.893, 2.133, 2.408, 2.73, 3.109, 3.553",\
                 "1.258, 1.315, 1.459, 1.649, 1.862, 2.101, 2.377, 2.699, 3.078, 3.521");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.9047, 0.9556, 1.091, 1.301, 1.593, 1.991, 2.51, 3.165, 3.963, 4.913",\
                 "0.9184, 0.9691, 1.105, 1.314, 1.607, 2.004, 2.524, 3.179, 3.977, 4.925",\
                 "0.9671, 1.018, 1.154, 1.363, 1.656, 2.053, 2.573, 3.227, 4.024, 4.975",\
                 "1.041, 1.092, 1.228, 1.437, 1.73, 2.127, 2.647, 3.302, 4.099, 5.048",\
                 "1.105, 1.156, 1.292, 1.501, 1.794, 2.191, 2.711, 3.366, 4.164, 5.113",\
                 "1.15, 1.201, 1.338, 1.547, 1.839, 2.237, 2.757, 3.41, 4.208, 5.159",\
                 "1.177, 1.229, 1.365, 1.574, 1.867, 2.264, 2.784, 3.438, 4.235, 5.186",\
                 "1.186, 1.236, 1.373, 1.582, 1.875, 2.272, 2.792, 3.445, 4.243, 5.192",\
                 "1.173, 1.224, 1.36, 1.57, 1.862, 2.26, 2.779, 3.432, 4.23, 5.179",\
                 "1.138, 1.189, 1.325, 1.535, 1.828, 2.225, 2.745, 3.399, 4.196, 5.145");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.2408, 0.2898, 0.4148, 0.5726, 0.7674, 1.03, 1.382, 1.846, 2.437, 3.16",\
                 "0.2406, 0.2896, 0.415, 0.5728, 0.7676, 1.03, 1.383, 1.849, 2.437, 3.156",\
                 "0.2408, 0.2896, 0.415, 0.5728, 0.7676, 1.029, 1.382, 1.849, 2.437, 3.159",\
                 "0.2408, 0.2892, 0.415, 0.5728, 0.7676, 1.029, 1.383, 1.848, 2.435, 3.16",\
                 "0.2402, 0.2896, 0.4144, 0.5728, 0.7676, 1.029, 1.383, 1.845, 2.437, 3.158",\
                 "0.2406, 0.29, 0.4148, 0.573, 0.7668, 1.029, 1.385, 1.848, 2.437, 3.159",\
                 "0.2406, 0.29, 0.4152, 0.5734, 0.767, 1.029, 1.383, 1.849, 2.437, 3.16",\
                 "0.2412, 0.2904, 0.4148, 0.5732, 0.7672, 1.029, 1.383, 1.846, 2.434, 3.158",\
                 "0.241, 0.29, 0.4152, 0.5732, 0.7672, 1.03, 1.385, 1.847, 2.434, 3.155",\
                 "0.2412, 0.29, 0.4154, 0.5734, 0.7672, 1.03, 1.383, 1.847, 2.435, 3.156");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.004272, 0.01576, 0.03769, 0.07187, 0.1198, 0.1829, 0.2624, 0.3594, 0.4751");
          values("0.1594, 0.213, 0.3702, 0.6556, 1.111, 1.777, 2.666, 3.8, 5.175, 6.809",\
                 "0.1596, 0.2128, 0.3696, 0.6554, 1.11, 1.775, 2.668, 3.798, 5.169, 6.816",\
                 "0.1594, 0.213, 0.3696, 0.6556, 1.11, 1.778, 2.67, 3.797, 5.174, 6.819",\
                 "0.1596, 0.2128, 0.3698, 0.6554, 1.111, 1.776, 2.668, 3.796, 5.171, 6.818",\
                 "0.1596, 0.213, 0.3698, 0.6552, 1.11, 1.777, 2.666, 3.799, 5.171, 6.814",\
                 "0.16, 0.213, 0.37, 0.6558, 1.111, 1.777, 2.671, 3.8, 5.177, 6.81",\
                 "0.1598, 0.213, 0.3698, 0.6558, 1.109, 1.776, 2.666, 3.794, 5.177, 6.818",\
                 "0.1598, 0.2128, 0.3696, 0.6554, 1.11, 1.775, 2.665, 3.79, 5.168, 6.817",\
                 "0.1602, 0.2134, 0.3696, 0.6554, 1.11, 1.777, 2.666, 3.79, 5.173, 6.804",\
                 "0.1598, 0.2128, 0.3696, 0.6558, 1.11, 1.777, 2.669, 3.792, 5.163, 6.804");
        }
      }
    }
  }

