11#include "mlir/Conversion/AffineToStandard/AffineToStandard.h"
12#include "mlir/Pass/PassManager.h"
13#include "mlir/Pass/PassRegistry.h"
20 const AIEPlaceTilesOptions &options) {
25 OpPassManager &dpm = pm.nest<DeviceOp>();
35 bool packetSwObjFifos,
bool ctrlPktOverlay,
36 bool loadPdiToCtrlPkt,
bool skipObjectFifoVerify,
37 llvm::ArrayRef<int> coverColumns,
38 bool adaptiveOverlay,
bool checkQueueSpace) {
39 pm.addPass(createLowerAffinePass());
45 if (!skipObjectFifoVerify)
47 AIEGenerateColumnControlOverlayOptions overlay;
48 overlay.configuration = ctrlPktOverlay || loadPdiToCtrlPkt;
49 overlay.adaptive = adaptiveOverlay;
50 overlay.coverColumns = llvm::to_vector(coverColumns);
54 OpPassManager &dpm = pm.nest<DeviceOp>();
57 AIEObjectFifoInsertCoreQueuePushesOptions pushOptions;
58 pushOptions.checkQueueSpace = checkQueueSpace;
63 AIEObjectFifoUnrollOptions unroll;
64 unroll.clDefaultDynamic = dynamicObjFifos;
81 AIEAssignBufferAddressesOptions options;
82 options.clPlacementBudget = placementBudget;
88 OpPassManager &dpm = pm.nest<DeviceOp>();
89 AIERoutePathfinderFlowsOptions options;
90 options.clAllowDeadlockProne = allowDeadlockProne;
95 PassPipelineRegistration<AIEResourceStagesOptions>(
96 "aie-resource-stages",
97 "aiecc's placement, trace, lowering, buffer address and routing stages",
99 AIEPlaceTilesOptions place;
100 place.clPlacerType = options.
placer;
102 place.clSASeed = options.
saSeed;
103 place.clSAEffort = options.
saEffort;
void addLoweringStage(mlir::OpPassManager &pm, bool dynamicObjFifos, bool packetSwObjFifos, bool ctrlPktOverlay, bool loadPdiToCtrlPkt, bool skipObjectFifoVerify, llvm::ArrayRef< int > coverColumns={}, bool adaptiveOverlay=true, bool checkQueueSpace=true)
Affine lowering through aie-prepare-buffers.
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEReserveRuntimeBDIDsPass()
void addBufferAddressStage(mlir::OpPassManager &pm, int64_t placementBudget)
void addRoutingStage(mlir::OpPassManager &pm, bool allowDeadlockProne)
void addPlacementStage(mlir::OpPassManager &pm, const AIE::AIEPlaceTilesOptions &options)
aiecc's stages that give a design its tiles, locks, BD IDs, buffers and routes, in its order.
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEXInlineTraceConfigPass()
void registerAIEResourceStagesPipeline()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIELowerScratchpadParametersPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerMulticastPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEBroadcastPacketPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEFuseTraceBuffersPass()
void addTraceStage(mlir::OpPassManager &pm)
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEInsertTraceFlowsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIETraceRegPackWritesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPrepareBuffersPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLowerCoresPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELowerCoreIssuedConfigurationPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoInsertCoreQueuePushesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignTileCtrlIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELowerCascadeFlowsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoAllocatePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIENormalizeDmaBdDimsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEGenerateColumnControlOverlayPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignLockIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPlaceTilesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoUnrollPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignPacketIdsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEAnnotateShimSharingPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIESplitFlowViasPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoErasePoolsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIECanonicalizeDevicePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignBufferAddressesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoVerifyPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIETraceToConfigPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignBufferDescriptorIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLowerDMAsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPathfinderPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoSplitPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEImportOverlayPass()
Options of aie-resource-stages, named and defaulted as aiecc's flags.
Option< int64_t > placementBudget
Option< bool > adaptiveOverlay
Option< bool > ctrlPktOverlay
Option< bool > packetSwObjFifos
Option< bool > dynamicObjFifos
Option< AIE::PlacerType > placer
Option< bool > allowDeadlockProneRouting
Option< int > coresPerCol
Option< bool > loadPdiToCtrlPkt
Option< bool > skipObjectFifoVerify
Option< double > saEffort