IRON 898978f104b41f64d534f83342d7a28abe5a86ee
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
iron.dataflow.cascadeflow.CascadeFlow Class Reference
Inheritance diagram for iron.dataflow.cascadeflow.CascadeFlow:
Inheritance graph
[legend]
Collaboration diagram for iron.dataflow.cascadeflow.CascadeFlow:
Collaboration graph
[legend]

Public Member Functions

 __init__ (self, src, dst)
 
None resolve (self, loc=None, ip=None)
 
- Public Member Functions inherited from iron.resolvable.Resolvable
list tiles (self)
 

Protected Attributes

 _src
 
 _dst
 

Detailed Description

A directed cascade stream connection from one Worker to another.

Construct one of these for each cascade edge in your design::

    CascadeFlow(producer_worker, consumer_worker)

Lowers to ``aie.cascade_flow(producer.tile, consumer.tile)`` after both
Workers are placed. The kernel functions are responsible for using the
``put_mcd`` / ``get_scd`` intrinsics to actually drive/read the cascade
stream — this object only declares the directed topology edge.

Hardware constraints (enforced by the underlying op verifier):

* Source and destination tiles must be cardinal-adjacent.
* Each compute tile has at most one cascade input (from N or W) and one
  cascade output (to S or E). Multiple cascade outputs from the same
  tile will fail at lowering, not at construction.
* ShimTiles and MemTiles do not have cascade interfaces.

Discovery: each newly-constructed CascadeFlow registers itself on its
*source* Worker's ``_outgoing_cascades`` list. ``Program.resolve()``
walks the runtime's workers and resolves each worker's outgoing
cascades after placement — no global registry, no drain step.

Constructor & Destructor Documentation

◆ __init__()

iron.dataflow.cascadeflow.CascadeFlow.__init__ (   self,
  src,
  dst 
)
Construct a CascadeFlow.

Args:
    src: Source ``Worker`` whose tile drives the cascade stream.
    dst: Destination ``Worker`` whose tile reads the cascade stream.

Member Function Documentation

◆ resolve()

None iron.dataflow.cascadeflow.CascadeFlow.resolve (   self,
  loc = None,
  ip = None 
)
Emit ``aie.cascade_flow(src.tile, dst.tile)``.

Reimplemented from iron.resolvable.Resolvable.

Member Data Documentation

◆ _dst

iron.dataflow.cascadeflow.CascadeFlow._dst
protected

◆ _src

iron.dataflow.cascadeflow.CascadeFlow._src
protected

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