IRON 1.0
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
iron.placers.SequentialPlacer Class Reference
Inheritance diagram for iron.placers.SequentialPlacer:
Inheritance graph
[legend]
Collaboration diagram for iron.placers.SequentialPlacer:
Collaboration graph
[legend]

Public Member Functions

 __init__ (self)
 
 make_placement (self, Device device, Runtime rt, list[Worker] workers, list[ObjectFifoHandle] object_fifos)
 

Protected Member Functions

int _get_common_col (self, list[Tile] tiles)
 
Tile _find_col_match (self, int col, list[Tile] tiles, Device device)
 
 _update_channels (self, ObjectFifoEndpoint ofe, Tile tile, bool output, int num_required_channels, dict[Tile, tuple[ObjectFifoEndpoint, int]] channels, list[Tile] tiles, Device device)
 
 _place_endpoint (self, ObjectFifoEndpoint ofe, list[Tile] tiles, int common_col, dict[Tile, tuple[ObjectFifoEndpoint, int]] channels, Device device, output=False, link_tiles=[], link_channels={})
 

Detailed Description

SequentialPlacer is a simple implementation of a placer. The SequentialPlacer is so named
because it will sequentially place workers to Compute Tiles. After workers are placed, Memory Tiles and
Shim Tiles are placed as close to the column of the given compute tile as possible.

The SequentialPlacer only does validation of placement with respect to available DMA channels on the tiles.
However, it can yield invalid placements that exceed other resource limits, such as memory, For complex or
resource sensitive designs, a more complex placer or manual placement is required.

Constructor & Destructor Documentation

◆ __init__()

iron.placers.SequentialPlacer.__init__ (   self)

Member Function Documentation

◆ _find_col_match()

Tile iron.placers.SequentialPlacer._find_col_match (   self,
int  col,
list[Tile tiles,
Device  device 
)
protected
A utility function that sequentially searches a list of tiles to find one with a matching column.
The column is increased until a tile is found in the device, or an error is signaled.

◆ _get_common_col()

int iron.placers.SequentialPlacer._get_common_col (   self,
list[Tile tiles 
)
protected
A utility function that calculates a column that is "close" or "common"
to a set of tiles. It is a simple heuristic using the average to represent "distance".

◆ _place_endpoint()

iron.placers.SequentialPlacer._place_endpoint (   self,
ObjectFifoEndpoint  ofe,
list[Tile tiles,
int  common_col,
dict[Tile, tuple[ObjectFifoEndpoint, int]]  channels,
Device  device,
  output = False,
  link_tiles = [],
  link_channels = {} 
)
protected
A utility function that places a given endpoint based on available DMA channels. If the endpoint is a
link, both input and output channels should be accounted for. Calls _update_channels() to update channel
dictionaries and tile lists.

◆ _update_channels()

iron.placers.SequentialPlacer._update_channels (   self,
ObjectFifoEndpoint  ofe,
Tile  tile,
bool  output,
int  num_required_channels,
dict[Tile, tuple[ObjectFifoEndpoint, int]]  channels,
list[Tile tiles,
Device  device 
)
protected
A utility function that updates given channel and tile lists. It appends a new
(endpoint, num_required_channels) entry to the channels dict for the given tile key, then
verifies whether the total entries for that tile surpass the maximum number of available
channels. If so, it removes the tile from the list of available tiles.

◆ make_placement()

iron.placers.SequentialPlacer.make_placement (   self,
Device  device,
Runtime  rt,
list[Worker workers,
list[ObjectFifoHandle object_fifos 
)
Assign placement informatio to a program.

Args:
    device (Device): The device to use for placement.
    rt (Runtime): The runtime information for the program.
    workers (list[Worker]): The workers included in the program.
    object_fifos (list[ObjectFifoHandle]): The object fifos used by the program.

Reimplemented from iron.placers.Placer.


The documentation for this class was generated from the following file: