MLIR-AIE 1.4.5.dev
xilinx::AIE::StreamVolumeAnalysis Class Reference

How much data a stream carries over a run and how much a receiver takes in before it has to wait on another agent, read off BD lengths, repeat counts, lock initial values and runtime transfers. More...

#include "aie/Dialect/AIE/Transforms/AIEStreamDependencyAnalysis.h"

Public Member Functions

 StreamVolumeAnalysis (DeviceOp device, llvm::ArrayRef< RoutedStream > streams)
 StreamVolumeAnalysis (const StreamVolumeAnalysis &)=delete
StreamVolumeAnalysis & operator= (const StreamVolumeAnalysis &)=delete
std::optional< uint64_t > sendVolume (const RoutedStream &stream) const
 Bytes the stream's source sends with the stream's packet id, headers included where the receiver keeps them, or nullopt when that is unbounded or unknown.
std::optional< uint64_t > receiveCapacity (const StreamEndpoint &endpoint) const
 Bytes the receiver at endpoint accepts before it waits on another agent, or nullopt when it never does.
bool canFill (const StreamEndpoint &endpoint, llvm::ArrayRef< RoutedStream > streams) const
 Whether streams can send the receiver at endpoint more than it takes in before it waits on another agent.
std::optional< bool > maySendAfter (const RoutedStream &first, const RoutedStream &then) const
 Whether the source both streams come from can send a packet of then after one of first; nullopt if its program doesn't show or they come from different sources.

Detailed Description

How much data a stream carries over a run and how much a receiver takes in before it has to wait on another agent, read off BD lengths, repeat counts, lock initial values and runtime transfers.

Definition at line 147 of file AIEStreamDependencyAnalysis.h.

Constructor & Destructor Documentation

◆ StreamVolumeAnalysis() [1/2]

xilinx::AIE::StreamVolumeAnalysis::StreamVolumeAnalysis ( DeviceOp device,
llvm::ArrayRef< RoutedStream > streams )

Referenced by operator=(), and StreamVolumeAnalysis().

◆ StreamVolumeAnalysis() [2/2]

xilinx::AIE::StreamVolumeAnalysis::StreamVolumeAnalysis ( const StreamVolumeAnalysis & )
delete

Member Function Documentation

◆ canFill()

bool StreamVolumeAnalysis::canFill ( const StreamEndpoint & endpoint,
llvm::ArrayRef< RoutedStream > streams ) const

Whether streams can send the receiver at endpoint more than it takes in before it waits on another agent.

Definition at line 869 of file AIEStreamDependencyAnalysis.cpp.

References receiveCapacity(), and sendVolume().

Referenced by xilinx::AIE::StreamWaitGraph::StreamWaitGraph().

◆ maySendAfter()

std::optional< bool > StreamVolumeAnalysis::maySendAfter ( const RoutedStream & first,
const RoutedStream & then ) const

Whether the source both streams come from can send a packet of then after one of first; nullopt if its program doesn't show or they come from different sources.

Definition at line 700 of file AIEStreamDependencyAnalysis.cpp.

References xilinx::AIE::RoutedStream::carries(), xilinx::AIE::DmaChannelProgram::loops, xilinx::AIE::RoutedStream::packetID, xilinx::AIE::RoutedStream::packetMask, xilinx::AIE::DmaChannelProgram::passes, xilinx::AIE::StreamEndpoint::port, xilinx::AIE::RoutedStream::src, and xilinx::AIE::StreamEndpoint::tile.

◆ operator=()

StreamVolumeAnalysis & xilinx::AIE::StreamVolumeAnalysis::operator= ( const StreamVolumeAnalysis & )
delete

◆ receiveCapacity()

std::optional< uint64_t > StreamVolumeAnalysis::receiveCapacity ( const StreamEndpoint & endpoint) const

Bytes the receiver at endpoint accepts before it waits on another agent, or nullopt when it never does.

Where the analysis gives up before the receiver waits, the bytes it took in so far.

Definition at line 855 of file AIEStreamDependencyAnalysis.cpp.

References xilinx::AIE::StreamEndpoint::port, and xilinx::AIE::StreamEndpoint::tile.

Referenced by canFill().

◆ sendVolume()

std::optional< uint64_t > StreamVolumeAnalysis::sendVolume ( const RoutedStream & stream) const

Bytes the stream's source sends with the stream's packet id, headers included where the receiver keeps them, or nullopt when that is unbounded or unknown.

A BD chain that loops sends only what the lock tokens other agents can ever release to it let it.

Definition at line 512 of file AIEStreamDependencyAnalysis.cpp.

References xilinx::AIE::RoutedStream::carries(), xilinx::AIE::RoutedStream::keepsPktHeader, xilinx::AIE::DmaChannelProgram::loops, xilinx::AIE::DmaChannelProgram::op, xilinx::AIE::DmaChannelProgram::passes, xilinx::AIE::StreamEndpoint::port, xilinx::AIE::RoutedStream::src, and xilinx::AIE::StreamEndpoint::tile.

Referenced by canFill().


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