# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: tetris.proto

from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database

# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from . import utils_pb2 as utils__pb2
from . import raw_pb2 as raw__pb2
from . import circuit_pb2 as circuit__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
    name="tetris.proto",
    package="vlsir.tetris",
    syntax="proto3",
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
    serialized_pb=b'\n\x0ctetris.proto\x12\x0cvlsir.tetris\x1a\x0butils.proto\x1a\traw.proto\x1a\rcircuit.proto"i\n\x07Library\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\x12!\n\x05\x63\x65lls\x18\n \x03(\x0b\x32\x12.vlsir.tetris.Cell\x12+\n\x06\x61uthor\x18\x14 \x01(\x0b\x32\x1b.vlsir.utils.AuthorMetadata"\xb8\x01\n\x04\x43\x65ll\x12\x0c\n\x04name\x18\x01 \x01(\t\x12+\n\tinterface\x18\n \x01(\x0b\x32\x18.vlsir.circuit.Interface\x12%\n\x06module\x18\x0b \x01(\x0b\x32\x15.vlsir.circuit.Module\x12(\n\x08\x61\x62stract\x18\x0c \x01(\x0b\x32\x16.vlsir.tetris.Abstract\x12$\n\x06layout\x18\r \x01(\x0b\x32\x14.vlsir.tetris.Layout"\xbc\x01\n\x06Layout\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x07outline\x18\n \x01(\x0b\x32\x15.vlsir.tetris.Outline\x12)\n\tinstances\x18\x14 \x03(\x0b\x32\x16.vlsir.tetris.Instance\x12)\n\x0b\x61ssignments\x18\x15 \x03(\x0b\x32\x14.vlsir.tetris.Assign\x12&\n\x04\x63uts\x18\x16 \x03(\x0b\x32\x18.vlsir.tetris.TrackCross";\n\x06\x41ssign\x12\x0b\n\x03net\x18\x01 \x01(\t\x12$\n\x02\x61t\x18\x02 \x01(\x0b\x32\x18.vlsir.tetris.TrackCross"Z\n\nTrackCross\x12%\n\x05track\x18\x01 \x01(\x0b\x32\x16.vlsir.tetris.TrackRef\x12%\n\x05\x63ross\x18\x02 \x01(\x0b\x32\x16.vlsir.tetris.TrackRef"(\n\x08TrackRef\x12\r\n\x05layer\x18\x01 \x01(\x03\x12\r\n\x05track\x18\x02 \x01(\x03"/\n\x07Outline\x12\t\n\x01x\x18\x01 \x03(\x03\x12\t\n\x01y\x18\x02 \x03(\x03\x12\x0e\n\x06metals\x18\x03 \x01(\x03"k\n\x08\x41\x62stract\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x07outline\x18\n \x01(\x0b\x32\x15.vlsir.tetris.Outline\x12)\n\x05ports\x18\x14 \x03(\x0b\x32\x1a.vlsir.tetris.AbstractPort"\x97\x04\n\x0c\x41\x62stractPort\x12\x0b\n\x03net\x18\x01 \x01(\t\x12\x33\n\x04\x65\x64ge\x18\n \x01(\x0b\x32#.vlsir.tetris.AbstractPort.EdgePortH\x00\x12<\n\tztop_edge\x18\x0b \x01(\x0b\x32\'.vlsir.tetris.AbstractPort.ZTopEdgePortH\x00\x12:\n\nztop_inner\x18\x0c \x01(\x0b\x32$.vlsir.tetris.AbstractPort.ZTopInnerH\x00\x1a\x64\n\x08\x45\x64gePort\x12%\n\x05track\x18\x01 \x01(\x0b\x32\x16.vlsir.tetris.TrackRef\x12\x31\n\x04side\x18\x02 \x01(\x0e\x32#.vlsir.tetris.AbstractPort.PortSide\x1av\n\x0cZTopEdgePort\x12\r\n\x05track\x18\x01 \x01(\x03\x12\x31\n\x04side\x18\x02 \x01(\x0e\x32#.vlsir.tetris.AbstractPort.PortSide\x12$\n\x04into\x18\x03 \x01(\x0b\x32\x16.vlsir.tetris.TrackRef\x1a\x33\n\tZTopInner\x12&\n\x04locs\x18\x01 \x03(\x0b\x32\x18.vlsir.tetris.TrackCross"0\n\x08PortSide\x12\x12\n\x0e\x42OTTOM_OR_LEFT\x10\x00\x12\x10\n\x0cTOP_OR_RIGHT\x10\x01\x42\x06\n\x04kind"\x8d\x01\n\x08Instance\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x04\x63\x65ll\x18\x03 \x01(\x0b\x32\x16.vlsir.utils.Reference\x12 \n\x03loc\x18\x04 \x01(\x0b\x32\x13.vlsir.tetris.Place\x12\x15\n\rreflect_horiz\x18\x06 \x01(\x08\x12\x14\n\x0creflect_vert\x18\x07 \x01(\x08"X\n\x05Place\x12\x1f\n\x03\x61\x62s\x18\x01 \x01(\x0b\x32\x10.vlsir.raw.PointH\x00\x12%\n\x03rel\x18\x02 \x01(\x0b\x32\x16.vlsir.tetris.RelPlaceH\x00\x42\x07\n\x05place"\n\n\x08RelPlace"\xce\x01\n\x05Stack\x12\x1f\n\x05units\x18\x01 \x01(\x0e\x32\x10.vlsir.raw.Units\x12*\n\x04prim\x18\x02 \x01(\x0b\x32\x1c.vlsir.tetris.PrimitiveLayer\x12(\n\x06metals\x18\x03 \x03(\x0b\x32\x18.vlsir.tetris.MetalLayer\x12$\n\x04vias\x18\x04 \x03(\x0b\x32\x16.vlsir.tetris.ViaLayer\x12(\n\x0e\x62oundary_layer\x18\x0b \x01(\x0b\x32\x10.vlsir.raw.Layer"{\n\tLayerEnum\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.vlsir.tetris.LayerEnum.LayerType\x12\r\n\x05index\x18\x02 \x01(\x03".\n\tLayerType\x12\r\n\tPRIMITIVE\x10\x00\x12\t\n\x05METAL\x10\x01\x12\x07\n\x03VIA\x10\x02"\xd1\x02\n\nMetalLayer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x03\x64ir\x18\x02 \x01(\x0e\x32\x1c.vlsir.tetris.MetalLayer.Dir\x12\x0f\n\x07\x63utsize\x18\x03 \x01(\x03\x12(\n\x07\x65ntries\x18\x04 \x03(\x0b\x32\x17.vlsir.tetris.TrackSpec\x12\x0e\n\x06offset\x18\x05 \x01(\x03\x12\x0f\n\x07overlap\x18\x06 \x01(\x03\x12\x0c\n\x04\x66lip\x18\x07 \x01(\x08\x12\x34\n\x04prim\x18\x08 \x01(\x0e\x32&.vlsir.tetris.MetalLayer.PrimitiveMode\x12\x1d\n\x03raw\x18\x0b \x01(\x0b\x32\x10.vlsir.raw.Layer"\x1a\n\x03\x44ir\x12\t\n\x05HORIZ\x10\x00\x12\x08\n\x04VERT\x10\x01"/\n\rPrimitiveMode\x12\x08\n\x04PRIM\x10\x00\x12\t\n\x05SPLIT\x10\x01\x12\t\n\x05STACK\x10\x02"\xa3\x01\n\x08ViaLayer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x03top\x18\x02 \x01(\x0b\x32\x17.vlsir.tetris.LayerEnum\x12$\n\x03\x62ot\x18\x03 \x01(\x0b\x32\x17.vlsir.tetris.LayerEnum\x12\x1e\n\x04size\x18\x04 \x01(\x0b\x32\x10.vlsir.tetris.Xy\x12\x1d\n\x03raw\x18\x0b \x01(\x0b\x32\x10.vlsir.raw.Layer"3\n\x0ePrimitiveLayer\x12!\n\x07pitches\x18\x01 \x01(\x0b\x32\x10.vlsir.tetris.Xy"\xce\x02\n\tTrackSpec\x12\x33\n\x05\x65ntry\x18\x01 \x01(\x0b\x32".vlsir.tetris.TrackSpec.TrackEntryH\x00\x12\x30\n\x06repeat\x18\x02 \x01(\x0b\x32\x1e.vlsir.tetris.TrackSpec.RepeatH\x00\x1a\x84\x01\n\nTrackEntry\x12;\n\x05ttype\x18\x01 \x01(\x0e\x32,.vlsir.tetris.TrackSpec.TrackEntry.TrackType\x12\r\n\x05width\x18\x02 \x01(\x03"*\n\tTrackType\x12\x07\n\x03GAP\x10\x00\x12\n\n\x06SIGNAL\x10\x01\x12\x08\n\x04RAIL\x10\x02\x1aK\n\x06Repeat\x12\x33\n\x07\x65ntries\x18\x01 \x03(\x0b\x32".vlsir.tetris.TrackSpec.TrackEntry\x12\x0c\n\x04nrep\x18\x02 \x01(\x03\x42\x06\n\x04spec"\x1a\n\x02Xy\x12\t\n\x01x\x18\x01 \x01(\x03\x12\t\n\x01y\x18\x02 \x01(\x03\x62\x06proto3',
    dependencies=[utils__pb2.DESCRIPTOR, raw__pb2.DESCRIPTOR, circuit__pb2.DESCRIPTOR,],
)


