Source code for FABulous.fabric_definition.define
"""Fabric definition enumerations and constants.
This module defines various enumerations used throughout FABulous for fabric definition,
including I/O types, directions, sides, and configuration modes.
"""
from enum import Enum, StrEnum
[docs]
class IO(Enum):
"""Enumeration for I/O port directions.
Defines the direction of ports in fabric components:
- INPUT: Input port
- OUTPUT: Output port
- INOUT: Bidirectional port
- NULL: No connection/unused port
"""
INPUT = "INPUT"
OUTPUT = "OUTPUT"
INOUT = "INOUT"
NULL = "NULL"
[docs]
class Direction(Enum):
"""Enumeration for wire and port directions in the fabric.
Defines the directional flow of wires and ports:
- NORTH: Northward direction
- SOUTH: Southward direction
- EAST: Eastward direction
- WEST: Westward direction
- JUMP: Local connections within a tile
"""
NORTH = "NORTH"
SOUTH = "SOUTH"
EAST = "EAST"
WEST = "WEST"
JUMP = "JUMP"
[docs]
class Side(Enum):
"""Enumeration for tile sides and placement.
Defines the physical sides of tiles in the fabric:
- NORTH: North side of tile
- SOUTH: South side of tile
- EAST: East side of tile
- WEST: West side of tile
- ANY: Any side (no specific placement)
"""
NORTH = "NORTH"
SOUTH = "SOUTH"
EAST = "EAST"
WEST = "WEST"
ANY = "ANY"
[docs]
class MultiplexerStyle(Enum):
"""Enumeration for multiplexer implementation styles.
Defines how multiplexers are implemented in the fabric:
- CUSTOM: Custom multiplexer implementations which instantiate a
custom multiplexer layout.
- GENERIC: Generic/standard multiplexer implementations which uses behavioral
modeling and will use standard cells in the physical implementation.
"""
CUSTOM = "CUSTOM"
GENERIC = "GENERIC"
[docs]
class ConfigBitMode(Enum):
"""Enumeration for configuration bit access modes.
Defines how configuration bits are accessed and programmed:
- FRAME_BASED: Frame-based configuration
- FLIPFLOP_CHAIN: Flip-flop chain configuration
"""
FRAME_BASED = "FRAME_BASED"
FLIPFLOP_CHAIN = "FLIPFLOP_CHAIN"
[docs]
class HDLType(StrEnum):
"""Enumeration for HDLs supported by FABulous.
This enumeration includes the following values:
- VERILOG: Verilog HDL
- VHDL: VHDL HDL
- SYSTEM_VERILOG: SystemVerilog HDL
"""
VERILOG = "verilog"
VHDL = "vhdl"
SYSTEM_VERILOG = "system_verilog"
[docs]
class FABulousAttribute(StrEnum):
"""Enumeration for FABulous attributes in the HDL.
This enumeration includes the following values:
- EXTERNAL: External attribute
- SHARED_PORT: Shared port attribute
- GLOBAL: Global attribute
- USER_CLK: User clock attribute
- CONFIG_BIT: Configuration bit attribute
"""
EXTERNAL = "EXTERNAL"
SHARED_PORT = "SHARED_PORT"
GLOBAL = "GLOBAL"
USER_CLK = "USER_CLK"
CONFIG_BIT = "CONFIG_BIT"