IRON 1.0
|
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={}) | |
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.
iron.placers.SequentialPlacer.__init__ | ( | self | ) |
|
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.
|
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".
|
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.
|
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.
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.