/*
 * 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.000124197" ;
    }

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.006779, 0.00678, 0.006764, 0.006772, 0.006784, 0.006799, 0.006799, \
                  0.006793, 0.006799, 0.006797");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.006141, -0.00613, -0.006193, -0.006242, -0.006254, -0.006288, \
                  -0.006296, -0.006303, -0.006305, -0.00631");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-1.053, -1.027, -0.944, -0.829, -0.707, -0.569, -0.419, -0.236, -0.029, 0.209",\
                 "-1.074, -1.053, -0.969, -0.852, -0.729, -0.594, -0.441, -0.257, -0.053, 0.187",\
                 "-1.143, -1.118, -1.038, -0.921, -0.799, -0.665, -0.507, -0.328, -0.12, 0.117",\
                 "-1.267, -1.242, -1.156, -1.043, -0.924, -0.786, -0.627, -0.444, -0.234, 0.012",\
                 "-1.465, -1.442, -1.363, -1.246, -1.119, -0.985, -0.824, -0.63, -0.421, -0.167",\
                 "-1.746, -1.726, -1.638, -1.522, -1.399, -1.253, -1.088, -0.894, -0.673, -0.419",\
                 "-2.075, -2.052, -1.965, -1.846, -1.718, -1.57, -1.402, -1.211, -0.986, -0.729",\
                 "-2.455, -2.434, -2.35, -2.226, -2.099, -1.946, -1.775, -1.571, -1.344, -1.09",\
                 "-2.901, -2.877, -2.79, -2.669, -2.533, -2.382, -2.206, -2.006, -1.773, -1.516",\
                 "-3.403, -3.382, -3.292, -3.169, -3.037, -2.88, -2.704, -2.501, -2.27, -2.009");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.263, -0.241, -0.137, 0.032, 0.223, 0.441, 0.682, 0.957, 1.252, 1.585",\
                 "-0.281, -0.257, -0.156, 0.019, 0.21, 0.427, 0.669, 0.942, 1.239, 1.565",\
                 "-0.324, -0.298, -0.195, -0.03, 0.166, 0.379, 0.621, 0.897, 1.196, 1.527",\
                 "-0.411, -0.388, -0.286, -0.113, 0.078, 0.295, 0.537, 0.815, 1.112, 1.449",\
                 "-0.525, -0.494, -0.397, -0.223, -0.026, 0.187, 0.439, 0.711, 1.02, 1.355",\
                 "-0.621, -0.595, -0.499, -0.323, -0.127, 0.095, 0.343, 0.622, 0.931, 1.276",\
                 "-0.699, -0.669, -0.57, -0.399, -0.195, 0.023, 0.276, 0.56, 0.869, 1.214",\
                 "-0.733, -0.707, -0.614, -0.435, -0.233, -0.014, 0.238, 0.524, 0.838, 1.175",\
                 "-0.738, -0.714, -0.614, -0.442, -0.239, -0.013, 0.235, 0.519, 0.832, 1.175",\
                 "-0.698, -0.672, -0.573, -0.396, -0.197, 0.024, 0.275, 0.557, 0.874, 1.22");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("1.3, 1.277, 1.193, 1.1, 1.017, 0.956, 0.932, 0.959, 1.037, 1.146",\
                 "1.324, 1.294, 1.214, 1.118, 1.042, 0.976, 0.947, 0.974, 1.046, 1.152",\
                 "1.392, 1.362, 1.289, 1.187, 1.105, 1.047, 1.014, 1.035, 1.101, 1.198",\
                 "1.505, 1.479, 1.402, 1.306, 1.219, 1.152, 1.117, 1.12, 1.165, 1.239",\
                 "1.701, 1.679, 1.598, 1.501, 1.412, 1.337, 1.292, 1.267, 1.28, 1.311",\
                 "1.975, 1.954, 1.869, 1.769, 1.679, 1.593, 1.522, 1.471, 1.438, 1.422",\
                 "2.303, 2.273, 2.193, 2.091, 1.991, 1.893, 1.8, 1.725, 1.647, 1.592",\
                 "2.678, 2.654, 2.578, 2.471, 2.361, 2.245, 2.14, 2.037, 1.928, 1.827",\
                 "3.118, 3.091, 3.01, 2.902, 2.785, 2.662, 2.544, 2.41, 2.279, 2.148",\
                 "3.615, 3.589, 3.51, 3.397, 3.279, 3.143, 3.012, 2.862, 2.707, 2.544");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.464, 0.434, 0.331, 0.152, -0.041, -0.262, -0.508, -0.778, -1.07, -1.393",\
                 "0.474, 0.446, 0.346, 0.166, -0.029, -0.25, -0.491, -0.76, -1.06, -1.385",\
                 "0.518, 0.488, 0.389, 0.212, 0.01, -0.204, -0.45, -0.716, -1.017, -1.343",\
                 "0.601, 0.573, 0.469, 0.291, 0.098, -0.121, -0.368, -0.638, -0.935, -1.257",\
                 "0.707, 0.684, 0.579, 0.406, 0.21, -0.012, -0.26, -0.533, -0.834, -1.166",\
                 "0.8, 0.772, 0.674, 0.496, 0.303, 0.082, -0.165, -0.446, -0.752, -1.086",\
                 "0.868, 0.841, 0.74, 0.568, 0.367, 0.147, -0.103, -0.381, -0.689, -1.033",\
                 "0.897, 0.874, 0.771, 0.595, 0.392, 0.168, -0.084, -0.364, -0.675, -1.013",\
                 "0.884, 0.858, 0.756, 0.575, 0.371, 0.153, -0.1, -0.382, -0.693, -1.031",\
                 "0.831, 0.806, 0.703, 0.517, 0.318, 0.091, -0.157, -0.445, -0.753, -1.096");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07781, 0.07722, 0.07675, 0.07807, 0.08139, 0.08689, 0.09474, \
                  0.1051, 0.1183, 0.1345");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.0452, 0.04481, 0.04422, 0.04495, 0.04755, 0.05232, 0.05933, \
                  0.0687, 0.08065, 0.09512");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07851, 0.0779, 0.07738, 0.07877, 0.08216, 0.08769, 0.0956, 0.1061, \
                  0.1193, 0.1355");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.04453, 0.04409, 0.04351, 0.04426, 0.04684, 0.0515, 0.05846, \
                  0.06782, 0.07973, 0.09419");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.7174 ;
      max_transition : 11 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.1584, 0.1527, 0.1459, 0.1426, 0.1413, 0.1405, 0.1402, 0.14, 0.1398, 0.1398",\
                 "0.1582, 0.1525, 0.1456, 0.1424, 0.141, 0.1404, 0.14, 0.1398, 0.1396, 0.1395",\
                 "0.1578, 0.1521, 0.1453, 0.1421, 0.1407, 0.14, 0.1397, 0.1395, 0.1393, 0.1393",\
                 "0.1577, 0.152, 0.1451, 0.1419, 0.1405, 0.1399, 0.1395, 0.1393, 0.1392, 0.1391",\
                 "0.1595, 0.1538, 0.1467, 0.1433, 0.1417, 0.141, 0.1406, 0.1405, 0.1404, 0.1403",\
                 "0.1662, 0.1601, 0.1519, 0.1478, 0.1458, 0.1447, 0.1442, 0.144, 0.1438, 0.1436",\
                 "0.1755, 0.1689, 0.1595, 0.1546, 0.1519, 0.1505, 0.1498, 0.1494, 0.1492, 0.149",\
                 "0.1868, 0.1799, 0.1694, 0.1634, 0.1602, 0.1586, 0.1575, 0.157, 0.1566, 0.1564",\
                 "0.2009, 0.1934, 0.1816, 0.1748, 0.1709, 0.1687, 0.1675, 0.1668, 0.1663, 0.166",\
                 "0.2181, 0.2101, 0.1969, 0.1891, 0.1844, 0.1817, 0.1801, 0.1792, 0.1785, 0.1781");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.1086, 0.1071, 0.1058, 0.1058, 0.107, 0.1083, 0.1095, 0.1112, 0.113, 0.1358",\
                 "0.1083, 0.1069, 0.1054, 0.1057, 0.1068, 0.108, 0.1094, 0.1106, 0.113, 0.1368",\
                 "0.1079, 0.1065, 0.1052, 0.1052, 0.1063, 0.1077, 0.109, 0.1109, 0.1125, 0.1371",\
                 "0.1084, 0.107, 0.1054, 0.1052, 0.1062, 0.1075, 0.109, 0.1103, 0.1128, 0.1415",\
                 "0.1114, 0.1097, 0.1076, 0.1068, 0.1073, 0.1086, 0.1097, 0.1112, 0.1144, 0.1477",\
                 "0.1164, 0.1142, 0.1114, 0.1105, 0.1106, 0.1111, 0.1123, 0.1139, 0.1188, 0.1592",\
                 "0.1239, 0.1211, 0.1177, 0.1154, 0.1149, 0.1161, 0.1162, 0.1177, 0.1233, 0.1809",\
                 "0.1337, 0.1301, 0.1257, 0.1232, 0.1212, 0.1219, 0.1236, 0.1239, 0.1334, 0.213",\
                 "0.1464, 0.1419, 0.1366, 0.133, 0.1308, 0.1299, 0.1311, 0.1336, 0.149, 0.2673",\
                 "0.1616, 0.156, 0.1497, 0.1454, 0.1425, 0.1406, 0.1413, 0.1441, 0.175, 0.364");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.1475, 0.1418, 0.135, 0.1319, 0.1306, 0.1299, 0.1295, 0.1293, 0.1291, 0.129",\
                 "0.1474, 0.1419, 0.135, 0.1319, 0.1304, 0.1299, 0.1295, 0.1293, 0.1291, 0.129",\
                 "0.1473, 0.1417, 0.1349, 0.1317, 0.1304, 0.1297, 0.1294, 0.1291, 0.129, 0.1289",\
                 "0.1471, 0.1415, 0.1346, 0.1315, 0.1302, 0.1295, 0.1292, 0.1289, 0.1288, 0.1287",\
                 "0.1469, 0.1413, 0.1345, 0.1314, 0.13, 0.1293, 0.129, 0.1288, 0.1286, 0.1285",\
                 "0.1469, 0.1413, 0.1345, 0.1313, 0.1299, 0.1292, 0.1289, 0.1287, 0.1285, 0.1284",\
                 "0.1469, 0.1412, 0.1344, 0.1313, 0.1299, 0.1292, 0.1288, 0.1286, 0.1285, 0.1284",\
                 "0.1471, 0.1415, 0.1346, 0.1313, 0.13, 0.1293, 0.129, 0.1288, 0.1286, 0.1285",\
                 "0.1473, 0.1416, 0.1348, 0.1316, 0.1301, 0.1295, 0.1292, 0.1289, 0.1288, 0.1288",\
                 "0.1479, 0.1423, 0.1353, 0.132, 0.1305, 0.1298, 0.1295, 0.1293, 0.1291, 0.1291");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.1132, 0.1118, 0.1103, 0.1103, 0.1113, 0.1127, 0.1139, 0.1152, 0.1184, 0.1434",\
                 "0.1132, 0.1119, 0.1104, 0.1106, 0.1113, 0.1128, 0.1139, 0.1154, 0.1185, 0.1442",\
                 "0.1132, 0.1119, 0.1104, 0.1106, 0.1117, 0.1128, 0.1142, 0.1154, 0.1182, 0.1472",\
                 "0.1133, 0.1119, 0.1104, 0.1106, 0.1116, 0.1128, 0.1142, 0.1152, 0.1184, 0.1525",\
                 "0.1132, 0.1118, 0.1105, 0.1106, 0.1118, 0.1128, 0.1143, 0.1153, 0.1193, 0.1583",\
                 "0.1133, 0.1119, 0.1105, 0.1106, 0.1117, 0.1128, 0.114, 0.1157, 0.1205, 0.1678",\
                 "0.1133, 0.1119, 0.1104, 0.11, 0.1121, 0.1132, 0.1142, 0.1153, 0.1229, 0.1871",\
                 "0.1133, 0.1119, 0.1104, 0.1105, 0.1109, 0.1127, 0.1153, 0.1152, 0.1268, 0.2141",\
                 "0.1134, 0.112, 0.1103, 0.1105, 0.111, 0.1117, 0.1143, 0.1171, 0.134, 0.2648",\
                 "0.1133, 0.1121, 0.1105, 0.1104, 0.111, 0.1114, 0.1124, 0.1178, 0.1518, 0.3583");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("1.139, 1.233, 1.459, 1.754, 2.098, 2.507, 3.004, 3.609, 4.34, 5.208",\
                 "1.162, 1.257, 1.483, 1.778, 2.121, 2.53, 3.027, 3.632, 4.363, 5.231",\
                 "1.231, 1.326, 1.552, 1.847, 2.19, 2.599, 3.096, 3.701, 4.432, 5.3",\
                 "1.354, 1.449, 1.675, 1.97, 2.313, 2.722, 3.219, 3.824, 4.555, 5.424",\
                 "1.555, 1.65, 1.876, 2.171, 2.514, 2.923, 3.42, 4.025, 4.756, 5.625",\
                 "1.826, 1.923, 2.155, 2.454, 2.799, 3.209, 3.706, 4.312, 5.043, 5.911",\
                 "2.145, 2.246, 2.487, 2.798, 3.153, 3.568, 4.067, 4.673, 5.404, 6.272",\
                 "2.518, 2.624, 2.873, 3.196, 3.56, 3.983, 4.486, 5.094, 5.826, 6.694",\
                 "2.952, 3.062, 3.319, 3.652, 4.026, 4.455, 4.964, 5.574, 6.306, 7.175",\
                 "3.447, 3.56, 3.827, 4.171, 4.555, 4.99, 5.503, 6.115, 6.848, 7.717");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.6904, 0.7727, 0.9863, 1.314, 1.782, 2.43, 3.279, 4.35, 5.657, 7.213",\
                 "0.7053, 0.7881, 1.001, 1.329, 1.797, 2.445, 3.295, 4.366, 5.673, 7.227",\
                 "0.749, 0.8312, 1.045, 1.372, 1.841, 2.488, 3.339, 4.409, 5.716, 7.272",\
                 "0.8345, 0.9169, 1.13, 1.457, 1.925, 2.573, 3.423, 4.494, 5.801, 7.356",\
                 "0.9437, 1.029, 1.247, 1.576, 2.044, 2.691, 3.541, 4.612, 5.917, 7.475",\
                 "1.042, 1.131, 1.358, 1.693, 2.163, 2.81, 3.659, 4.73, 6.036, 7.593",\
                 "1.117, 1.21, 1.446, 1.787, 2.259, 2.906, 3.755, 4.825, 6.131, 7.687",\
                 "1.161, 1.258, 1.504, 1.853, 2.327, 2.973, 3.822, 4.891, 6.197, 7.752",\
                 "1.169, 1.271, 1.529, 1.887, 2.364, 3.01, 3.858, 4.927, 6.232, 7.787",\
                 "1.136, 1.243, 1.515, 1.885, 2.366, 3.013, 3.861, 4.929, 6.233, 7.788");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.2664, 0.3504, 0.5558, 0.8228, 1.184, 1.702, 2.419, 3.362, 4.541, 5.965",\
                 "0.2668, 0.3502, 0.5558, 0.8226, 1.183, 1.703, 2.419, 3.362, 4.541, 5.963",\
                 "0.266, 0.35, 0.5558, 0.8228, 1.184, 1.703, 2.419, 3.363, 4.54, 5.962",\
                 "0.2664, 0.3504, 0.556, 0.8228, 1.184, 1.703, 2.419, 3.36, 4.54, 5.963",\
                 "0.2672, 0.3516, 0.557, 0.8236, 1.184, 1.702, 2.419, 3.363, 4.541, 5.964",\
                 "0.2848, 0.37, 0.575, 0.8366, 1.193, 1.708, 2.421, 3.361, 4.541, 5.963",\
                 "0.304, 0.3926, 0.6056, 0.8718, 1.22, 1.726, 2.43, 3.366, 4.543, 5.963",\
                 "0.3234, 0.4154, 0.6354, 0.9076, 1.254, 1.754, 2.45, 3.375, 4.546, 5.965",\
                 "0.3426, 0.4384, 0.6642, 0.9422, 1.288, 1.783, 2.472, 3.39, 4.552, 5.966",\
                 "0.3646, 0.464, 0.696, 0.98, 1.322, 1.812, 2.494, 3.406, 4.56, 5.97");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.1809, 0.2717, 0.5247, 0.9834, 1.737, 2.831, 4.285, 6.123, 8.359, 11.01",\
                 "0.1818, 0.2719, 0.5253, 0.9848, 1.736, 2.834, 4.288, 6.122, 8.352, 11.02",\
                 "0.1809, 0.2718, 0.5256, 0.9842, 1.736, 2.833, 4.289, 6.123, 8.359, 11.01",\
                 "0.1812, 0.2724, 0.526, 0.9852, 1.739, 2.834, 4.289, 6.123, 8.354, 11.02",\
                 "0.193, 0.2848, 0.5374, 0.9894, 1.74, 2.832, 4.285, 6.116, 8.353, 11.02",\
                 "0.207, 0.3026, 0.5586, 1.004, 1.743, 2.833, 4.284, 6.121, 8.358, 11.02",\
                 "0.225, 0.3224, 0.582, 1.021, 1.751, 2.835, 4.282, 6.119, 8.349, 11.02",\
                 "0.2454, 0.3456, 0.6082, 1.041, 1.762, 2.84, 4.284, 6.115, 8.354, 11.02",\
                 "0.2694, 0.3716, 0.641, 1.064, 1.773, 2.843, 4.287, 6.11, 8.348, 11.01",\
                 "0.295, 0.4006, 0.679, 1.095, 1.789, 2.85, 4.29, 6.114, 8.342, 11");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("1.255, 1.35, 1.576, 1.871, 2.215, 2.624, 3.12, 3.726, 4.457, 5.325",\
                 "1.276, 1.371, 1.597, 1.892, 2.236, 2.645, 3.141, 3.747, 4.477, 5.346",\
                 "1.35, 1.444, 1.67, 1.965, 2.309, 2.718, 3.215, 3.82, 4.551, 5.419",\
                 "1.452, 1.547, 1.773, 2.068, 2.412, 2.821, 3.317, 3.923, 4.654, 5.522",\
                 "1.539, 1.633, 1.859, 2.155, 2.498, 2.907, 3.404, 4.009, 4.74, 5.608",\
                 "1.603, 1.698, 1.924, 2.219, 2.563, 2.972, 3.469, 4.074, 4.805, 5.674",\
                 "1.648, 1.743, 1.969, 2.265, 2.608, 3.017, 3.514, 4.119, 4.85, 5.719",\
                 "1.673, 1.767, 1.994, 2.289, 2.633, 3.042, 3.538, 4.144, 4.874, 5.743",\
                 "1.673, 1.768, 1.994, 2.29, 2.633, 3.042, 3.539, 4.145, 4.875, 5.744",\
                 "1.647, 1.742, 1.969, 2.264, 2.608, 3.017, 3.514, 4.12, 4.85, 5.719");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("1.167, 1.249, 1.463, 1.79, 2.258, 2.906, 3.755, 4.826, 6.132, 7.69",\
                 "1.188, 1.27, 1.484, 1.811, 2.279, 2.927, 3.777, 4.847, 6.153, 7.711",\
                 "1.264, 1.346, 1.559, 1.886, 2.355, 3.002, 3.853, 4.923, 6.229, 7.784",\
                 "1.371, 1.454, 1.667, 1.994, 2.463, 3.11, 3.961, 5.032, 6.337, 7.893",\
                 "1.46, 1.542, 1.756, 2.083, 2.552, 3.199, 4.05, 5.121, 6.427, 7.98",\
                 "1.527, 1.61, 1.823, 2.15, 2.618, 3.266, 4.116, 5.186, 6.492, 8.05",\
                 "1.574, 1.656, 1.869, 2.197, 2.665, 3.312, 4.162, 5.233, 6.538, 8.096",\
                 "1.596, 1.678, 1.892, 2.219, 2.688, 3.335, 4.185, 5.254, 6.561, 8.119",\
                 "1.592, 1.674, 1.887, 2.216, 2.684, 3.331, 4.182, 5.251, 6.556, 8.112",\
                 "1.558, 1.64, 1.854, 2.18, 2.648, 3.296, 4.147, 5.217, 6.522, 8.078");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.2666, 0.3502, 0.5554, 0.8224, 1.184, 1.701, 2.42, 3.362, 4.54, 5.963",\
                 "0.2664, 0.3504, 0.5556, 0.8226, 1.183, 1.702, 2.419, 3.362, 4.541, 5.958",\
                 "0.2666, 0.3502, 0.5552, 0.8228, 1.184, 1.702, 2.419, 3.363, 4.541, 5.962",\
                 "0.2666, 0.3504, 0.5554, 0.8224, 1.184, 1.701, 2.419, 3.363, 4.541, 5.96",\
                 "0.2656, 0.3502, 0.5556, 0.8228, 1.184, 1.702, 2.42, 3.361, 4.539, 5.964",\
                 "0.2662, 0.3508, 0.5558, 0.8226, 1.184, 1.701, 2.419, 3.361, 4.541, 5.959",\
                 "0.2664, 0.3506, 0.556, 0.823, 1.184, 1.702, 2.418, 3.361, 4.541, 5.96",\
                 "0.2666, 0.3506, 0.556, 0.8228, 1.184, 1.702, 2.419, 3.357, 4.535, 5.955",\
                 "0.2666, 0.3506, 0.5562, 0.8232, 1.184, 1.701, 2.419, 3.357, 4.536, 5.955",\
                 "0.2676, 0.352, 0.557, 0.824, 1.185, 1.702, 2.421, 3.357, 4.536, 5.956");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005945, 0.0233, 0.05645, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7174");
          values("0.1818, 0.2718, 0.5244, 0.9838, 1.739, 2.832, 4.283, 6.118, 8.359, 11.02",\
                 "0.181, 0.2714, 0.5252, 0.9844, 1.739, 2.831, 4.286, 6.119, 8.359, 11.02",\
                 "0.181, 0.2716, 0.5246, 0.9852, 1.737, 2.831, 4.288, 6.116, 8.352, 11.02",\
                 "0.1812, 0.2716, 0.5256, 0.9852, 1.737, 2.832, 4.288, 6.116, 8.349, 11.03",\
                 "0.1806, 0.2718, 0.5254, 0.9852, 1.739, 2.835, 4.288, 6.121, 8.35, 11.02",\
                 "0.181, 0.2714, 0.525, 0.984, 1.738, 2.831, 4.286, 6.121, 8.359, 11.02",\
                 "0.1812, 0.2716, 0.5248, 0.9848, 1.737, 2.829, 4.281, 6.111, 8.357, 11.03",\
                 "0.182, 0.2718, 0.5246, 0.9852, 1.739, 2.832, 4.28, 6.11, 8.353, 11.02",\
                 "0.1808, 0.2714, 0.5248, 0.9854, 1.738, 2.829, 4.284, 6.105, 8.344, 11",\
                 "0.1818, 0.2714, 0.525, 0.984, 1.738, 2.831, 4.28, 6.112, 8.336, 11");
        }
      }
    }
  }