_ABSTRACTPORT_PORTSIDE = _descriptor.EnumDescriptor(
    name="PortSide",
    full_name="vlsir.tetris.AbstractPort.PortSide",
    filename=None,
    file=DESCRIPTOR,
    create_key=_descriptor._internal_create_key,
    values=[
        _descriptor.EnumValueDescriptor(
            name="BOTTOM_OR_LEFT",
            index=0,
            number=0,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="TOP_OR_RIGHT",
            index=1,
            number=1,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    containing_type=None,
    serialized_options=None,
    serialized_start=1387,
    serialized_end=1435,
)
_sym_db.RegisterEnumDescriptor(_ABSTRACTPORT_PORTSIDE)

_LAYERENUM_LAYERTYPE = _descriptor.EnumDescriptor(
    name="LayerType",
    full_name="vlsir.tetris.LayerEnum.LayerType",
    filename=None,
    file=DESCRIPTOR,
    create_key=_descriptor._internal_create_key,
    values=[
        _descriptor.EnumValueDescriptor(
            name="PRIMITIVE",
            index=0,
            number=0,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="METAL",
            index=1,
            number=1,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="VIA",
            index=2,
            number=2,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    containing_type=None,
    serialized_options=None,
    serialized_start=1977,
    serialized_end=2023,
)
_sym_db.RegisterEnumDescriptor(_LAYERENUM_LAYERTYPE)

_METALLAYER_DIR = _descriptor.EnumDescriptor(
    name="Dir",
    full_name="vlsir.tetris.MetalLayer.Dir",
    filename=None,
    file=DESCRIPTOR,
    create_key=_descriptor._internal_create_key,
    values=[
        _descriptor.EnumValueDescriptor(
            name="HORIZ",
            index=0,
            number=0,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="VERT",
            index=1,
            number=1,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    containing_type=None,
    serialized_options=None,
    serialized_start=2288,
    serialized_end=2314,
)
_sym_db.RegisterEnumDescriptor(_METALLAYER_DIR)

_METALLAYER_PRIMITIVEMODE = _descriptor.EnumDescriptor(
    name="PrimitiveMode",
    full_name="vlsir.tetris.MetalLayer.PrimitiveMode",
    filename=None,
    file=DESCRIPTOR,
    create_key=_descriptor._internal_create_key,
    values=[
        _descriptor.EnumValueDescriptor(
            name="PRIM",
            index=0,
            number=0,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="SPLIT",
            index=1,
            number=1,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="STACK",
            index=2,
            number=2,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    containing_type=None,
    serialized_options=None,
    serialized_start=2316,
    serialized_end=2363,
)
_sym_db.RegisterEnumDescriptor(_METALLAYER_PRIMITIVEMODE)

_TRACKSPEC_TRACKENTRY_TRACKTYPE = _descriptor.EnumDescriptor(
    name="TrackType",
    full_name="vlsir.tetris.TrackSpec.TrackEntry.TrackType",
    filename=None,
    file=DESCRIPTOR,
    create_key=_descriptor._internal_create_key,
    values=[
        _descriptor.EnumValueDescriptor(
            name="GAP",
            index=0,
            number=0,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="SIGNAL",
            index=1,
            number=1,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.EnumValueDescriptor(
            name="RAIL",
            index=2,
            number=2,
            serialized_options=None,
            type=None,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    containing_type=None,
    serialized_options=None,
    serialized_start=2792,
    serialized_end=2834,
)
_sym_db.RegisterEnumDescriptor(_TRACKSPEC_TRACKENTRY_TRACKTYPE)


_LIBRARY = _descriptor.Descriptor(
    name="Library",
    full_name="vlsir.tetris.Library",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="domain",
            full_name="vlsir.tetris.Library.domain",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="cells",
            full_name="vlsir.tetris.Library.cells",
            index=1,
            number=10,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="author",
            full_name="vlsir.tetris.Library.author",
            index=2,
            number=20,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=69,
    serialized_end=174,
)


_CELL = _descriptor.Descriptor(
    name="Cell",
    full_name="vlsir.tetris.Cell",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="vlsir.tetris.Cell.name",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="interface",
            full_name="vlsir.tetris.Cell.interface",
            index=1,
            number=10,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="module",
            full_name="vlsir.tetris.Cell.module",
            index=2,
            number=11,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="abstract",
            full_name="vlsir.tetris.Cell.abstract",
            index=3,
            number=12,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="layout",
            full_name="vlsir.tetris.Cell.layout",
            index=4,
            number=13,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=177,
    serialized_end=361,
)


_LAYOUT = _descriptor.Descriptor(
    name="Layout",
    full_name="vlsir.tetris.Layout",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="vlsir.tetris.Layout.name",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="outline",
            full_name="vlsir.tetris.Layout.outline",
            index=1,
            number=10,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="instances",
            full_name="vlsir.tetris.Layout.instances",
            index=2,
            number=20,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="assignments",
            full_name="vlsir.tetris.Layout.assignments",
            index=3,
            number=21,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="cuts",
            full_name="vlsir.tetris.Layout.cuts",
            index=4,
            number=22,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=364,
    serialized_end=552,
)


_ASSIGN = _descriptor.Descriptor(
    name="Assign",
    full_name="vlsir.tetris.Assign",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="net",
            full_name="vlsir.tetris.Assign.net",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="at",
            full_name="vlsir.tetris.Assign.at",
            index=1,
            number=2,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=554,
    serialized_end=613,
)


_TRACKCROSS = _descriptor.Descriptor(
    name="TrackCross",
    full_name="vlsir.tetris.TrackCross",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="track",
            full_name="vlsir.tetris.TrackCross.track",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="cross",
            full_name="vlsir.tetris.TrackCross.cross",
            index=1,
            number=2,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=615,
    serialized_end=705,
)


_TRACKREF = _descriptor.Descriptor(
    name="TrackRef",
    full_name="vlsir.tetris.TrackRef",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="layer",
            full_name="vlsir.tetris.TrackRef.layer",
            index=0,
            number=1,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="track",
            full_name="vlsir.tetris.TrackRef.track",
            index=1,
            number=2,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=707,
    serialized_end=747,
)


_OUTLINE = _descriptor.Descriptor(
    name="Outline",
    full_name="vlsir.tetris.Outline",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="x",
            full_name="vlsir.tetris.Outline.x",
            index=0,
            number=1,
            type=3,
            cpp_type=2,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="y",
            full_name="vlsir.tetris.Outline.y",
            index=1,
            number=2,
            type=3,
            cpp_type=2,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="metals",
            full_name="vlsir.tetris.Outline.metals",
            index=2,
            number=3,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=749,
    serialized_end=796,
)


_ABSTRACT = _descriptor.Descriptor(
    name="Abstract",
    full_name="vlsir.tetris.Abstract",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="vlsir.tetris.Abstract.name",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="outline",
            full_name="vlsir.tetris.Abstract.outline",
            index=1,
            number=10,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="ports",
            full_name="vlsir.tetris.Abstract.ports",
            index=2,
            number=20,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=798,
    serialized_end=905,
)


_ABSTRACTPORT_EDGEPORT = _descriptor.Descriptor(
    name="EdgePort",
    full_name="vlsir.tetris.AbstractPort.EdgePort",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="track",
            full_name="vlsir.tetris.AbstractPort.EdgePort.track",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="side",
            full_name="vlsir.tetris.AbstractPort.EdgePort.side",
            index=1,
            number=2,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1112,
    serialized_end=1212,
)

_ABSTRACTPORT_ZTOPEDGEPORT = _descriptor.Descriptor(
    name="ZTopEdgePort",
    full_name="vlsir.tetris.AbstractPort.ZTopEdgePort",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="track",
            full_name="vlsir.tetris.AbstractPort.ZTopEdgePort.track",
            index=0,
            number=1,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="side",
            full_name="vlsir.tetris.AbstractPort.ZTopEdgePort.side",
            index=1,
            number=2,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="into",
            full_name="vlsir.tetris.AbstractPort.ZTopEdgePort.into",
            index=2,
            number=3,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1214,
    serialized_end=1332,
)

_ABSTRACTPORT_ZTOPINNER = _descriptor.Descriptor(
    name="ZTopInner",
    full_name="vlsir.tetris.AbstractPort.ZTopInner",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="locs",
            full_name="vlsir.tetris.AbstractPort.ZTopInner.locs",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1334,
    serialized_end=1385,
)

_ABSTRACTPORT = _descriptor.Descriptor(
    name="AbstractPort",
    full_name="vlsir.tetris.AbstractPort",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="net",
            full_name="vlsir.tetris.AbstractPort.net",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="edge",
            full_name="vlsir.tetris.AbstractPort.edge",
            index=1,
            number=10,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="ztop_edge",
            full_name="vlsir.tetris.AbstractPort.ztop_edge",
            index=2,
            number=11,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="ztop_inner",
            full_name="vlsir.tetris.AbstractPort.ztop_inner",
            index=3,
            number=12,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[
        _ABSTRACTPORT_EDGEPORT,
        _ABSTRACTPORT_ZTOPEDGEPORT,
        _ABSTRACTPORT_ZTOPINNER,
    ],
    enum_types=[_ABSTRACTPORT_PORTSIDE,],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="kind",
            full_name="vlsir.tetris.AbstractPort.kind",
            index=0,
            containing_type=None,
            create_key=_descriptor._internal_create_key,
            fields=[],
        ),
    ],
    serialized_start=908,
    serialized_end=1443,
)


_INSTANCE = _descriptor.Descriptor(
    name="Instance",
    full_name="vlsir.tetris.Instance",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="vlsir.tetris.Instance.name",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="cell",
            full_name="vlsir.tetris.Instance.cell",
            index=1,
            number=3,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="loc",
            full_name="vlsir.tetris.Instance.loc",
            index=2,
            number=4,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="reflect_horiz",
            full_name="vlsir.tetris.Instance.reflect_horiz",
            index=3,
            number=6,
            type=8,
            cpp_type=7,
            label=1,
            has_default_value=False,
            default_value=False,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="reflect_vert",
            full_name="vlsir.tetris.Instance.reflect_vert",
            index=4,
            number=7,
            type=8,
            cpp_type=7,
            label=1,
            has_default_value=False,
            default_value=False,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1446,
    serialized_end=1587,
)


_PLACE = _descriptor.Descriptor(
    name="Place",
    full_name="vlsir.tetris.Place",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="abs",
            full_name="vlsir.tetris.Place.abs",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="rel",
            full_name="vlsir.tetris.Place.rel",
            index=1,
            number=2,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="place",
            full_name="vlsir.tetris.Place.place",
            index=0,
            containing_type=None,
            create_key=_descriptor._internal_create_key,
            fields=[],
        ),
    ],
    serialized_start=1589,
    serialized_end=1677,
)


_RELPLACE = _descriptor.Descriptor(
    name="RelPlace",
    full_name="vlsir.tetris.RelPlace",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1679,
    serialized_end=1689,
)


_STACK = _descriptor.Descriptor(
    name="Stack",
    full_name="vlsir.tetris.Stack",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="units",
            full_name="vlsir.tetris.Stack.units",
            index=0,
            number=1,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="prim",
            full_name="vlsir.tetris.Stack.prim",
            index=1,
            number=2,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="metals",
            full_name="vlsir.tetris.Stack.metals",
            index=2,
            number=3,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="vias",
            full_name="vlsir.tetris.Stack.vias",
            index=3,
            number=4,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="boundary_layer",
            full_name="vlsir.tetris.Stack.boundary_layer",
            index=4,
            number=11,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1692,
    serialized_end=1898,
)


_LAYERENUM = _descriptor.Descriptor(
    name="LayerEnum",
    full_name="vlsir.tetris.LayerEnum",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="type",
            full_name="vlsir.tetris.LayerEnum.type",
            index=0,
            number=1,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="index",
            full_name="vlsir.tetris.LayerEnum.index",
            index=1,
            number=2,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[_LAYERENUM_LAYERTYPE,],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1900,
    serialized_end=2023,
)


_METALLAYER = _descriptor.Descriptor(
    name="MetalLayer",
    full_name="vlsir.tetris.MetalLayer",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="vlsir.tetris.MetalLayer.name",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="dir",
            full_name="vlsir.tetris.MetalLayer.dir",
            index=1,
            number=2,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="cutsize",
            full_name="vlsir.tetris.MetalLayer.cutsize",
            index=2,
            number=3,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="entries",
            full_name="vlsir.tetris.MetalLayer.entries",
            index=3,
            number=4,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="offset",
            full_name="vlsir.tetris.MetalLayer.offset",
            index=4,
            number=5,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="overlap",
            full_name="vlsir.tetris.MetalLayer.overlap",
            index=5,
            number=6,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="flip",
            full_name="vlsir.tetris.MetalLayer.flip",
            index=6,
            number=7,
            type=8,
            cpp_type=7,
            label=1,
            has_default_value=False,
            default_value=False,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="prim",
            full_name="vlsir.tetris.MetalLayer.prim",
            index=7,
            number=8,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="raw",
            full_name="vlsir.tetris.MetalLayer.raw",
            index=8,
            number=11,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[_METALLAYER_DIR, _METALLAYER_PRIMITIVEMODE,],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2026,
    serialized_end=2363,
)


_VIALAYER = _descriptor.Descriptor(
    name="ViaLayer",
    full_name="vlsir.tetris.ViaLayer",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="vlsir.tetris.ViaLayer.name",
            index=0,
            number=1,
            type=9,
            cpp_type=9,
            label=1,
            has_default_value=False,
            default_value=b"".decode("utf-8"),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="top",
            full_name="vlsir.tetris.ViaLayer.top",
            index=1,
            number=2,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="bot",
            full_name="vlsir.tetris.ViaLayer.bot",
            index=2,
            number=3,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="size",
            full_name="vlsir.tetris.ViaLayer.size",
            index=3,
            number=4,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="raw",
            full_name="vlsir.tetris.ViaLayer.raw",
            index=4,
            number=11,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2366,
    serialized_end=2529,
)


_PRIMITIVELAYER = _descriptor.Descriptor(
    name="PrimitiveLayer",
    full_name="vlsir.tetris.PrimitiveLayer",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="pitches",
            full_name="vlsir.tetris.PrimitiveLayer.pitches",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2531,
    serialized_end=2582,
)


_TRACKSPEC_TRACKENTRY = _descriptor.Descriptor(
    name="TrackEntry",
    full_name="vlsir.tetris.TrackSpec.TrackEntry",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="ttype",
            full_name="vlsir.tetris.TrackSpec.TrackEntry.ttype",
            index=0,
            number=1,
            type=14,
            cpp_type=8,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="width",
            full_name="vlsir.tetris.TrackSpec.TrackEntry.width",
            index=1,
            number=2,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[_TRACKSPEC_TRACKENTRY_TRACKTYPE,],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2702,
    serialized_end=2834,
)

_TRACKSPEC_REPEAT = _descriptor.Descriptor(
    name="Repeat",
    full_name="vlsir.tetris.TrackSpec.Repeat",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="entries",
            full_name="vlsir.tetris.TrackSpec.Repeat.entries",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=3,
            has_default_value=False,
            default_value=[],
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="nrep",
            full_name="vlsir.tetris.TrackSpec.Repeat.nrep",
            index=1,
            number=2,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2836,
    serialized_end=2911,
)

_TRACKSPEC = _descriptor.Descriptor(
    name="TrackSpec",
    full_name="vlsir.tetris.TrackSpec",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="entry",
            full_name="vlsir.tetris.TrackSpec.entry",
            index=0,
            number=1,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="repeat",
            full_name="vlsir.tetris.TrackSpec.repeat",
            index=1,
            number=2,
            type=11,
            cpp_type=10,
            label=1,
            has_default_value=False,
            default_value=None,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[_TRACKSPEC_TRACKENTRY, _TRACKSPEC_REPEAT,],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="spec",
            full_name="vlsir.tetris.TrackSpec.spec",
            index=0,
            containing_type=None,
            create_key=_descriptor._internal_create_key,
            fields=[],
        ),
    ],
    serialized_start=2585,
    serialized_end=2919,
)


_XY = _descriptor.Descriptor(
    name="Xy",
    full_name="vlsir.tetris.Xy",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    create_key=_descriptor._internal_create_key,
    fields=[
        _descriptor.FieldDescriptor(
            name="x",
            full_name="vlsir.tetris.Xy.x",
            index=0,
            number=1,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
        _descriptor.FieldDescriptor(
            name="y",
            full_name="vlsir.tetris.Xy.y",
            index=1,
            number=2,
            type=3,
            cpp_type=2,
            label=1,
            has_default_value=False,
            default_value=0,
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
            create_key=_descriptor._internal_create_key,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2921,
    serialized_end=2947,
)

_LIBRARY.fields_by_name["cells"].message_type = _CELL
_LIBRARY.fields_by_name["author"].message_type = utils__pb2._AUTHORMETADATA
_CELL.fields_by_name["interface"].message_type = circuit__pb2._INTERFACE
_CELL.fields_by_name["module"].message_type = circuit__pb2._MODULE
_CELL.fields_by_name["abstract"].message_type = _ABSTRACT
_CELL.fields_by_name["layout"].message_type = _LAYOUT
_LAYOUT.fields_by_name["outline"].message_type = _OUTLINE
_LAYOUT.fields_by_name["instances"].message_type = _INSTANCE
_LAYOUT.fields_by_name["assignments"].message_type = _ASSIGN
_LAYOUT.fields_by_name["cuts"].message_type = _TRACKCROSS
_ASSIGN.fields_by_name["at"].message_type = _TRACKCROSS
_TRACKCROSS.fields_by_name["track"].message_type = _TRACKREF
_TRACKCROSS.fields_by_name["cross"].message_type = _TRACKREF
_ABSTRACT.fields_by_name["outline"].message_type = _OUTLINE
_ABSTRACT.fields_by_name["ports"].message_type = _ABSTRACTPORT
_ABSTRACTPORT_EDGEPORT.fields_by_name["track"].message_type = _TRACKREF
_ABSTRACTPORT_EDGEPORT.fields_by_name["side"].enum_type = _ABSTRACTPORT_PORTSIDE
_ABSTRACTPORT_EDGEPORT.containing_type = _ABSTRACTPORT
_ABSTRACTPORT_ZTOPEDGEPORT.fields_by_name["side"].enum_type = _ABSTRACTPORT_PORTSIDE
_ABSTRACTPORT_ZTOPEDGEPORT.fields_by_name["into"].message_type = _TRACKREF
_ABSTRACTPORT_ZTOPEDGEPORT.containing_type = _ABSTRACTPORT
_ABSTRACTPORT_ZTOPINNER.fields_by_name["locs"].message_type = _TRACKCROSS
_ABSTRACTPORT_ZTOPINNER.containing_type = _ABSTRACTPORT
_ABSTRACTPORT.fields_by_name["edge"].message_type = _ABSTRACTPORT_EDGEPORT
_ABSTRACTPORT.fields_by_name["ztop_edge"].message_type = _ABSTRACTPORT_ZTOPEDGEPORT
_ABSTRACTPORT.fields_by_name["ztop_inner"].message_type = _ABSTRACTPORT_ZTOPINNER
_ABSTRACTPORT_PORTSIDE.containing_type = _ABSTRACTPORT
_ABSTRACTPORT.oneofs_by_name["kind"].fields.append(_ABSTRACTPORT.fields_by_name["edge"])
_ABSTRACTPORT.fields_by_name["edge"].containing_oneof = _ABSTRACTPORT.oneofs_by_name[
    "kind"
]
_ABSTRACTPORT.oneofs_by_name["kind"].fields.append(
    _ABSTRACTPORT.fields_by_name["ztop_edge"]
)
_ABSTRACTPORT.fields_by_name[
    "ztop_edge"
].containing_oneof = _ABSTRACTPORT.oneofs_by_name["kind"]
_ABSTRACTPORT.oneofs_by_name["kind"].fields.append(
    _ABSTRACTPORT.fields_by_name["ztop_inner"]
)
_ABSTRACTPORT.fields_by_name[
    "ztop_inner"
].containing_oneof = _ABSTRACTPORT.oneofs_by_name["kind"]
_INSTANCE.fields_by_name["cell"].message_type = utils__pb2._REFERENCE
_INSTANCE.fields_by_name["loc"].message_type = _PLACE
_PLACE.fields_by_name["abs"].message_type = raw__pb2._POINT
_PLACE.fields_by_name["rel"].message_type = _RELPLACE
_PLACE.oneofs_by_name["place"].fields.append(_PLACE.fields_by_name["abs"])
_PLACE.fields_by_name["abs"].containing_oneof = _PLACE.oneofs_by_name["place"]
_PLACE.oneofs_by_name["place"].fields.append(_PLACE.fields_by_name["rel"])
_PLACE.fields_by_name["rel"].containing_oneof = _PLACE.oneofs_by_name["place"]
_STACK.fields_by_name["units"].enum_type = raw__pb2._UNITS
_STACK.fields_by_name["prim"].message_type = _PRIMITIVELAYER
_STACK.fields_by_name["metals"].message_type = _METALLAYER
_STACK.fields_by_name["vias"].message_type = _VIALAYER
_STACK.fields_by_name["boundary_layer"].message_type = raw__pb2._LAYER
_LAYERENUM.fields_by_name["type"].enum_type = _LAYERENUM_LAYERTYPE
_LAYERENUM_LAYERTYPE.containing_type = _LAYERENUM
_METALLAYER.fields_by_name["dir"].enum_type = _METALLAYER_DIR
_METALLAYER.fields_by_name["entries"].message_type = _TRACKSPEC
_METALLAYER.fields_by_name["prim"].enum_type = _METALLAYER_PRIMITIVEMODE
_METALLAYER.fields_by_name["raw"].message_type = raw__pb2._LAYER
_METALLAYER_DIR.containing_type = _METALLAYER
_METALLAYER_PRIMITIVEMODE.containing_type = _METALLAYER
_VIALAYER.fields_by_name["top"].message_type = _LAYERENUM
_VIALAYER.fields_by_name["bot"].message_type = _LAYERENUM
_VIALAYER.fields_by_name["size"].message_type = _XY
_VIALAYER.fields_by_name["raw"].message_type = raw__pb2._LAYER
_PRIMITIVELAYER.fields_by_name["pitches"].message_type = _XY
_TRACKSPEC_TRACKENTRY.fields_by_name[
    "ttype"
].enum_type = _TRACKSPEC_TRACKENTRY_TRACKTYPE
_TRACKSPEC_TRACKENTRY.containing_type = _TRACKSPEC
_TRACKSPEC_TRACKENTRY_TRACKTYPE.containing_type = _TRACKSPEC_TRACKENTRY
_TRACKSPEC_REPEAT.fields_by_name["entries"].message_type = _TRACKSPEC_TRACKENTRY
_TRACKSPEC_REPEAT.containing_type = _TRACKSPEC
_TRACKSPEC.fields_by_name["entry"].message_type = _TRACKSPEC_TRACKENTRY
_TRACKSPEC.fields_by_name["repeat"].message_type = _TRACKSPEC_REPEAT
_TRACKSPEC.oneofs_by_name["spec"].fields.append(_TRACKSPEC.fields_by_name["entry"])
_TRACKSPEC.fields_by_name["entry"].containing_oneof = _TRACKSPEC.oneofs_by_name["spec"]
_TRACKSPEC.oneofs_by_name["spec"].fields.append(_TRACKSPEC.fields_by_name["repeat"])
_TRACKSPEC.fields_by_name["repeat"].containing_oneof = _TRACKSPEC.oneofs_by_name["spec"]
DESCRIPTOR.message_types_by_name["Library"] = _LIBRARY
DESCRIPTOR.message_types_by_name["Cell"] = _CELL
DESCRIPTOR.message_types_by_name["Layout"] = _LAYOUT
DESCRIPTOR.message_types_by_name["Assign"] = _ASSIGN
DESCRIPTOR.message_types_by_name["TrackCross"] = _TRACKCROSS
DESCRIPTOR.message_types_by_name["TrackRef"] = _TRACKREF
DESCRIPTOR.message_types_by_name["Outline"] = _OUTLINE
DESCRIPTOR.message_types_by_name["Abstract"] = _ABSTRACT
DESCRIPTOR.message_types_by_name["AbstractPort"] = _ABSTRACTPORT
DESCRIPTOR.message_types_by_name["Instance"] = _INSTANCE
DESCRIPTOR.message_types_by_name["Place"] = _PLACE
DESCRIPTOR.message_types_by_name["RelPlace"] = _RELPLACE
DESCRIPTOR.message_types_by_name["Stack"] = _STACK
DESCRIPTOR.message_types_by_name["LayerEnum"] = _LAYERENUM
DESCRIPTOR.message_types_by_name["MetalLayer"] = _METALLAYER
DESCRIPTOR.message_types_by_name["ViaLayer"] = _VIALAYER
DESCRIPTOR.message_types_by_name["PrimitiveLayer"] = _PRIMITIVELAYER
DESCRIPTOR.message_types_by_name["TrackSpec"] = _TRACKSPEC
DESCRIPTOR.message_types_by_name["Xy"] = _XY
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

Library = _reflection.GeneratedProtocolMessageType(
    "Library",
    (_message.Message,),
    {
        "DESCRIPTOR": _LIBRARY,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Library)
    },
)
_sym_db.RegisterMessage(Library)

Cell = _reflection.GeneratedProtocolMessageType(
    "Cell",
    (_message.Message,),
    {
        "DESCRIPTOR": _CELL,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Cell)
    },
)
_sym_db.RegisterMessage(Cell)

Layout = _reflection.GeneratedProtocolMessageType(
    "Layout",
    (_message.Message,),
    {
        "DESCRIPTOR": _LAYOUT,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Layout)
    },
)
_sym_db.RegisterMessage(Layout)

Assign = _reflection.GeneratedProtocolMessageType(
    "Assign",
    (_message.Message,),
    {
        "DESCRIPTOR": _ASSIGN,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Assign)
    },
)
_sym_db.RegisterMessage(Assign)

TrackCross = _reflection.GeneratedProtocolMessageType(
    "TrackCross",
    (_message.Message,),
    {
        "DESCRIPTOR": _TRACKCROSS,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.TrackCross)
    },
)
_sym_db.RegisterMessage(TrackCross)

TrackRef = _reflection.GeneratedProtocolMessageType(
    "TrackRef",
    (_message.Message,),
    {
        "DESCRIPTOR": _TRACKREF,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.TrackRef)
    },
)
_sym_db.RegisterMessage(TrackRef)

Outline = _reflection.GeneratedProtocolMessageType(
    "Outline",
    (_message.Message,),
    {
        "DESCRIPTOR": _OUTLINE,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Outline)
    },
)
_sym_db.RegisterMessage(Outline)

Abstract = _reflection.GeneratedProtocolMessageType(
    "Abstract",
    (_message.Message,),
    {
        "DESCRIPTOR": _ABSTRACT,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Abstract)
    },
)
_sym_db.RegisterMessage(Abstract)

