/*
 * 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_1) {
    area : 43.904000 ;

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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.009014, 0.00902, 0.009007, 0.009009, 0.009011, 0.009025, 0.00902, \
                 0.009017, 0.009022, 0.009019");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.008155, -0.008146, -0.008155, -0.008196, -0.008222, -0.008264, \
                 -0.008281, -0.008284, -0.008286, -0.008295");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.59, -0.573, -0.519, -0.446, -0.369, -0.28, -0.17, -0.041, 0.115, 0.288",\
                 "-0.603, -0.588, -0.533, -0.457, -0.378, -0.289, -0.176, -0.05, 0.105, 0.277",\
                 "-0.64, -0.627, -0.566, -0.5, -0.418, -0.329, -0.214, -0.087, 0.065, 0.246",\
                 "-0.726, -0.71, -0.653, -0.581, -0.501, -0.409, -0.294, -0.158, -0.003, 0.182",\
                 "-0.873, -0.857, -0.799, -0.728, -0.646, -0.548, -0.43, -0.291, -0.135, 0.052",\
                 "-1.073, -1.061, -1.004, -0.929, -0.845, -0.745, -0.631, -0.491, -0.332, -0.142",\
                 "-1.33, -1.316, -1.262, -1.184, -1.102, -1.005, -0.888, -0.745, -0.588, -0.402",\
                 "-1.647, -1.634, -1.572, -1.498, -1.419, -1.319, -1.197, -1.07, -0.908, -0.725",\
                 "-2.009, -1.992, -1.934, -1.858, -1.777, -1.686, -1.575, -1.442, -1.284, -1.109",\
                 "-2.412, -2.394, -2.337, -2.268, -2.184, -2.095, -1.988, -1.86, -1.71, -1.54");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.103, -0.088, -0.02, 0.09, 0.226, 0.376, 0.555, 0.75, 0.966, 1.215",\
                 "-0.111, -0.096, -0.03, 0.083, 0.216, 0.371, 0.544, 0.744, 0.964, 1.205",\
                 "-0.135, -0.118, -0.047, 0.063, 0.2, 0.347, 0.529, 0.727, 0.95, 1.19",\
                 "-0.18, -0.16, -0.097, 0.016, 0.153, 0.315, 0.495, 0.697, 0.915, 1.167",\
                 "-0.218, -0.201, -0.13, -0.02, 0.122, 0.285, 0.462, 0.672, 0.897, 1.148",\
                 "-0.232, -0.218, -0.149, -0.037, 0.11, 0.27, 0.453, 0.663, 0.889, 1.144",\
                 "-0.217, -0.202, -0.13, -0.016, 0.122, 0.288, 0.476, 0.69, 0.913, 1.175",\
                 "-0.166, -0.147, -0.081, 0.039, 0.181, 0.348, 0.54, 0.744, 0.982, 1.238",\
                 "-0.075, -0.057, 0.01, 0.134, 0.277, 0.441, 0.635, 0.847, 1.089, 1.35",\
                 "0.056, 0.069, 0.14, 0.261, 0.407, 0.576, 0.774, 0.997, 1.235, 1.5");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.859, 0.846, 0.788, 0.719, 0.66, 0.637, 0.693, 0.802, 0.968, 1.165",\
                 "0.876, 0.858, 0.806, 0.737, 0.671, 0.649, 0.698, 0.814, 0.978, 1.175",\
                 "0.909, 0.894, 0.842, 0.767, 0.705, 0.681, 0.731, 0.827, 0.969, 1.149",\
                 "0.989, 0.97, 0.915, 0.843, 0.782, 0.753, 0.783, 0.854, 0.964, 1.111",\
                 "1.127, 1.112, 1.061, 0.987, 0.922, 0.881, 0.876, 0.921, 0.996, 1.092",\
                 "1.332, 1.314, 1.26, 1.193, 1.117, 1.063, 1.036, 1.047, 1.086, 1.151",\
                 "1.583, 1.564, 1.516, 1.444, 1.371, 1.302, 1.26, 1.243, 1.249, 1.287",\
                 "1.889, 1.873, 1.821, 1.752, 1.679, 1.606, 1.549, 1.511, 1.495, 1.507",\
                 "2.24, 2.224, 2.182, 2.12, 2.051, 1.968, 1.9, 1.853, 1.82, 1.821",\
                 "2.636, 2.62, 2.579, 2.532, 2.459, 2.386, 2.309, 2.251, 2.215, 2.195");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.235, 0.217, 0.144, 0.029, -0.107, -0.261, -0.428, -0.62, -0.823, -1.059",\
                 "0.24, 0.222, 0.154, 0.033, -0.101, -0.259, -0.424, -0.613, -0.82, -1.053",\
                 "0.259, 0.242, 0.173, 0.054, -0.077, -0.232, -0.402, -0.596, -0.801, -1.039",\
                 "0.308, 0.286, 0.219, 0.1, -0.036, -0.198, -0.365, -0.569, -0.783, -1.026",\
                 "0.338, 0.317, 0.252, 0.132, -0.006, -0.17, -0.353, -0.553, -0.774, -1.023",\
                 "0.336, 0.318, 0.251, 0.132, -0.005, -0.173, -0.359, -0.562, -0.785, -1.034",\
                 "0.302, 0.287, 0.221, 0.096, -0.041, -0.207, -0.396, -0.602, -0.83, -1.082",\
                 "0.231, 0.213, 0.143, 0.029, -0.113, -0.28, -0.471, -0.687, -0.915, -1.173",\
                 "0.13, 0.113, 0.04, -0.082, -0.22, -0.395, -0.588, -0.807, -1.043, -1.305",\
                 "-0.014, -0.032, -0.102, -0.221, -0.371, -0.543, -0.745, -0.964, -1.208, -1.473");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.09553, 0.09493, 0.09615, 0.1029, 0.1158, 0.136, 0.1637, 0.1997, \
                 0.244, 0.2973");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.05464, 0.05419, 0.05501, 0.06021, 0.07131, 0.08893, 0.1136, \
                 0.1454, 0.1849, 0.2323");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.09756, 0.09697, 0.09827, 0.1051, 0.1182, 0.1384, 0.1663, 0.2022, \
                 0.2466, 0.2999");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.05367, 0.05322, 0.05404, 0.05919, 0.07015, 0.08767, 0.1122, \
                 0.1439, 0.1834, 0.2309");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.3598 ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.1672, 0.164, 0.1578, 0.1534, 0.1508, 0.1491, 0.148, 0.1472, 0.1467, 0.1463",\
                 "0.167, 0.1637, 0.1574, 0.1531, 0.1505, 0.1487, 0.1476, 0.1468, 0.1463, 0.1459",\
                 "0.1667, 0.1634, 0.1571, 0.1528, 0.1501, 0.1484, 0.1473, 0.1466, 0.146, 0.1456",\
                 "0.1689, 0.1657, 0.1593, 0.1548, 0.1522, 0.1505, 0.1493, 0.1486, 0.1481, 0.1476",\
                 "0.1792, 0.1758, 0.1688, 0.1638, 0.1606, 0.1587, 0.1574, 0.1565, 0.1559, 0.1555",\
                 "0.1969, 0.1931, 0.1853, 0.1795, 0.1758, 0.1733, 0.1718, 0.1707, 0.1699, 0.1694",\
                 "0.2229, 0.2188, 0.2098, 0.2028, 0.1982, 0.1952, 0.1931, 0.1918, 0.1908, 0.1901",\
                 "0.2578, 0.2533, 0.2432, 0.2346, 0.2288, 0.2248, 0.2222, 0.2203, 0.219, 0.218",\
                 "0.3007, 0.296, 0.2845, 0.2741, 0.267, 0.262, 0.2586, 0.2561, 0.2543, 0.253",\
                 "0.3515, 0.3463, 0.3336, 0.3215, 0.3127, 0.3065, 0.3022, 0.299, 0.2968, 0.2952");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.1129, 0.1118, 0.11, 0.1092, 0.1091, 0.1095, 0.1101, 0.1106, 0.1112, 0.1146",\
                 "0.1124, 0.1113, 0.1095, 0.1088, 0.1087, 0.1091, 0.1095, 0.1101, 0.1109, 0.1146",\
                 "0.1123, 0.1111, 0.1093, 0.1085, 0.1084, 0.1087, 0.1093, 0.1098, 0.1106, 0.1141",\
                 "0.1161, 0.1148, 0.1127, 0.1115, 0.111, 0.1115, 0.1117, 0.1122, 0.1131, 0.1171",\
                 "0.1253, 0.1236, 0.1208, 0.119, 0.118, 0.1181, 0.1185, 0.1187, 0.1195, 0.1242",\
                 "0.1407, 0.1387, 0.135, 0.1321, 0.1311, 0.1304, 0.1302, 0.1304, 0.1312, 0.1363",\
                 "0.1629, 0.1603, 0.1557, 0.1518, 0.1494, 0.149, 0.1484, 0.1479, 0.1483, 0.1549",\
                 "0.1919, 0.1887, 0.1831, 0.178, 0.1742, 0.1727, 0.1726, 0.172, 0.172, 0.1803",\
                 "0.2278, 0.2239, 0.2171, 0.211, 0.2063, 0.2033, 0.2017, 0.2022, 0.2027, 0.2143",\
                 "0.2709, 0.2663, 0.2583, 0.2512, 0.2452, 0.2409, 0.2381, 0.2372, 0.2398, 0.2566");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.1516, 0.1484, 0.1422, 0.1381, 0.1356, 0.134, 0.1329, 0.1321, 0.1316, 0.1312",\
                 "0.1515, 0.1483, 0.1422, 0.1381, 0.1356, 0.1339, 0.1329, 0.1321, 0.1316, 0.1312",\
                 "0.1513, 0.1481, 0.142, 0.1379, 0.1354, 0.1338, 0.1327, 0.1319, 0.1314, 0.131",\
                 "0.1513, 0.1481, 0.142, 0.1379, 0.1354, 0.1337, 0.1327, 0.1319, 0.1314, 0.131",\
                 "0.1516, 0.1484, 0.1422, 0.1381, 0.1356, 0.1339, 0.1329, 0.1321, 0.1316, 0.1312",\
                 "0.1522, 0.149, 0.1429, 0.1388, 0.1362, 0.1345, 0.1335, 0.1327, 0.1322, 0.1318",\
                 "0.1536, 0.1503, 0.144, 0.1399, 0.1373, 0.1356, 0.1345, 0.1338, 0.1333, 0.1329",\
                 "0.1556, 0.1523, 0.1459, 0.1415, 0.1389, 0.1372, 0.1361, 0.1353, 0.1348, 0.1344",\
                 "0.1579, 0.1546, 0.148, 0.1436, 0.1408, 0.139, 0.1379, 0.1371, 0.1366, 0.1362",\
                 "0.1608, 0.1574, 0.1507, 0.146, 0.1431, 0.1413, 0.1401, 0.1393, 0.1387, 0.1383");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.1196, 0.1185, 0.1166, 0.1157, 0.1155, 0.1158, 0.1163, 0.1169, 0.1178, 0.1217",\
                 "0.1197, 0.1184, 0.1166, 0.1157, 0.1154, 0.1159, 0.1163, 0.1169, 0.1177, 0.1218",\
                 "0.1197, 0.1185, 0.1166, 0.1157, 0.1155, 0.1158, 0.1164, 0.1169, 0.1177, 0.1217",\
                 "0.1198, 0.1186, 0.1168, 0.1159, 0.1157, 0.116, 0.1166, 0.117, 0.118, 0.1225",\
                 "0.1199, 0.1187, 0.117, 0.116, 0.1158, 0.1161, 0.1166, 0.1172, 0.1182, 0.1232",\
                 "0.1202, 0.119, 0.117, 0.1165, 0.1162, 0.1163, 0.1168, 0.1175, 0.1182, 0.1242",\
                 "0.1202, 0.119, 0.1172, 0.116, 0.1162, 0.1169, 0.1172, 0.1176, 0.1185, 0.1258",\
                 "0.1206, 0.1193, 0.1174, 0.1164, 0.1161, 0.1168, 0.1181, 0.1185, 0.1192, 0.129",\
                 "0.1207, 0.1194, 0.1176, 0.1166, 0.1164, 0.1163, 0.1175, 0.1196, 0.1203, 0.134",\
                 "0.1208, 0.1195, 0.1177, 0.1169, 0.1164, 0.1166, 0.1166, 0.1184, 0.1225, 0.1437");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.6776, 0.7288, 0.8653, 1.06, 1.299, 1.592, 1.955, 2.403, 2.947, 3.594",\
                 "0.691, 0.7422, 0.8787, 1.073, 1.312, 1.606, 1.969, 2.417, 2.96, 3.607",\
                 "0.7298, 0.7811, 0.9176, 1.112, 1.351, 1.645, 2.008, 2.455, 2.999, 3.646",\
                 "0.8121, 0.8631, 0.9995, 1.194, 1.433, 1.726, 2.089, 2.537, 3.081, 3.728",\
                 "0.9552, 1.008, 1.146, 1.341, 1.58, 1.874, 2.237, 2.684, 3.228, 3.875",\
                 "1.153, 1.206, 1.349, 1.55, 1.793, 2.088, 2.452, 2.9, 3.443, 4.09",\
                 "1.404, 1.46, 1.607, 1.814, 2.063, 2.362, 2.727, 3.175, 3.718, 4.365",\
                 "1.701, 1.761, 1.917, 2.132, 2.388, 2.692, 3.06, 3.509, 4.052, 4.699",\
                 "2.043, 2.106, 2.271, 2.498, 2.766, 3.078, 3.451, 3.901, 4.445, 5.091",\
                 "2.427, 2.494, 2.668, 2.909, 3.19, 3.515, 3.898, 4.353, 4.899, 5.545");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.447, 0.4936, 0.6329, 0.8684, 1.218, 1.706, 2.349, 3.157, 4.144, 5.322",\
                 "0.4547, 0.5012, 0.6406, 0.876, 1.226, 1.714, 2.357, 3.166, 4.153, 5.328",\
                 "0.4773, 0.5236, 0.6628, 0.8981, 1.248, 1.736, 2.378, 3.187, 4.174, 5.352",\
                 "0.5213, 0.5679, 0.7074, 0.9421, 1.291, 1.779, 2.422, 3.23, 4.217, 5.395",\
                 "0.5638, 0.6116, 0.7539, 0.9901, 1.339, 1.826, 2.468, 3.276, 4.263, 5.44",\
                 "0.5878, 0.6376, 0.7836, 1.022, 1.371, 1.857, 2.498, 3.305, 4.292, 5.469",\
                 "0.5838, 0.6359, 0.7872, 1.031, 1.381, 1.866, 2.505, 3.312, 4.298, 5.475",\
                 "0.5461, 0.6014, 0.7588, 1.009, 1.364, 1.85, 2.489, 3.295, 4.28, 5.456",\
                 "0.4715, 0.5304, 0.6942, 0.9525, 1.313, 1.804, 2.445, 3.251, 4.235, 5.409",\
                 "0.3581, 0.4207, 0.5919, 0.8581, 1.226, 1.724, 2.371, 3.179, 4.163, 5.337");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.211, 0.2598, 0.3931, 0.5909, 0.865, 1.266, 1.819, 2.543, 3.442, 4.531",\
                 "0.2111, 0.2598, 0.393, 0.5911, 0.8658, 1.266, 1.819, 2.542, 3.443, 4.531",\
                 "0.2113, 0.26, 0.3932, 0.5912, 0.866, 1.266, 1.819, 2.542, 3.442, 4.531",\
                 "0.211, 0.2598, 0.3936, 0.5914, 0.8672, 1.267, 1.82, 2.542, 3.443, 4.528",\
                 "0.2206, 0.2696, 0.4012, 0.5968, 0.87, 1.269, 1.821, 2.544, 3.446, 4.529",\
                 "0.2346, 0.2852, 0.4204, 0.6158, 0.8828, 1.276, 1.824, 2.545, 3.444, 4.531",\
                 "0.254, 0.3058, 0.4442, 0.6398, 0.905, 1.291, 1.831, 2.549, 3.448, 4.528",\
                 "0.2812, 0.3362, 0.4784, 0.6738, 0.9352, 1.314, 1.847, 2.557, 3.449, 4.532",\
                 "0.3106, 0.3692, 0.5202, 0.7202, 0.981, 1.349, 1.869, 2.569, 3.454, 4.529",\
                 "0.3418, 0.4042, 0.5646, 0.773, 1.038, 1.404, 1.916, 2.598, 3.468, 4.536");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.1576, 0.2179, 0.415, 0.7817, 1.378, 2.234, 3.367, 4.796, 6.539, 8.603",\
                 "0.1576, 0.2174, 0.4149, 0.782, 1.378, 2.235, 3.367, 4.791, 6.533, 8.607",\
                 "0.1574, 0.2176, 0.4146, 0.783, 1.379, 2.236, 3.369, 4.795, 6.533, 8.604",\
                 "0.1605, 0.2207, 0.4164, 0.7834, 1.379, 2.235, 3.367, 4.798, 6.533, 8.61",\
                 "0.171, 0.2308, 0.4274, 0.7884, 1.38, 2.236, 3.366, 4.796, 6.535, 8.607",\
                 "0.1844, 0.2446, 0.4418, 0.7988, 1.384, 2.237, 3.366, 4.792, 6.533, 8.609",\
                 "0.2016, 0.262, 0.462, 0.8148, 1.393, 2.24, 3.369, 4.788, 6.529, 8.606",\
                 "0.2242, 0.284, 0.4856, 0.839, 1.411, 2.247, 3.371, 4.791, 6.542, 8.604",\
                 "0.2476, 0.3086, 0.5126, 0.8688, 1.437, 2.271, 3.384, 4.794, 6.529, 8.605",\
                 "0.2722, 0.3358, 0.5402, 0.8996, 1.471, 2.304, 3.411, 4.818, 6.535, 8.603");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.7403, 0.7914, 0.9281, 1.123, 1.362, 1.655, 2.018, 2.466, 3.009, 3.656",\
                 "0.7536, 0.8048, 0.9415, 1.136, 1.375, 1.669, 2.032, 2.479, 3.023, 3.67",\
                 "0.8003, 0.8514, 0.9881, 1.183, 1.422, 1.715, 2.078, 2.526, 3.069, 3.717",\
                 "0.8561, 0.9071, 1.044, 1.238, 1.477, 1.771, 2.134, 2.582, 3.125, 3.772",\
                 "0.8992, 0.9504, 1.087, 1.282, 1.521, 1.814, 2.177, 2.625, 3.168, 3.815",\
                 "0.9292, 0.9802, 1.117, 1.311, 1.551, 1.844, 2.207, 2.655, 3.199, 3.846",\
                 "0.943, 0.9944, 1.131, 1.326, 1.565, 1.859, 2.222, 2.67, 3.213, 3.86",\
                 "0.9369, 0.9883, 1.125, 1.321, 1.56, 1.854, 2.217, 2.665, 3.208, 3.855",\
                 "0.9071, 0.9585, 1.096, 1.292, 1.532, 1.826, 2.189, 2.637, 3.181, 3.827",\
                 "0.8521, 0.9043, 1.042, 1.239, 1.479, 1.774, 2.137, 2.585, 3.129, 3.775");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.7722, 0.8187, 0.9579, 1.193, 1.543, 2.031, 2.674, 3.482, 4.47, 5.646",\
                 "0.7858, 0.8321, 0.9714, 1.207, 1.556, 2.044, 2.687, 3.496, 4.483, 5.66",\
                 "0.8353, 0.8816, 1.021, 1.256, 1.606, 2.093, 2.736, 3.545, 4.532, 5.71",\
                 "0.8945, 0.9409, 1.08, 1.315, 1.665, 2.153, 2.796, 3.604, 4.592, 5.769",\
                 "0.9401, 0.9866, 1.126, 1.361, 1.711, 2.198, 2.84, 3.649, 4.635, 5.815",\
                 "0.9708, 1.017, 1.156, 1.391, 1.741, 2.229, 2.871, 3.679, 4.667, 5.845",\
                 "0.981, 1.027, 1.167, 1.402, 1.752, 2.239, 2.881, 3.689, 4.676, 5.854",\
                 "0.9695, 1.016, 1.155, 1.39, 1.74, 2.227, 2.869, 3.677, 4.664, 5.841",\
                 "0.9321, 0.9782, 1.118, 1.353, 1.703, 2.19, 2.832, 3.64, 4.626, 5.802",\
                 "0.869, 0.9151, 1.054, 1.289, 1.64, 2.128, 2.769, 3.577, 4.563, 5.74");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.2097, 0.258, 0.3911, 0.5896, 0.8648, 1.264, 1.819, 2.544, 3.446, 4.529",\
                 "0.2102, 0.2581, 0.3915, 0.5896, 0.865, 1.264, 1.82, 2.543, 3.444, 4.53",\
                 "0.2098, 0.2579, 0.3912, 0.59, 0.866, 1.264, 1.818, 2.544, 3.447, 4.525",\
                 "0.2096, 0.2582, 0.3912, 0.5898, 0.8664, 1.266, 1.82, 2.544, 3.444, 4.531",\
                 "0.2092, 0.2578, 0.3916, 0.59, 0.866, 1.265, 1.817, 2.542, 3.444, 4.531",\
                 "0.2096, 0.2586, 0.3914, 0.59, 0.8648, 1.265, 1.819, 2.544, 3.445, 4.531",\
                 "0.2108, 0.2596, 0.3928, 0.591, 0.8652, 1.265, 1.817, 2.54, 3.445, 4.531",\
                 "0.2124, 0.2614, 0.3944, 0.5928, 0.8684, 1.265, 1.819, 2.541, 3.44, 4.525",\
                 "0.215, 0.264, 0.397, 0.5954, 0.869, 1.267, 1.822, 2.546, 3.444, 4.523",\
                 "0.2176, 0.2666, 0.3998, 0.598, 0.8714, 1.269, 1.821, 2.544, 3.441, 4.524");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003477, 0.01217, 0.02877, 0.05464, 0.09093, 0.1387, 0.1989, 0.2723, 0.3598");
          values("0.1579, 0.2177, 0.4152, 0.782, 1.379, 2.235, 3.366, 4.792, 6.531, 8.611",\
                 "0.1575, 0.2179, 0.4152, 0.782, 1.379, 2.235, 3.366, 4.793, 6.533, 8.611",\
                 "0.1576, 0.2178, 0.4152, 0.782, 1.379, 2.235, 3.367, 4.798, 6.533, 8.609",\
                 "0.1574, 0.2178, 0.4146, 0.783, 1.379, 2.235, 3.367, 4.797, 6.533, 8.608",\
                 "0.1574, 0.2178, 0.4152, 0.7832, 1.378, 2.239, 3.365, 4.796, 6.529, 8.606",\
                 "0.1574, 0.2178, 0.4152, 0.7828, 1.378, 2.236, 3.366, 4.794, 6.537, 8.605",\
                 "0.1578, 0.218, 0.4146, 0.783, 1.379, 2.234, 3.363, 4.79, 6.533, 8.616",\
                 "0.1576, 0.2176, 0.4152, 0.7816, 1.379, 2.234, 3.364, 4.79, 6.528, 8.602",\
                 "0.1578, 0.218, 0.415, 0.7818, 1.38, 2.233, 3.367, 4.789, 6.525, 8.618",\
                 "0.1576, 0.2178, 0.415, 0.7824, 1.379, 2.234, 3.364, 4.789, 6.525, 8.598");
        }
      }
    }
  }

