/*
 * 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__dffnq_1) {
    area : 65.856000 ;

    ff(IQ1,IQN1) {
      clocked_on : "(!CLKN)" ;
      next_state : "D" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLKN&!D" ;
      value : "0.00123093" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLKN&D" ;
      value : "0.0012195" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLKN&!D" ;
      value : "0.00113256" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLKN&D" ;
      value : "0.001143135" ;
    }

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

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

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

    pin(CLKN) {
      capacitance : 0.0035 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7 ;
      min_period : 1.966 ;
      min_pulse_width_high : 0.794 ;
      min_pulse_width_low : 0.806 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2564, 0.2558, 0.2568, 0.2651, 0.2848, 0.3166, 0.3614, 0.4201, \
                  0.4931, 0.5808");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.165, 0.1647, 0.1653, 0.1721, 0.1884, 0.2154, 0.2544, 0.3059, \
                  0.3706, 0.4491");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2564, 0.2558, 0.2567, 0.265, 0.2848, 0.3165, 0.3614, 0.42, 0.493, \
                  0.5808");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1652, 0.1649, 0.1653, 0.1723, 0.1885, 0.2155, 0.2546, 0.3061, \
                  0.3708, 0.4491");
        }
      }

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

        fall_constraint(scalar) {
          values("0.678");
        }

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

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

        fall_constraint(scalar) {
          values("0.806");
        }

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

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

        fall_constraint(scalar) {
          values("1.591");
        }
      }

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

        fall_constraint(scalar) {
          values("1.966");
        }
      }
    }

    pin(D) {
      capacitance : 0.00237 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7 ;
      nextstate_type : data ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!CLKN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.04765, 0.04684, 0.04922, 0.05742, 0.07242, 0.09475, 0.125, 0.1636, \
                  0.2111, 0.268");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.005157, 0.004872, 0.006166, 0.01203, 0.02383, 0.04225, 0.06769, \
                  0.1005, 0.1412, 0.1901");
        }
      }

      internal_power() {
        when : "CLKN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1667, 0.1663, 0.1677, 0.1743, 0.1885, 0.2115, 0.2437, 0.2856, \
                  0.3376, 0.4");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.107, 0.1067, 0.1079, 0.1133, 0.1244, 0.1423, 0.1679, 0.2016, \
                  0.2441, 0.2957");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.052, 0.067, 0.114, 0.204, 0.311, 0.439, 0.591, 0.749, 0.93, 1.14",\
                 "0.039, 0.053, 0.096, 0.197, 0.3, 0.428, 0.577, 0.735, 0.916, 1.128",\
                 "-0.015, 0.001, 0.042, 0.138, 0.248, 0.374, 0.519, 0.675, 0.861, 1.067",\
                 "-0.125, -0.105, -0.058, 0.026, 0.137, 0.262, 0.408, 0.561, 0.743, 0.951",\
                 "-0.273, -0.254, -0.211, -0.119, -0.017, 0.105, 0.248, 0.399, 0.58, 0.784",\
                 "-0.448, -0.437, -0.395, -0.304, -0.199, -0.08, 0.051, 0.205, 0.372, 0.571",\
                 "-0.669, -0.656, -0.609, -0.524, -0.419, -0.311, -0.179, -0.027, 0.143, 0.33",\
                 "-0.914, -0.903, -0.859, -0.77, -0.679, -0.571, -0.438, -0.3, -0.136, 0.053",\
                 "-1.198, -1.187, -1.146, -1.059, -0.968, -0.87, -0.743, -0.611, -0.446, -0.266",\
                 "-1.515, -1.506, -1.462, -1.381, -1.301, -1.2, -1.089, -0.953, -0.801, -0.618");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.252, 0.266, 0.319, 0.418, 0.563, 0.728, 0.913, 1.128, 1.356, 1.618",\
                 "0.244, 0.256, 0.31, 0.406, 0.549, 0.723, 0.904, 1.119, 1.352, 1.609",\
                 "0.22, 0.226, 0.278, 0.377, 0.52, 0.688, 0.879, 1.09, 1.323, 1.577",\
                 "0.185, 0.197, 0.251, 0.344, 0.491, 0.657, 0.846, 1.056, 1.288, 1.547",\
                 "0.176, 0.191, 0.244, 0.342, 0.482, 0.65, 0.843, 1.045, 1.279, 1.534",\
                 "0.197, 0.214, 0.255, 0.353, 0.498, 0.669, 0.849, 1.062, 1.291, 1.545",\
                 "0.248, 0.261, 0.306, 0.401, 0.544, 0.709, 0.895, 1.11, 1.343, 1.591",\
                 "0.332, 0.348, 0.391, 0.489, 0.624, 0.792, 0.979, 1.181, 1.412, 1.664",\
                 "0.463, 0.482, 0.526, 0.613, 0.748, 0.909, 1.087, 1.296, 1.527, 1.78",\
                 "0.645, 0.66, 0.701, 0.792, 0.915, 1.066, 1.246, 1.448, 1.672, 1.923");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.527, 0.516, 0.465, 0.367, 0.246, 0.101, -0.046, -0.223, -0.414, -0.627",\
                 "0.538, 0.527, 0.472, 0.373, 0.257, 0.115, -0.038, -0.204, -0.401, -0.612",\
                 "0.594, 0.583, 0.528, 0.431, 0.31, 0.17, 0.014, -0.157, -0.344, -0.556",\
                 "0.703, 0.691, 0.636, 0.546, 0.421, 0.28, 0.128, -0.044, -0.233, -0.446",\
                 "0.873, 0.863, 0.813, 0.712, 0.589, 0.447, 0.299, 0.125, -0.067, -0.276",\
                 "1.104, 1.088, 1.035, 0.937, 0.81, 0.669, 0.51, 0.335, 0.144, -0.068",\
                 "1.368, 1.352, 1.299, 1.201, 1.079, 0.927, 0.769, 0.595, 0.399, 0.19",\
                 "1.683, 1.671, 1.612, 1.513, 1.386, 1.235, 1.078, 0.9, 0.705, 0.489",\
                 "2.049, 2.038, 1.982, 1.877, 1.744, 1.592, 1.43, 1.246, 1.05, 0.841",\
                 "2.455, 2.452, 2.386, 2.29, 2.15, 1.99, 1.819, 1.638, 1.442, 1.238");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.269, 0.257, 0.21, 0.113, -0.026, -0.188, -0.382, -0.603, -0.845, -1.106",\
                 "0.279, 0.271, 0.215, 0.122, -0.019, -0.181, -0.372, -0.588, -0.837, -1.093",\
                 "0.319, 0.304, 0.25, 0.152, 0.016, -0.155, -0.339, -0.562, -0.799, -1.066",\
                 "0.37, 0.356, 0.307, 0.201, 0.067, -0.103, -0.293, -0.512, -0.75, -1.014",\
                 "0.418, 0.405, 0.351, 0.252, 0.112, -0.061, -0.249, -0.466, -0.704, -0.969",\
                 "0.449, 0.437, 0.385, 0.286, 0.142, -0.026, -0.222, -0.433, -0.681, -0.941",\
                 "0.465, 0.449, 0.392, 0.293, 0.154, -0.021, -0.213, -0.43, -0.675, -0.937",\
                 "0.447, 0.44, 0.378, 0.275, 0.131, -0.037, -0.227, -0.45, -0.694, -0.959",\
                 "0.4, 0.388, 0.331, 0.233, 0.083, -0.083, -0.274, -0.5, -0.738, -1.007",\
                 "0.321, 0.303, 0.249, 0.153, 0.003, -0.17, -0.359, -0.58, -0.825, -1.086");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.228 ;
      max_transition : 7 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "CLKN" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.002567, 0.008068, 0.01857, 0.03494, 0.0579, 0.08812, 0.1262, 0.1727, 0.228");
          values("0.2969, 0.2952, 0.2924, 0.2907, 0.2896, 0.2888, 0.2884, 0.2881, 0.2879, 0.2878",\
                 "0.297, 0.2952, 0.2926, 0.2907, 0.2896, 0.2889, 0.2885, 0.2882, 0.2881, 0.2878",\
                 "0.2968, 0.2951, 0.2923, 0.2906, 0.2895, 0.2888, 0.2883, 0.288, 0.2878, 0.2877",\
                 "0.2972, 0.2956, 0.2927, 0.291, 0.2899, 0.2892, 0.2888, 0.2885, 0.2883, 0.2881",\
                 "0.2992, 0.2975, 0.2949, 0.2929, 0.2919, 0.2912, 0.2908, 0.2905, 0.2903, 0.2902",\
                 "0.3024, 0.3007, 0.2978, 0.296, 0.295, 0.2942, 0.2938, 0.2934, 0.2933, 0.2931",\
                 "0.3069, 0.3052, 0.3024, 0.3005, 0.2995, 0.2988, 0.2984, 0.298, 0.2979, 0.2977",\
                 "0.3126, 0.3109, 0.3079, 0.3061, 0.3051, 0.3043, 0.304, 0.3036, 0.3034, 0.3033",\
                 "0.3194, 0.3176, 0.3147, 0.3127, 0.3117, 0.311, 0.3105, 0.3103, 0.31, 0.3098",\
                 "0.3271, 0.3255, 0.3224, 0.3204, 0.3193, 0.3185, 0.3181, 0.3177, 0.3176, 0.3174");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.002567, 0.008068, 0.01857, 0.03494, 0.0579, 0.08812, 0.1262, 0.1727, 0.228");
          values("0.4048, 0.4031, 0.3995, 0.3975, 0.3963, 0.3961, 0.3966, 0.3972, 0.3979, 0.4001",\
                 "0.4047, 0.4031, 0.3997, 0.3975, 0.3963, 0.3961, 0.3966, 0.3973, 0.3979, 0.3998",\
                 "0.4048, 0.4032, 0.3995, 0.3977, 0.3964, 0.3963, 0.3967, 0.3974, 0.3981, 0.4005",\
                 "0.4057, 0.404, 0.4007, 0.3985, 0.3972, 0.3971, 0.3978, 0.3984, 0.3988, 0.4009",\
                 "0.4082, 0.4065, 0.4032, 0.401, 0.3997, 0.3996, 0.4001, 0.4007, 0.4013, 0.404",\
                 "0.4113, 0.41, 0.4063, 0.4043, 0.403, 0.4029, 0.4036, 0.4045, 0.405, 0.4077",\
                 "0.4157, 0.414, 0.4108, 0.4089, 0.4075, 0.4074, 0.4079, 0.4086, 0.4092, 0.4127",\
                 "0.4207, 0.419, 0.4157, 0.4135, 0.4126, 0.4122, 0.4128, 0.413, 0.4139, 0.4189",\
                 "0.4254, 0.424, 0.4207, 0.4186, 0.4173, 0.4182, 0.4183, 0.4188, 0.4202, 0.4266",\
                 "0.432, 0.4305, 0.4271, 0.4248, 0.4233, 0.4228, 0.4243, 0.4258, 0.4271, 0.439");
        }
      }

      timing() {
        related_pin : "CLKN" ;
        timing_type : falling_edge ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.002567, 0.008068, 0.01857, 0.03494, 0.0579, 0.08812, 0.1262, 0.1727, 0.228");
          values("1.005, 1.032, 1.111, 1.235, 1.404, 1.628, 1.92, 2.287, 2.735, 3.27",\
                 "1.018, 1.045, 1.123, 1.247, 1.416, 1.641, 1.932, 2.3, 2.748, 3.282",\
                 "1.068, 1.095, 1.174, 1.298, 1.466, 1.691, 1.983, 2.35, 2.798, 3.333",\
                 "1.171, 1.198, 1.277, 1.401, 1.569, 1.794, 2.086, 2.453, 2.901, 3.435",\
                 "1.321, 1.348, 1.426, 1.551, 1.719, 1.944, 2.236, 2.603, 3.051, 3.586",\
                 "1.497, 1.525, 1.603, 1.727, 1.896, 2.12, 2.412, 2.779, 3.228, 3.762",\
                 "1.699, 1.726, 1.805, 1.929, 2.098, 2.322, 2.614, 2.981, 3.429, 3.963",\
                 "1.923, 1.951, 2.029, 2.153, 2.322, 2.547, 2.839, 3.205, 3.654, 4.188",\
                 "2.169, 2.196, 2.275, 2.399, 2.568, 2.792, 3.084, 3.451, 3.899, 4.433",\
                 "2.436, 2.463, 2.542, 2.666, 2.836, 3.06, 3.352, 3.719, 4.167, 4.701");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.002567, 0.008068, 0.01857, 0.03494, 0.0579, 0.08812, 0.1262, 0.1727, 0.228");
          values("1.275, 1.307, 1.407, 1.586, 1.861, 2.248, 2.757, 3.399, 4.182, 5.117",\
                 "1.288, 1.32, 1.42, 1.599, 1.874, 2.26, 2.77, 3.411, 4.194, 5.13",\
                 "1.338, 1.37, 1.47, 1.649, 1.924, 2.31, 2.82, 3.462, 4.245, 5.181",\
                 "1.443, 1.475, 1.575, 1.754, 2.029, 2.415, 2.925, 3.567, 4.349, 5.285",\
                 "1.598, 1.63, 1.73, 1.909, 2.184, 2.57, 3.079, 3.721, 4.504, 5.44",\
                 "1.783, 1.815, 1.915, 2.094, 2.369, 2.755, 3.264, 3.906, 4.689, 5.624",\
                 "1.995, 2.027, 2.127, 2.306, 2.581, 2.968, 3.477, 4.118, 4.902, 5.837",\
                 "2.233, 2.264, 2.365, 2.544, 2.818, 3.205, 3.714, 4.356, 5.139, 6.074",\
                 "2.491, 2.523, 2.623, 2.803, 3.078, 3.464, 3.974, 4.615, 5.399, 6.332",\
                 "2.773, 2.805, 2.905, 3.084, 3.359, 3.745, 4.254, 4.896, 5.679, 6.612");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.002567, 0.008068, 0.01857, 0.03494, 0.0579, 0.08812, 0.1262, 0.1727, 0.228");
          values("0.1338, 0.1616, 0.2508, 0.4066, 0.6488, 1.006, 1.492, 2.112, 2.87, 3.775",\
                 "0.1336, 0.1618, 0.2506, 0.407, 0.649, 1.006, 1.492, 2.109, 2.87, 3.77",\
                 "0.1334, 0.1616, 0.2508, 0.4068, 0.6486, 1.006, 1.492, 2.111, 2.87, 3.775",\
                 "0.134, 0.162, 0.2508, 0.407, 0.6482, 1.006, 1.491, 2.109, 2.869, 3.772",\
                 "0.134, 0.1616, 0.2508, 0.407, 0.6482, 1.006, 1.492, 2.111, 2.87, 3.773",\
                 "0.1336, 0.1616, 0.2508, 0.4072, 0.6486, 1.006, 1.492, 2.111, 2.87, 3.774",\
                 "0.134, 0.1622, 0.2508, 0.4074, 0.6474, 1.004, 1.492, 2.109, 2.869, 3.773",\
                 "0.1342, 0.1618, 0.251, 0.4074, 0.648, 1.004, 1.49, 2.11, 2.867, 3.772",\
                 "0.1346, 0.1626, 0.2514, 0.4076, 0.649, 1.005, 1.491, 2.108, 2.865, 3.768",\
                 "0.1352, 0.1632, 0.252, 0.4078, 0.6494, 1.005, 1.49, 2.108, 2.866, 3.767");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.002567, 0.008068, 0.01857, 0.03494, 0.0579, 0.08812, 0.1262, 0.1727, 0.228");
          values("0.1638, 0.2074, 0.3602, 0.6644, 1.153, 1.849, 2.761, 3.92, 5.334, 7.005",\
                 "0.1644, 0.2074, 0.36, 0.6642, 1.153, 1.849, 2.762, 3.92, 5.333, 7.005",\
                 "0.1638, 0.2074, 0.36, 0.6644, 1.154, 1.848, 2.763, 3.921, 5.334, 7.005",\
                 "0.1638, 0.2074, 0.36, 0.6644, 1.152, 1.848, 2.763, 3.917, 5.332, 7.005",\
                 "0.1638, 0.2072, 0.36, 0.6644, 1.153, 1.849, 2.761, 3.92, 5.334, 7.005",\
                 "0.163, 0.2068, 0.3602, 0.6642, 1.152, 1.846, 2.765, 3.922, 5.324, 7.004",\
                 "0.1632, 0.2064, 0.3596, 0.6642, 1.154, 1.847, 2.766, 3.92, 5.334, 7.004",\
                 "0.1634, 0.2066, 0.3598, 0.6644, 1.153, 1.846, 2.765, 3.915, 5.324, 7.005",\
                 "0.1626, 0.2068, 0.3596, 0.6644, 1.154, 1.849, 2.762, 3.92, 5.333, 7.001",\
                 "0.1628, 0.2066, 0.3594, 0.6644, 1.154, 1.848, 2.762, 3.916, 5.324, 7.012");
        }
      }
    }
  }