AbstractPort = _reflection.GeneratedProtocolMessageType(
    "AbstractPort",
    (_message.Message,),
    {
        "EdgePort": _reflection.GeneratedProtocolMessageType(
            "EdgePort",
            (_message.Message,),
            {
                "DESCRIPTOR": _ABSTRACTPORT_EDGEPORT,
                "__module__": "tetris_pb2"
                # @@protoc_insertion_point(class_scope:vlsir.tetris.AbstractPort.EdgePort)
            },
        ),
        "ZTopEdgePort": _reflection.GeneratedProtocolMessageType(
            "ZTopEdgePort",
            (_message.Message,),
            {
                "DESCRIPTOR": _ABSTRACTPORT_ZTOPEDGEPORT,
                "__module__": "tetris_pb2"
                # @@protoc_insertion_point(class_scope:vlsir.tetris.AbstractPort.ZTopEdgePort)
            },
        ),
        "ZTopInner": _reflection.GeneratedProtocolMessageType(
            "ZTopInner",
            (_message.Message,),
            {
                "DESCRIPTOR": _ABSTRACTPORT_ZTOPINNER,
                "__module__": "tetris_pb2"
                # @@protoc_insertion_point(class_scope:vlsir.tetris.AbstractPort.ZTopInner)
            },
        ),
        "DESCRIPTOR": _ABSTRACTPORT,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.AbstractPort)
    },
)
_sym_db.RegisterMessage(AbstractPort)
_sym_db.RegisterMessage(AbstractPort.EdgePort)
_sym_db.RegisterMessage(AbstractPort.ZTopEdgePort)
_sym_db.RegisterMessage(AbstractPort.ZTopInner)

