Source code for FABulous.geometry_generator.geometry_obj
"""Simple FPGA geometry location base object class."""
from dataclasses import dataclass
from enum import Enum
from FABulous.fabric_definition.define import IO
@dataclass
[docs]
class Location:
"""A simple data structure for storing a location.
Attributes
----------
x : int
X coordinate
y : int
Y coordinate
"""
def __repr__(self) -> str:
"""Return the string representation of the location.
Returns
-------
str
String in format 'x/y'
"""
return f"{self.x}/{self.y}"
[docs]
class Border(Enum):
"""Enumeration for tile border types in the fabric geometry.
Used to specify which type of border a tile has within the fabric layout.
"""
NORTHSOUTH = "NORTHSOUTH"
EASTWEST = "EASTWEST"
CORNER = "CORNER"
NONE = "NONE"
[docs]
def oppositeIO(io: IO) -> IO:
"""Return opposite IO port."""
if io == IO.INPUT:
return IO.OUTPUT
if io == IO.OUTPUT:
return IO.INPUT
if io == IO.INOUT:
return IO.INOUT
return IO.NULL