15#include "mlir/Pass/Pass.h"
16#include "mlir/Pass/PassOptions.h"
21#include "aie/Dialect/AIEX/Transforms/AIEXPasses.h.inc"
26std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
28std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
31std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
33std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
39std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
41std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
43std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
45std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
47std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
49std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
51std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
53 const AIEAssignRuntimeSequenceBDIDsOptions &options);
54std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
56std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
58std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
60std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
62std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
64std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
66std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
68std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
70std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
73std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
75std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
77std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
79std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
81std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
83std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
85std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
87std::unique_ptr<mlir::OperationPass<AIE::DeviceOp>>
89std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
91std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
93 AIELowerScratchpadParametersOptions options);
96#define GEN_PASS_REGISTRATION
97#include "aie/Dialect/AIEX/Transforms/AIEXPasses.h.inc"
107 const AIE::AIEPlaceTilesOptions &options);
111 bool packetSwObjFifos,
bool ctrlPktOverlay,
112 bool loadPdiToCtrlPkt,
bool skipObjectFifoVerify);
118 :
public mlir::PassPipelineOptions<AIEResourceStagesOptions> {
120 *
this,
"placer", llvm::cl::desc(
"Placement algorithm to use"),
123 "Sequential column-major placement"),
125 "Simulated annealing placement")),
128 llvm::cl::desc(
"Max cores per column"),
132 llvm::cl::desc(
"Random seed for SA placer (0 = non-deterministic)"),
136 llvm::cl::desc(
"Scale on the SA placer's search budget"),
137 llvm::cl::init(1.0)};
139 llvm::cl::desc(
"Dynamic objectFIFOs"),
140 llvm::cl::init(
true)};
142 llvm::cl::desc(
"Packet-switched objectFIFOs"),
143 llvm::cl::init(
false)};
145 *
this,
"generate-ctrl-pkt-overlay",
146 llvm::cl::desc(
"Route shim-to-tile control overlay"),
147 llvm::cl::init(
false)};
149 *
this,
"load-pdi-to-ctrl-pkt",
150 llvm::cl::desc(
"Load PDIs over control packets"), llvm::cl::init(
false)};
152 *
this,
"skip-objectFifo-verify",
153 llvm::cl::desc(
"Skip structural verification of split objectFifo IR"),
154 llvm::cl::init(
false)};
156 *
this,
"placement-budget",
157 llvm::cl::desc(
"Buffer placements to try per tile before giving up"),
158 llvm::cl::init(100000)};
160 *
this,
"allow-deadlock-prone-routing",
161 llvm::cl::desc(
"Warn of, rather than fail on, deadlock-prone flows"),
162 llvm::cl::init(
false)};
constexpr llvm::StringLiteral initEntrySequenceName
Name of the runtime sequence aie-expand-load-pdi{init-entry} adds.
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEResolveAddressPatchBuffersPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerMemcpyPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerDynamicBDPoolPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIETransformBfpTypesPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIECreateLocksPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIECtrlPacketInferTilesPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEReserveRuntimeBDIDsPass()
void addBufferAddressStage(mlir::OpPassManager &pm, int64_t placementBudget)
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerSetLockPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEDmaToNpuPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIECreateCoresPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEMaterializeRuntimeSequencesPass()
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()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIENpuToCertPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEDecomposeLargeDmaBdPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEExpandLoadPdiPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEXToStandardPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIECertVerifyPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIECtrlPacketToDmaPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerCoreResetPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIESubstituteShimDMAAllocationsPass()
void registerAIEResourceStagesPipeline()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIELowerScratchpadParametersPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEVerifyRuntimeRearmPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEMaterializeBDChainsPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerMulticastPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIESplitLongRepeatsPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIETxnToControlPacketPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEDMATasksToNPUPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIESCFToControlFlowPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEBroadcastPacketPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEFuseTraceBuffersPass()
void addLoweringStage(mlir::OpPassManager &pm, bool dynamicObjFifos, bool packetSwObjFifos, bool ctrlPktOverlay, bool loadPdiToCtrlPkt, bool skipObjectFifoVerify)
Affine lowering through aie-prepare-buffers.
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEUnrollRuntimeSequenceLoopsPass()
void addTraceStage(mlir::OpPassManager &pm)
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIECertPagesPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIEAssignRuntimeSequenceBDIDsPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELegalizeControlPacketPass()
std::unique_ptr< mlir::OperationPass< AIE::DeviceOp > > createAIELowerDmaChannelResetPass()
Options of aie-resource-stages, named and defaulted as aiecc's flags.
Option< int64_t > placementBudget
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