Instance = _reflection.GeneratedProtocolMessageType(
    "Instance",
    (_message.Message,),
    {
        "DESCRIPTOR": _INSTANCE,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Instance)
    },
)
_sym_db.RegisterMessage(Instance)

Place = _reflection.GeneratedProtocolMessageType(
    "Place",
    (_message.Message,),
    {
        "DESCRIPTOR": _PLACE,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Place)
    },
)
_sym_db.RegisterMessage(Place)

RelPlace = _reflection.GeneratedProtocolMessageType(
    "RelPlace",
    (_message.Message,),
    {
        "DESCRIPTOR": _RELPLACE,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.RelPlace)
    },
)
_sym_db.RegisterMessage(RelPlace)

Stack = _reflection.GeneratedProtocolMessageType(
    "Stack",
    (_message.Message,),
    {
        "DESCRIPTOR": _STACK,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Stack)
    },
)
_sym_db.RegisterMessage(Stack)

LayerEnum = _reflection.GeneratedProtocolMessageType(
    "LayerEnum",
    (_message.Message,),
    {
        "DESCRIPTOR": _LAYERENUM,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.LayerEnum)
    },
)
_sym_db.RegisterMessage(LayerEnum)

MetalLayer = _reflection.GeneratedProtocolMessageType(
    "MetalLayer",
    (_message.Message,),
    {
        "DESCRIPTOR": _METALLAYER,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.MetalLayer)
    },
)
_sym_db.RegisterMessage(MetalLayer)

