/*
 * 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.
 */

  symbol ("gf180mcu_fd_sc_mcu9t5v0__dffnrsnq_2") {
    set_minimum_boundary (-130 * SCALE, -90 * SCALE, 130 * SCALE, 90 * SCALE);
    line (-110 * SCALE, -90 * SCALE, -110 * SCALE, 90 * SCALE);
    line (-110 * SCALE, 90 * SCALE, 110 * SCALE, 90 * SCALE);
    line (110 * SCALE, 90 * SCALE, 110 * SCALE, -90 * SCALE);
    line (110 * SCALE, -90 * SCALE, -110 * SCALE, -90 * SCALE);
    line (-130 * SCALE, 60 * SCALE, -110 * SCALE, 60 * SCALE);
    line (-130 * SCALE, 30 * SCALE, -110 * SCALE, 30 * SCALE);
    line (-130 * SCALE, -30 * SCALE, -110 * SCALE, -30 * SCALE);
    line (-130 * SCALE, -60 * SCALE, -110 * SCALE, -60 * SCALE);
    line (110 * SCALE, 0 * SCALE, 130 * SCALE, 0 * SCALE);
    line (126 * SCALE, -4 * SCALE, 126 * SCALE, 4 * SCALE);
    line (126 * SCALE, 4 * SCALE, 154 * SCALE, 4 * SCALE);
    line (154 * SCALE, 4 * SCALE, 154 * SCALE, -4 * SCALE);
    line (154 * SCALE, -4 * SCALE, 126 * SCALE, -4 * SCALE);
    pin ("Q", 140 * SCALE, 0 * SCALE, ANY_ROTATION);
    line (-154 * SCALE, -64 * SCALE, -154 * SCALE, -56 * SCALE);
    line (-154 * SCALE, -56 * SCALE, -126 * SCALE, -56 * SCALE);
    line (-126 * SCALE, -56 * SCALE, -126 * SCALE, -64 * SCALE);
    line (-126 * SCALE, -64 * SCALE, -154 * SCALE, -64 * SCALE);
    pin ("CLKN", -140 * SCALE, -60 * SCALE, ANY_ROTATION);
    line (-154 * SCALE, -34 * SCALE, -154 * SCALE, -26 * SCALE);
    line (-154 * SCALE, -26 * SCALE, -126 * SCALE, -26 * SCALE);
    line (-126 * SCALE, -26 * SCALE, -126 * SCALE, -34 * SCALE);
    line (-126 * SCALE, -34 * SCALE, -154 * SCALE, -34 * SCALE);
    pin ("SETN", -140 * SCALE, -30 * SCALE, ANY_ROTATION);
    line (-154 * SCALE, 26 * SCALE, -154 * SCALE, 34 * SCALE);
    line (-154 * SCALE, 34 * SCALE, -126 * SCALE, 34 * SCALE);
    line (-126 * SCALE, 34 * SCALE, -126 * SCALE, 26 * SCALE);
    line (-126 * SCALE, 26 * SCALE, -154 * SCALE, 26 * SCALE);
    pin ("RN", -140 * SCALE, 30 * SCALE, ANY_ROTATION);
    line (-154 * SCALE, 56 * SCALE, -154 * SCALE, 64 * SCALE);
    line (-154 * SCALE, 64 * SCALE, -126 * SCALE, 64 * SCALE);
    line (-126 * SCALE, 64 * SCALE, -126 * SCALE, 56 * SCALE);
    line (-126 * SCALE, 56 * SCALE, -154 * SCALE, 56 * SCALE);
    pin ("D", -140 * SCALE, 60 * SCALE, ANY_ROTATION);
  } /* end of symbol "gf180mcu_fd_sc_mcu9t5v0__dffnrsnq_2" */
