18#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
19#include "mlir/Dialect/SCF/IR/SCF.h"
20#include "mlir/Pass/Pass.h"
25#define GEN_PASS_DEF_AIEROUTEPATHFINDERFLOWS
26#include "aie/Dialect/AIE/Transforms/AIEPasses.h.inc"
29std::unique_ptr<mlir::OperationPass<DeviceOp>>
31std::unique_ptr<mlir::OperationPass<DeviceOp>>
33 const AIEAssignBufferAddressesOptions &options);
34std::unique_ptr<mlir::OperationPass<DeviceOp>>
37std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
39std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
41std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
45std::unique_ptr<mlir::OperationPass<DeviceOp>>
48std::unique_ptr<mlir::OperationPass<mlir::func::FuncOp>>
50std::unique_ptr<mlir::OperationPass<DeviceOp>>
52std::unique_ptr<mlir::OperationPass<DeviceOp>>
54std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
57std::unique_ptr<mlir::OperationPass<DeviceOp>>
59std::unique_ptr<mlir::OperationPass<DeviceOp>>
62std::unique_ptr<mlir::OperationPass<DeviceOp>>
64std::unique_ptr<mlir::OperationPass<DeviceOp>>
66std::unique_ptr<mlir::OperationPass<DeviceOp>>
68 const AIEGenerateColumnControlOverlayOptions &options);
71std::unique_ptr<mlir::OperationPass<DeviceOp>>
76#define GEN_PASS_REGISTRATION
77#include "aie/Dialect/AIE/Transforms/AIEPasses.h.inc"
89 : impl::AIERoutePathfinderFlowsBase<AIEPathfinderPass> {
95 mlir::LogicalResult
runOnPacketFlow(DeviceOp d, mlir::OpBuilder &builder,
101 WireBundle currDestBundle,
int currDestChannel,
102 TileID finalTile, WireBundle finalDestBundle,
103 int finalDestChannel);
Include the generated interface declarations.
std::unique_ptr< mlir::OperationPass< mlir::func::FuncOp > > createAIEVectorOptPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEInsertTraceFlowsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEHoistVectorTransferPointersPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIETraceRegPackWritesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignTileCtrlIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELowerCascadeFlowsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEFindFlowsPass()
TileID { friend std::ostream &operator<<(std::ostream &os, const TileID &s) { os<< "TileID("<< s.col<< ", "<< s.row<< ")" TileID
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoStatefulTransformPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIECoreToStandardPass()
std::map< TileID, SwitchSetting > SwitchSettings
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEVectorToPointerLoopsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignLockIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPlaceTilesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIENormalizeAddressSpacesPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIERouteFlowsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoRegisterProcessPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignCoreLinkFilesPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIECanonicalizeDevicePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignBufferAddressesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELocalizeLocksPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIETraceToConfigPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignBufferDescriptorIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPathfinderPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEVectorTransferLoweringPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEGenerateColumnControlOverlayPass()
Overall Flow: rewrite switchboxes to assign unassigned connections, ensure this can be done concurren...
AIEPathfinderPass()=default
void runOnOperation() override
mlir::LogicalResult runOnPacketFlow(DeviceOp d, mlir::OpBuilder &builder, DynamicTileAnalysis &analyzer)
mlir::LogicalResult runOnFlow(DeviceOp d, DynamicTileAnalysis &analyzer)
std::pair< TileID, Port > PhysPort
bool findPathToDest(SwitchSettings settings, TileID currTile, WireBundle currDestBundle, int currDestChannel, TileID finalTile, WireBundle finalDestBundle, int finalDestChannel)