/*
 * 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__oai33_2") {
    set_minimum_boundary (-100 * SCALE, -120 * SCALE, 100 * SCALE, 120 * SCALE);
    line (-80 * SCALE, -120 * SCALE, -80 * SCALE, 120 * SCALE);
    line (-80 * SCALE, 120 * SCALE, 80 * SCALE, 120 * SCALE);
    line (80 * SCALE, 120 * SCALE, 80 * SCALE, -120 * SCALE);
    line (80 * SCALE, -120 * SCALE, -80 * SCALE, -120 * SCALE);
    line (-100 * SCALE, 90 * SCALE, -80 * SCALE, 90 * SCALE);
    line (-100 * SCALE, 60 * SCALE, -80 * SCALE, 60 * SCALE);
    line (-100 * SCALE, 30 * SCALE, -80 * SCALE, 30 * SCALE);
    line (-100 * SCALE, -30 * SCALE, -80 * SCALE, -30 * SCALE);
    line (-100 * SCALE, -60 * SCALE, -80 * SCALE, -60 * SCALE);
    line (-100 * SCALE, -90 * SCALE, -80 * SCALE, -90 * SCALE);
    line (80 * SCALE, 0 * SCALE, 100 * SCALE, 0 * SCALE);
    line (96 * SCALE, -4 * SCALE, 96 * SCALE, 4 * SCALE);
    line (96 * SCALE, 4 * SCALE, 124 * SCALE, 4 * SCALE);
    line (124 * SCALE, 4 * SCALE, 124 * SCALE, -4 * SCALE);
    line (124 * SCALE, -4 * SCALE, 96 * SCALE, -4 * SCALE);
    pin ("ZN", 110 * SCALE, 0 * SCALE, ANY_ROTATION);
    line (-124 * SCALE, -94 * SCALE, -124 * SCALE, -86 * SCALE);
    line (-124 * SCALE, -86 * SCALE, -96 * SCALE, -86 * SCALE);
    line (-96 * SCALE, -86 * SCALE, -96 * SCALE, -94 * SCALE);
    line (-96 * SCALE, -94 * SCALE, -124 * SCALE, -94 * SCALE);
    pin ("B3", -110 * SCALE, -90 * SCALE, ANY_ROTATION);
    line (-124 * SCALE, -64 * SCALE, -124 * SCALE, -56 * SCALE);
    line (-124 * SCALE, -56 * SCALE, -96 * SCALE, -56 * SCALE);
    line (-96 * SCALE, -56 * SCALE, -96 * SCALE, -64 * SCALE);
    line (-96 * SCALE, -64 * SCALE, -124 * SCALE, -64 * SCALE);
    pin ("B2", -110 * SCALE, -60 * SCALE, ANY_ROTATION);
    line (-124 * SCALE, -34 * SCALE, -124 * SCALE, -26 * SCALE);
    line (-124 * SCALE, -26 * SCALE, -96 * SCALE, -26 * SCALE);
    line (-96 * SCALE, -26 * SCALE, -96 * SCALE, -34 * SCALE);
    line (-96 * SCALE, -34 * SCALE, -124 * SCALE, -34 * SCALE);
    pin ("B1", -110 * SCALE, -30 * SCALE, ANY_ROTATION);
    line (-124 * SCALE, 26 * SCALE, -124 * SCALE, 34 * SCALE);
    line (-124 * SCALE, 34 * SCALE, -96 * SCALE, 34 * SCALE);
    line (-96 * SCALE, 34 * SCALE, -96 * SCALE, 26 * SCALE);
    line (-96 * SCALE, 26 * SCALE, -124 * SCALE, 26 * SCALE);
    pin ("A3", -110 * SCALE, 30 * SCALE, ANY_ROTATION);
    line (-124 * SCALE, 56 * SCALE, -124 * SCALE, 64 * SCALE);
    line (-124 * SCALE, 64 * SCALE, -96 * SCALE, 64 * SCALE);
    line (-96 * SCALE, 64 * SCALE, -96 * SCALE, 56 * SCALE);
    line (-96 * SCALE, 56 * SCALE, -124 * SCALE, 56 * SCALE);
    pin ("A2", -110 * SCALE, 60 * SCALE, ANY_ROTATION);
    line (-124 * SCALE, 86 * SCALE, -124 * SCALE, 94 * SCALE);
    line (-124 * SCALE, 94 * SCALE, -96 * SCALE, 94 * SCALE);
    line (-96 * SCALE, 94 * SCALE, -96 * SCALE, 86 * SCALE);
    line (-96 * SCALE, 86 * SCALE, -124 * SCALE, 86 * SCALE);
    pin ("A1", -110 * SCALE, 90 * SCALE, ANY_ROTATION);
  } /* end of symbol "gf180mcu_fd_sc_mcu9t5v0__oai33_2" */
