Source code for FABulous.fabric_definition.Gen_IO

"""Generated I/O definition module.

This module contains the Gen_IO class which represents generated I/O ports for FPGA
fabric tiles. These are automatically generated I/O interfaces that connect fabric
internals to external pins.
"""

from dataclasses import dataclass

from FABulous.fabric_definition.define import IO


@dataclass
[docs] class Gen_IO: """Store information about a generated IO port (GEN_IO). The information are parsed from the `GEN_IO` definitions in the tile CSV file. Attributes ---------- prefix : str The prefix of the GEN_IO given in the CSV file. pins : int Number of IOs. IO : IO Direction of the IOs, either INPUT or OUTPUT, seen from the fabric side. This means a fabric INPUT is an OUTPUT globally and vice versa. configBit : int The number of accessible config bits for config access GEN_IO. configAccess : bool Whether the GEN_IO is config access. Routes access to config bits, directly to TOP. This GEN_IOs are not connected to the switchmatrix, Can only be used as an OUTPUT. inverted : bool GEN_IO will be inverted. clocked : bool Adds a register to GEN_IO. clockedComb: bool Creates two signals for every GEN_IO. <prefix><Number>_Q: The clocked signal. <prefix><Number>: The original combinatorial signal. If the GEN_IO is an INPUT, then there will be created two signals to the top, <prefix><Number>_Q_top is the clocked input signal and <prefix><Number>_top is the combinatorial input signal. If the GEN_IO is an OUTPUT, then there will be two signals connected to the switch matrix, <prefix><Number>_Q is the clocked output signal and <prefix><Number> is the combinatorial output signal. clockedMux: bool GEN_IO will be multiplexed between the combinatorial and clocked signal. The multiplexer can be switched via config bits. """
[docs] prefix: str
[docs] pins: int
[docs] IO: IO
[docs] configBit: int = 0
# Parameters for GEN_IO:
[docs] configAccess: bool = False
[docs] inverted: bool = False
[docs] clocked: bool = False
[docs] clockedComb: bool = False
[docs] clockedMux: bool = False