/*
 * 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__and3_1) {
    area : 21.952000 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&!A3" ;
      value : "8.20215e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2&A3" ;
      value : "8.20215e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&!A3" ;
      value : "8.20215e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2&A3" ;
      value : "8.20215e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&!A3" ;
      value : "0.0001124955" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2&A3" ;
      value : "0.0001124955" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&!A3" ;
      value : "0.000142065" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2&A3" ;
      value : "0.0001236375" ;
    }

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

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

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

    pin(A1) {
      capacitance : 0.002817 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A2&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01462, 0.01457, 0.0145, 0.01449, 0.01447, 0.01453, 0.01449, \
                  0.01452, 0.01452, 0.01451");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.00916, -0.009151, -0.009142, -0.009159, -0.009163, -0.0092, \
                  -0.009185, -0.009188, -0.009195, -0.009207");
        }
      }

      internal_power() {
        when : "!A2&A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01462, 0.01459, 0.01452, 0.01449, 0.01447, 0.01448, 0.01451, \
                  0.01449, 0.01452, 0.01452");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.009171, -0.009163, -0.009148, -0.009167, -0.009147, -0.009205, \
                  -0.009199, -0.0092, -0.009196, -0.009205");
        }
      }

      internal_power() {
        when : "A2&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01453, 0.01453, 0.01451, 0.0145, 0.01451, 0.01448, 0.0145, 0.01451, \
                  0.01453, 0.01451");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.005483, 0.005506, 0.005507, 0.005478, 0.00543, 0.005401, 0.005398, \
                  0.005394, 0.005385, 0.005377");
        }
      }
    }

    pin(A2) {
      capacitance : 0.002752 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01682, 0.01755, 0.01815, 0.01845, 0.01875, 0.01909, 0.01929, \
                  0.01947, 0.01955, 0.01966");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.013, -0.01298, -0.0129, -0.0129, -0.01289, -0.01292, -0.01291, \
                  -0.01291, -0.01291, -0.01291");
        }
      }

      internal_power() {
        when : "!A1&A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01476, 0.01364, 0.01296, 0.01291, 0.01292, 0.01293, 0.01295, \
                  0.01294, 0.01293, 0.01293");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.01293, -0.01293, -0.0129, -0.01289, -0.01289, -0.01292, -0.01291, \
                  -0.01291, -0.01292, -0.01292");
        }
      }

      internal_power() {
        when : "A1&!A3" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01454, 0.01453, 0.01452, 0.01451, 0.0145, 0.0145, 0.0145, 0.01451, \
                  0.01449, 0.0145");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.009223, -0.009206, -0.009183, -0.00919, -0.009199, -0.009235, \
                  -0.009229, -0.00925, -0.009252, -0.009274");
        }
      }
    }

    pin(A3) {
      capacitance : 0.002798 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1&!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01304, 0.01303, 0.01296, 0.01293, 0.01292, 0.01295, 0.01295, \
                  0.01295, 0.01297, 0.01296");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.01297, -0.01296, -0.01289, -0.01291, -0.01287, -0.01292, -0.0129, \
                  -0.01291, -0.0129, -0.01292");
        }
      }

      internal_power() {
        when : "!A1&A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01323, 0.01302, 0.01293, 0.01293, 0.01292, 0.01295, 0.01295, \
                  0.01296, 0.01295, 0.01296");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.01294, -0.01295, -0.01291, -0.01291, -0.01288, -0.01293, -0.01292, \
                  -0.01292, -0.01292, -0.01292");
        }
      }

      internal_power() {
        when : "A1&!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01373, 0.01306, 0.01296, 0.01293, 0.01293, 0.01293, 0.01296, \
                  0.01297, 0.01295, 0.01295");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.01296, -0.01296, -0.01291, -0.01291, -0.01289, -0.01292, -0.01292, \
                  -0.0129, -0.01292, -0.01293");
        }
      }
    }

    pin(Z) {
      direction : output ;
      function : "(A1&A2&A3)" ;
      max_capacitance : 0.2518 ;
      max_transition : 5 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "A1" ;
        when : "A2&A3" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1707, 0.1687, 0.1659, 0.1641, 0.1632, 0.1626, 0.1622, 0.162, 0.1618, 0.1617",\
                 "0.1705, 0.1687, 0.1659, 0.1641, 0.1633, 0.1626, 0.1622, 0.1619, 0.1617, 0.1616",\
                 "0.1705, 0.1687, 0.1658, 0.164, 0.163, 0.1626, 0.1622, 0.1619, 0.1618, 0.1617",\
                 "0.1744, 0.1724, 0.169, 0.1667, 0.1658, 0.1651, 0.1647, 0.1645, 0.1643, 0.1642",\
                 "0.1876, 0.1848, 0.18, 0.1765, 0.1745, 0.1732, 0.1725, 0.1721, 0.1718, 0.1717",\
                 "0.2083, 0.2048, 0.1982, 0.1933, 0.1898, 0.1875, 0.1865, 0.1856, 0.185, 0.1847",\
                 "0.2372, 0.233, 0.2246, 0.2173, 0.2124, 0.2091, 0.207, 0.2056, 0.2048, 0.204",\
                 "0.2738, 0.2692, 0.2588, 0.2495, 0.2425, 0.2378, 0.2349, 0.2328, 0.2312, 0.2302",\
                 "0.3189, 0.3135, 0.3012, 0.2895, 0.2807, 0.2744, 0.2701, 0.267, 0.2651, 0.2635",\
                 "0.3718, 0.3658, 0.3517, 0.3379, 0.3269, 0.3188, 0.3132, 0.3091, 0.3062, 0.3042");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1045, 0.1023, 0.09809, 0.09446, 0.09245, 0.09164, 0.09179, 0.0924, 0.09334, 0.09392",\
                 "0.1042, 0.1021, 0.09765, 0.09406, 0.09213, 0.09133, 0.09188, 0.09199, 0.09267, 0.09347",\
                 "0.1042, 0.102, 0.09778, 0.09397, 0.09218, 0.09124, 0.09175, 0.09172, 0.09244, 0.09437",\
                 "0.1072, 0.1049, 0.1006, 0.09653, 0.0942, 0.09331, 0.09382, 0.09411, 0.09438, 0.09617",\
                 "0.1179, 0.1155, 0.1104, 0.1056, 0.1025, 0.1008, 0.1003, 0.1009, 0.1009, 0.1016",\
                 "0.1346, 0.1318, 0.1255, 0.1201, 0.1161, 0.1131, 0.1125, 0.1121, 0.1123, 0.1124",\
                 "0.1583, 0.1548, 0.1476, 0.1405, 0.1357, 0.1328, 0.1306, 0.129, 0.1291, 0.1295",\
                 "0.1899, 0.1859, 0.1777, 0.1696, 0.1621, 0.1586, 0.156, 0.154, 0.1524, 0.1524",\
                 "0.2285, 0.2239, 0.2145, 0.2045, 0.1957, 0.191, 0.1873, 0.1854, 0.1833, 0.1819",\
                 "0.2746, 0.2693, 0.2584, 0.2471, 0.2369, 0.229, 0.2239, 0.2228, 0.2216, 0.2201");
        }
      }

      internal_power() {
        related_pin : "A2" ;
        when : "A1&A3" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1864, 0.1841, 0.1806, 0.1782, 0.1769, 0.1761, 0.1756, 0.1752, 0.1753, 0.1751",\
                 "0.1859, 0.1838, 0.1804, 0.178, 0.1766, 0.1758, 0.1753, 0.1749, 0.1748, 0.1746",\
                 "0.1861, 0.1838, 0.1802, 0.1779, 0.1768, 0.1759, 0.1755, 0.1752, 0.175, 0.1748",\
                 "0.1897, 0.1875, 0.1836, 0.181, 0.1795, 0.1787, 0.1782, 0.1778, 0.1776, 0.1775",\
                 "0.2032, 0.2003, 0.1951, 0.1911, 0.1888, 0.1875, 0.1866, 0.1861, 0.1857, 0.1855",\
                 "0.2248, 0.2214, 0.2145, 0.2087, 0.2048, 0.2026, 0.2011, 0.2002, 0.1996, 0.1992",\
                 "0.2548, 0.2505, 0.242, 0.2344, 0.2288, 0.2253, 0.223, 0.2215, 0.2205, 0.2198",\
                 "0.2934, 0.2885, 0.2779, 0.2682, 0.261, 0.2559, 0.2525, 0.2503, 0.2487, 0.2477",\
                 "0.3404, 0.3348, 0.3222, 0.3104, 0.3011, 0.2942, 0.2899, 0.2865, 0.2843, 0.2828",\
                 "0.3954, 0.3896, 0.3752, 0.3611, 0.3496, 0.3411, 0.335, 0.331, 0.3278, 0.3257");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1046, 0.1023, 0.09794, 0.09424, 0.09236, 0.09155, 0.09211, 0.09199, 0.09285, 0.09347",\
                 "0.1043, 0.1019, 0.09758, 0.09397, 0.09204, 0.09124, 0.09175, 0.09177, 0.09303, 0.09347",\
                 "0.1037, 0.1014, 0.09709, 0.09375, 0.09168, 0.09065, 0.09107, 0.09163, 0.09168, 0.09347",\
                 "0.1063, 0.1038, 0.0995, 0.09532, 0.09339, 0.09232, 0.09278, 0.09316, 0.09393, 0.09437",\
                 "0.1153, 0.1129, 0.108, 0.1034, 0.1004, 0.09889, 0.09886, 0.09897, 0.09933, 0.1002",\
                 "0.1312, 0.1284, 0.1225, 0.1177, 0.1139, 0.111, 0.1104, 0.11, 0.1106, 0.1119",\
                 "0.155, 0.1517, 0.1453, 0.1383, 0.1336, 0.1305, 0.1287, 0.1277, 0.128, 0.1281",\
                 "0.1868, 0.183, 0.1751, 0.1672, 0.1605, 0.1566, 0.1548, 0.1533, 0.1513, 0.1511",\
                 "0.2261, 0.2216, 0.2127, 0.2032, 0.1953, 0.1887, 0.1862, 0.1846, 0.1833, 0.1801",\
                 "0.2733, 0.2681, 0.2581, 0.2474, 0.237, 0.2298, 0.2246, 0.2226, 0.2222, 0.2215");
        }
      }

      internal_power() {
        related_pin : "A3" ;
        when : "A1&A2" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.2019, 0.1995, 0.1954, 0.1926, 0.1907, 0.1896, 0.1892, 0.1887, 0.1883, 0.1881",\
                 "0.2013, 0.1989, 0.1948, 0.1919, 0.1901, 0.1891, 0.1884, 0.188, 0.1877, 0.1875",\
                 "0.2014, 0.199, 0.1949, 0.1919, 0.1903, 0.1892, 0.1885, 0.1882, 0.188, 0.1877",\
                 "0.2052, 0.2026, 0.1983, 0.195, 0.1933, 0.1922, 0.1916, 0.1912, 0.1909, 0.1907",\
                 "0.2187, 0.2157, 0.2101, 0.2057, 0.2031, 0.2015, 0.2005, 0.1998, 0.1994, 0.1991",\
                 "0.2416, 0.2378, 0.2306, 0.2246, 0.2203, 0.2177, 0.216, 0.215, 0.2143, 0.2138",\
                 "0.2728, 0.2685, 0.2595, 0.2517, 0.2459, 0.2419, 0.2395, 0.2378, 0.2368, 0.2359",\
                 "0.3135, 0.3086, 0.2979, 0.2878, 0.2801, 0.2747, 0.2711, 0.2687, 0.267, 0.2659",\
                 "0.3633, 0.3578, 0.3452, 0.3329, 0.3234, 0.3163, 0.3114, 0.308, 0.3057, 0.304",\
                 "0.422, 0.4162, 0.4017, 0.3874, 0.3758, 0.3667, 0.3604, 0.3559, 0.3527, 0.3504");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1045, 0.1024, 0.09807, 0.09438, 0.09245, 0.0916, 0.09211, 0.09213, 0.0933, 0.09392",\
                 "0.1043, 0.102, 0.09764, 0.09415, 0.09231, 0.09128, 0.09184, 0.09172, 0.09298, 0.09392",\
                 "0.1035, 0.1013, 0.09698, 0.09343, 0.09141, 0.09047, 0.09103, 0.09091, 0.09168, 0.09347",\
                 "0.1051, 0.1028, 0.09813, 0.09442, 0.09254, 0.09142, 0.09193, 0.09195, 0.09289, 0.09347",\
                 "0.1129, 0.1106, 0.1058, 0.1014, 0.09897, 0.0974, 0.09742, 0.09771, 0.09825, 0.09932",\
                 "0.1281, 0.1253, 0.1195, 0.1152, 0.1119, 0.1096, 0.1091, 0.109, 0.1093, 0.111",\
                 "0.152, 0.1489, 0.142, 0.1361, 0.1316, 0.1297, 0.1276, 0.1269, 0.1269, 0.1277",\
                 "0.1843, 0.1807, 0.173, 0.1651, 0.1595, 0.156, 0.1543, 0.153, 0.1518, 0.152",\
                 "0.2252, 0.2211, 0.2127, 0.2031, 0.1955, 0.1897, 0.1876, 0.1876, 0.1858, 0.1846",\
                 "0.2744, 0.2695, 0.2597, 0.2494, 0.2404, 0.2338, 0.229, 0.2277, 0.2274, 0.2269");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.3127, 0.3374, 0.4082, 0.518, 0.6682, 0.8692, 1.131, 1.46, 1.862, 2.34",\
                 "0.3225, 0.3472, 0.418, 0.5276, 0.6779, 0.8789, 1.141, 1.47, 1.871, 2.35",\
                 "0.3575, 0.3822, 0.4529, 0.5626, 0.7128, 0.9139, 1.175, 1.504, 1.906, 2.385",\
                 "0.4303, 0.4549, 0.5252, 0.6347, 0.7849, 0.9859, 1.247, 1.576, 1.978, 2.457",\
                 "0.5366, 0.5621, 0.6341, 0.7444, 0.8944, 1.095, 1.357, 1.685, 2.087, 2.566",\
                 "0.6574, 0.6848, 0.7606, 0.8746, 1.027, 1.228, 1.489, 1.817, 2.219, 2.697",\
                 "0.793, 0.8226, 0.9029, 1.021, 1.177, 1.378, 1.639, 1.967, 2.368, 2.846",\
                 "0.9413, 0.9732, 1.059, 1.183, 1.343, 1.547, 1.807, 2.135, 2.536, 3.014",\
                 "1.101, 1.136, 1.228, 1.359, 1.525, 1.733, 1.996, 2.322, 2.723, 3.201",\
                 "1.275, 1.312, 1.41, 1.548, 1.72, 1.934, 2.2, 2.528, 2.929, 3.406");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.3935, 0.4227, 0.5103, 0.656, 0.8663, 1.155, 1.534, 2.012, 2.595, 3.293",\
                 "0.3984, 0.4275, 0.5154, 0.6611, 0.8711, 1.16, 1.539, 2.017, 2.601, 3.298",\
                 "0.4188, 0.448, 0.5356, 0.6812, 0.8914, 1.18, 1.56, 2.038, 2.622, 3.317",\
                 "0.4635, 0.4926, 0.58, 0.7254, 0.9354, 1.224, 1.603, 2.081, 2.666, 3.361",\
                 "0.5244, 0.5538, 0.642, 0.7872, 0.9966, 1.285, 1.663, 2.141, 2.724, 3.421",\
                 "0.583, 0.6129, 0.7015, 0.8472, 1.058, 1.345, 1.723, 2.2, 2.783, 3.48",\
                 "0.6381, 0.6691, 0.7586, 0.9054, 1.115, 1.403, 1.781, 2.256, 2.84, 3.536",\
                 "0.6876, 0.72, 0.8123, 0.961, 1.17, 1.458, 1.834, 2.31, 2.892, 3.587",\
                 "0.727, 0.7615, 0.857, 1.008, 1.221, 1.508, 1.884, 2.358, 2.94, 3.634",\
                 "0.7558, 0.7921, 0.8918, 1.046, 1.262, 1.551, 1.928, 2.402, 2.983, 3.677");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1104, 0.1355, 0.2126, 0.3456, 0.5559, 0.8668, 1.288, 1.827, 2.482, 3.27",\
                 "0.1102, 0.1355, 0.2125, 0.3456, 0.5558, 0.8677, 1.289, 1.827, 2.481, 3.267",\
                 "0.1103, 0.1355, 0.2127, 0.3461, 0.556, 0.8668, 1.288, 1.827, 2.482, 3.269",\
                 "0.1111, 0.136, 0.2131, 0.346, 0.5564, 0.867, 1.289, 1.827, 2.484, 3.267",\
                 "0.1222, 0.1468, 0.2212, 0.3514, 0.5588, 0.8676, 1.289, 1.827, 2.484, 3.268",\
                 "0.1382, 0.1644, 0.238, 0.3668, 0.5678, 0.8712, 1.29, 1.825, 2.484, 3.265",\
                 "0.1574, 0.1844, 0.2576, 0.3846, 0.5808, 0.8786, 1.293, 1.827, 2.481, 3.269",\
                 "0.1772, 0.2072, 0.2828, 0.409, 0.5992, 0.889, 1.297, 1.828, 2.484, 3.264",\
                 "0.1986, 0.2292, 0.3104, 0.4378, 0.6258, 0.907, 1.306, 1.832, 2.484, 3.266",\
                 "0.2204, 0.2536, 0.338, 0.4674, 0.6562, 0.934, 1.327, 1.842, 2.489, 3.267");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1353, 0.1698, 0.2868, 0.4968, 0.8313, 1.318, 1.971, 2.796, 3.8, 5.004",\
                 "0.1351, 0.1707, 0.2866, 0.4969, 0.8318, 1.32, 1.97, 2.793, 3.801, 5.005",\
                 "0.1352, 0.17, 0.2869, 0.4968, 0.8325, 1.318, 1.97, 2.797, 3.806, 5.008",\
                 "0.1349, 0.1704, 0.2868, 0.4969, 0.8314, 1.319, 1.969, 2.798, 3.806, 5.009",\
                 "0.1405, 0.1746, 0.2904, 0.4996, 0.8342, 1.318, 1.969, 2.797, 3.802, 5.009",\
                 "0.1468, 0.181, 0.2966, 0.5064, 0.8382, 1.323, 1.971, 2.795, 3.8, 5.006",\
                 "0.157, 0.1906, 0.304, 0.5122, 0.8416, 1.324, 1.975, 2.793, 3.8, 5.008",\
                 "0.172, 0.2044, 0.3158, 0.5228, 0.8462, 1.327, 1.975, 2.797, 3.799, 4.997",\
                 "0.1858, 0.2196, 0.3306, 0.5374, 0.8586, 1.334, 1.975, 2.797, 3.801, 5.002",\
                 "0.2016, 0.2362, 0.347, 0.5542, 0.876, 1.347, 1.983, 2.805, 3.802, 4.998");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.3373, 0.3629, 0.4353, 0.5459, 0.6967, 0.8978, 1.159, 1.488, 1.89, 2.369",\
                 "0.3467, 0.3721, 0.4444, 0.5553, 0.706, 0.9072, 1.169, 1.498, 1.899, 2.378",\
                 "0.3817, 0.4074, 0.4795, 0.5903, 0.7411, 0.9424, 1.204, 1.533, 1.935, 2.414",\
                 "0.4556, 0.4812, 0.5532, 0.6635, 0.8143, 1.015, 1.277, 1.606, 2.008, 2.486",\
                 "0.5676, 0.5937, 0.6666, 0.7777, 0.9283, 1.129, 1.39, 1.719, 2.121, 2.599",\
                 "0.698, 0.7261, 0.803, 0.9177, 1.07, 1.271, 1.532, 1.86, 2.262, 2.74",\
                 "0.8466, 0.8768, 0.9583, 1.077, 1.232, 1.434, 1.695, 2.023, 2.424, 2.902",\
                 "1.013, 1.045, 1.132, 1.256, 1.415, 1.619, 1.879, 2.206, 2.607, 3.085",\
                 "1.195, 1.23, 1.322, 1.454, 1.618, 1.824, 2.085, 2.412, 2.812, 3.29",\
                 "1.395, 1.431, 1.53, 1.668, 1.839, 2.05, 2.314, 2.642, 3.041, 3.519");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.4155, 0.4444, 0.5323, 0.6778, 0.888, 1.177, 1.556, 2.034, 2.619, 3.313",\
                 "0.4198, 0.4487, 0.5365, 0.6822, 0.8923, 1.181, 1.56, 2.038, 2.623, 3.317",\
                 "0.4311, 0.4601, 0.5477, 0.6936, 0.9038, 1.193, 1.572, 2.05, 2.634, 3.331",\
                 "0.4574, 0.4864, 0.5739, 0.7192, 0.9293, 1.218, 1.597, 2.075, 2.658, 3.353",\
                 "0.497, 0.5267, 0.6151, 0.7607, 0.9704, 1.259, 1.637, 2.115, 2.699, 3.396",\
                 "0.5388, 0.5689, 0.6585, 0.8054, 1.016, 1.304, 1.682, 2.159, 2.742, 3.438",\
                 "0.5773, 0.6083, 0.6996, 0.8474, 1.057, 1.345, 1.723, 2.199, 2.782, 3.477",\
                 "0.6062, 0.6389, 0.7328, 0.8835, 1.095, 1.381, 1.758, 2.234, 2.817, 3.511",\
                 "0.6222, 0.6567, 0.7542, 0.908, 1.123, 1.411, 1.787, 2.263, 2.844, 3.538",\
                 "0.6238, 0.66, 0.7616, 0.9193, 1.138, 1.43, 1.808, 2.283, 2.864, 3.557");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1167, 0.1418, 0.2176, 0.3498, 0.5577, 0.8686, 1.29, 1.825, 2.485, 3.267",\
                 "0.1165, 0.1417, 0.2178, 0.3497, 0.5577, 0.8678, 1.29, 1.825, 2.485, 3.267",\
                 "0.1166, 0.1415, 0.2177, 0.3498, 0.5591, 0.8677, 1.289, 1.825, 2.485, 3.269",\
                 "0.1169, 0.1422, 0.218, 0.3501, 0.5587, 0.869, 1.289, 1.827, 2.482, 3.269",\
                 "0.1268, 0.1508, 0.2246, 0.3536, 0.5604, 0.8688, 1.29, 1.825, 2.481, 3.264",\
                 "0.1422, 0.1696, 0.2424, 0.368, 0.5684, 0.8726, 1.29, 1.825, 2.484, 3.265",\
                 "0.161, 0.1886, 0.2614, 0.3858, 0.5822, 0.879, 1.294, 1.826, 2.485, 3.269",\
                 "0.1806, 0.2094, 0.2854, 0.4078, 0.598, 0.8878, 1.297, 1.828, 2.485, 3.264",\
                 "0.202, 0.233, 0.3126, 0.4348, 0.6214, 0.9042, 1.305, 1.832, 2.484, 3.265",\
                 "0.2234, 0.2558, 0.3412, 0.4646, 0.6506, 0.927, 1.32, 1.839, 2.487, 3.267");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1354, 0.1704, 0.2865, 0.4972, 0.8317, 1.32, 1.969, 2.797, 3.807, 5.006",\
                 "0.1351, 0.1702, 0.2865, 0.497, 0.8318, 1.32, 1.97, 2.796, 3.807, 5.003",\
                 "0.135, 0.1702, 0.2869, 0.4971, 0.8329, 1.318, 1.969, 2.797, 3.804, 5.009",\
                 "0.1356, 0.1703, 0.2869, 0.4973, 0.8318, 1.318, 1.97, 2.797, 3.8, 5.003",\
                 "0.1403, 0.1747, 0.2904, 0.4996, 0.8326, 1.319, 1.971, 2.795, 3.806, 5.009",\
                 "0.1466, 0.1806, 0.2972, 0.506, 0.837, 1.32, 1.97, 2.797, 3.801, 5.008",\
                 "0.1568, 0.1902, 0.3056, 0.513, 0.8418, 1.324, 1.974, 2.793, 3.804, 4.998",\
                 "0.1686, 0.2038, 0.3174, 0.5248, 0.848, 1.327, 1.973, 2.794, 3.799, 5.001",\
                 "0.1844, 0.218, 0.3316, 0.541, 0.8656, 1.337, 1.978, 2.795, 3.801, 5.004",\
                 "0.1992, 0.235, 0.3482, 0.5592, 0.8844, 1.356, 1.99, 2.8, 3.801, 4.999");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.3598, 0.3861, 0.4599, 0.5719, 0.7238, 0.9252, 1.187, 1.516, 1.918, 2.397",\
                 "0.3681, 0.3945, 0.4682, 0.5806, 0.7321, 0.9337, 1.195, 1.524, 1.926, 2.405",\
                 "0.4035, 0.4297, 0.5034, 0.6159, 0.7674, 0.969, 1.231, 1.559, 1.961, 2.44",\
                 "0.4783, 0.5046, 0.578, 0.6902, 0.8415, 1.043, 1.305, 1.634, 2.035, 2.514",\
                 "0.5956, 0.6221, 0.696, 0.8081, 0.9594, 1.161, 1.422, 1.751, 2.152, 2.631",\
                 "0.7357, 0.7641, 0.8422, 0.9579, 1.111, 1.312, 1.573, 1.901, 2.302, 2.781",\
                 "0.8974, 0.9283, 1.01, 1.129, 1.285, 1.487, 1.748, 2.076, 2.477, 2.955",\
                 "1.081, 1.114, 1.202, 1.326, 1.485, 1.688, 1.949, 2.276, 2.677, 3.155",\
                 "1.287, 1.322, 1.416, 1.546, 1.71, 1.916, 2.176, 2.503, 2.903, 3.381",\
                 "1.515, 1.552, 1.652, 1.789, 1.959, 2.169, 2.432, 2.759, 3.159, 3.636");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.4284, 0.4575, 0.5451, 0.6907, 0.9009, 1.19, 1.569, 2.047, 2.63, 3.328",\
                 "0.433, 0.462, 0.5495, 0.6955, 0.9056, 1.194, 1.574, 2.052, 2.634, 3.332",\
                 "0.4402, 0.4693, 0.557, 0.7026, 0.9127, 1.202, 1.581, 2.059, 2.643, 3.339",\
                 "0.4508, 0.4798, 0.5674, 0.7129, 0.923, 1.212, 1.591, 2.069, 2.653, 3.347",\
                 "0.4675, 0.4972, 0.5856, 0.7315, 0.9414, 1.23, 1.608, 2.086, 2.67, 3.366",\
                 "0.4844, 0.5146, 0.6042, 0.7515, 0.962, 1.25, 1.628, 2.106, 2.69, 3.386",\
                 "0.4965, 0.5278, 0.6194, 0.7688, 0.9794, 1.267, 1.645, 2.122, 2.705, 3.399",\
                 "0.4959, 0.529, 0.6236, 0.776, 0.9899, 1.278, 1.655, 2.131, 2.714, 3.408",\
                 "0.4792, 0.5141, 0.6123, 0.7687, 0.9874, 1.278, 1.656, 2.131, 2.713, 3.407",\
                 "0.4438, 0.4805, 0.5827, 0.7434, 0.9667, 1.264, 1.645, 2.121, 2.702, 3.395");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.1226, 0.1479, 0.2235, 0.3548, 0.5615, 0.8697, 1.291, 1.828, 2.482, 3.268",\
                 "0.1228, 0.1476, 0.2233, 0.3541, 0.5611, 0.8701, 1.291, 1.826, 2.483, 3.27",\
                 "0.1223, 0.1479, 0.2237, 0.3541, 0.5612, 0.8701, 1.291, 1.826, 2.485, 3.269",\
                 "0.1226, 0.1476, 0.2238, 0.3542, 0.5626, 0.8708, 1.29, 1.828, 2.482, 3.27",\
                 "0.1296, 0.1544, 0.2288, 0.3578, 0.564, 0.871, 1.29, 1.826, 2.482, 3.268",\
                 "0.1472, 0.1718, 0.2454, 0.371, 0.57, 0.874, 1.29, 1.828, 2.482, 3.268",\
                 "0.1634, 0.19, 0.2642, 0.388, 0.5824, 0.8798, 1.293, 1.826, 2.482, 3.269",\
                 "0.1828, 0.2138, 0.288, 0.409, 0.5982, 0.888, 1.297, 1.83, 2.482, 3.265",\
                 "0.2046, 0.235, 0.314, 0.4348, 0.6198, 0.9014, 1.303, 1.831, 2.484, 3.265",\
                 "0.224, 0.258, 0.3412, 0.4636, 0.6476, 0.923, 1.318, 1.839, 2.488, 3.268");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.002731, 0.008806, 0.02041, 0.03848, 0.06385, 0.09722, 0.1393, 0.1906, 0.2518");
          values("0.135, 0.1699, 0.2866, 0.4968, 0.8317, 1.32, 1.97, 2.796, 3.801, 5.009",\
                 "0.1353, 0.1701, 0.2868, 0.4972, 0.8319, 1.318, 1.968, 2.797, 3.798, 5.001",\
                 "0.1355, 0.1698, 0.287, 0.497, 0.8321, 1.319, 1.969, 2.798, 3.806, 5.008",\
                 "0.1353, 0.1703, 0.2863, 0.4973, 0.8321, 1.319, 1.97, 2.795, 3.807, 5.004",\
                 "0.1396, 0.1745, 0.2903, 0.4996, 0.8328, 1.32, 1.971, 2.794, 3.801, 5.002",\
                 "0.1456, 0.1806, 0.2964, 0.5054, 0.8358, 1.32, 1.971, 2.794, 3.807, 5.009",\
                 "0.1554, 0.1906, 0.3058, 0.5134, 0.8414, 1.322, 1.973, 2.793, 3.8, 4.997",\
                 "0.1674, 0.2028, 0.3194, 0.5294, 0.8524, 1.327, 1.971, 2.794, 3.797, 5.003",\
                 "0.1804, 0.217, 0.334, 0.5482, 0.873, 1.342, 1.978, 2.795, 3.798, 4.995",\
                 "0.1954, 0.2324, 0.3496, 0.5668, 0.8956, 1.366, 1.997, 2.803, 3.801, 4.996");
        }
      }
    }
  }