ViaLayer = _reflection.GeneratedProtocolMessageType(
    "ViaLayer",
    (_message.Message,),
    {
        "DESCRIPTOR": _VIALAYER,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.ViaLayer)
    },
)
_sym_db.RegisterMessage(ViaLayer)

PrimitiveLayer = _reflection.GeneratedProtocolMessageType(
    "PrimitiveLayer",
    (_message.Message,),
    {
        "DESCRIPTOR": _PRIMITIVELAYER,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.PrimitiveLayer)
    },
)
_sym_db.RegisterMessage(PrimitiveLayer)

TrackSpec = _reflection.GeneratedProtocolMessageType(
    "TrackSpec",
    (_message.Message,),
    {
        "TrackEntry": _reflection.GeneratedProtocolMessageType(
            "TrackEntry",
            (_message.Message,),
            {
                "DESCRIPTOR": _TRACKSPEC_TRACKENTRY,
                "__module__": "tetris_pb2"
                # @@protoc_insertion_point(class_scope:vlsir.tetris.TrackSpec.TrackEntry)
            },
        ),
        "Repeat": _reflection.GeneratedProtocolMessageType(
            "Repeat",
            (_message.Message,),
            {
                "DESCRIPTOR": _TRACKSPEC_REPEAT,
                "__module__": "tetris_pb2"
                # @@protoc_insertion_point(class_scope:vlsir.tetris.TrackSpec.Repeat)
            },
        ),
        "DESCRIPTOR": _TRACKSPEC,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.TrackSpec)
    },
)
_sym_db.RegisterMessage(TrackSpec)
_sym_db.RegisterMessage(TrackSpec.TrackEntry)
_sym_db.RegisterMessage(TrackSpec.Repeat)

Xy = _reflection.GeneratedProtocolMessageType(
    "Xy",
    (_message.Message,),
    {
        "DESCRIPTOR": _XY,
        "__module__": "tetris_pb2"
        # @@protoc_insertion_point(class_scope:vlsir.tetris.Xy)
    },
)
_sym_db.RegisterMessage(Xy)


# @@protoc_insertion_point(module_scope)
