Skip to content

Deprecate IRON sequential placer and generate unplaced tiles#2899

Draft
yenjames wants to merge 12 commits intomainfrom
logical-tile-iron
Draft

Deprecate IRON sequential placer and generate unplaced tiles#2899
yenjames wants to merge 12 commits intomainfrom
logical-tile-iron

Conversation

@yenjames
Copy link
Collaborator

@yenjames yenjames commented Feb 26, 2026

Note: This PR will fail CI tests as it removes IRON placement without the corresponding placement pass.

Summary

IRON API now creates logical tiles with tile types and optional coordinates, deferring placement to MLIR pass. This PR deprecates python-side placement concepts including Placer, Placeable class and tile resolve.

Changes

  • IRON Tiles now store tile type and optional coordinates.
  • Removed Placer; Placeable class is now a basic tile property for IRON concepts that are associated with a tile.
  • RuntimeEndpoints and endpoints generated by .forward() now demand a unique logical Shim/Mem tile which will be placed.
  • By design, logical Mem/Shim tiles are allowed to map to the same aie.tile, workers (Core/computation tiles) are not.
  • Updated all programming examples and test at Python level to use new API.
  • Some python tests require changing CHECKs because some ops use coordinates as part of their AsmResultName, but since logical tiles don't necessarily have coordinates, ops using logical tiles will use default %0 etc result names, causing a change in Asm numbering for tests.
    TODO: Update documentation.

Blocked by

  • Trace configuration in IRON requires tile coordinates to setup low-level mlir ops.

- Replace tileOp use with TileLike for ops that want to support unplaced tiles.
- Right now this replacement is only in op verification as placement is expected to be first lowering pass.
- Future passes above placement level should query ops using this interface instead of concrete tileOp.
  - Tile class now stores tile type and optional coordinates
  - Device creates logical tiles without placement
  - Worker, Buffer, ObjectFifo updated for logical tile support
  - Remove tile placement from Program.resolve()
  - Update Python dialect bindings for logical_tile op
  Update 100+ examples in programming_examples/ and programming_guide/ to use
  new IRON API that emits logical tiles. Changes are mechanical one-liners.
…o same tile were recreating them. Cleaned up test files and removed deprecated placeable.py and placers.py

.
yenjames added a commit that referenced this pull request Feb 27, 2026
@github-actions
Copy link
Contributor

Coverage Report

Created: 2026-02-27 22:31

Click here for information about interpreting this report.

FilenameFunction CoverageLine CoverageRegion CoverageBranch Coverage
include/aie/Dialect/AIE/Transforms/AIEPasses.h 100.00% 100.00% 100.00% -
lib/Conversion/AIEVecToLLVM/AIEVecToLLVM.cpp 93.68% 85.50% 81.49% 67.32%
lib/Dialect/AIE/IR/AIEDialect.cpp 90.78% 86.45% 87.45% 79.13%
lib/Dialect/AIE/Transforms/AIEAssignBuffers.cpp 96.30% 88.06% 89.42% 82.84%
lib/Dialect/AIE/Transforms/AIECoreToStandard.cpp 96.67% 88.12% 83.84% 75.78%
lib/Dialect/AIEVec/IR/AIEVecOps.cpp 93.06% 74.49% 73.00% 56.80%
lib/Dialect/AIEVec/Transforms/VectorToAIEVecConversions.cpp 77.27% 69.71% 59.29% 47.44%
lib/Dialect/AIEX/Transforms/AIEDMATasksToNPU.cpp 95.45% 86.19% 90.50% 79.89%
Totals 88.12% 79.77% 74.99% 62.93%
Generated by llvm-cov -- llvm version 18.1.3

Base automatically changed from logical-tile-op to main March 11, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant