You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A design built with --load-pdi-to-ctrl-pkt hangs on device whenever it occupies more than one
column. The same design in a single column completes with correct data. The trigger is the column
span and nothing else.
Variants derived from test/npu-xrt/reconfigure_loadpdi_persistent_memtile/aie.mlir by moving tile
coordinates, with the overlay channels read out of the ctrlpkt_npu_lowered.mlir artifact:
design
overlay channels
result
all tiles in column 0
ctrlpkt_col0_mm2s_chan0
completes, correct data
all tiles in column 1, shim at (1,0)
ctrlpkt_col1_mm2s_chan0
completes, correct data
shim col 0, compute col 1
both
hang
shim col 1, compute col 0
both
hang
One overlay control-packet shim MM2S channel works, two hang, in either direction. test/npu-xrt/reconfigure_loadpdi passes on this path only because it sits entirely in column 0.
Ruled out, each on device
The reconfiguration. It hangs with the second aiex.configure deleted, so with zero
reconfigurations.
Mem tile data seeding. It hangs with initial_value removed.
An explicit aie.memtile_dma rather than objectFIFO-generated. This was my first attribution and
it was wrong: a memtile-free design in one column works, and the memtile design in one column
works.
Unused tile declarations and the unused mem tile lock. Removing both keeps the hang.
A column whose only tile is the shim. It hangs with three tiles in column 0.
A missing TCT completion-token return path. That was a real omission and is the second commit of [AIE] Generate the column control overlay for intermediate columns #3461. Fixing it makes the cross-column routing byte-match the working single-column case in input_physical.mlir, and the hang persists.
Both columns' syncs are emitted in the lowered sequence and both channels' DMAs are issued, so
nothing is unissued or unawaited in the IR.
Repro
Take test/npu-xrt/reconfigure_loadpdi_persistent_memtile/aie.mlir and move the compute tiles to
column 1, leaving the shim at (0,0):
What happened?
A design built with
--load-pdi-to-ctrl-pkthangs on device whenever it occupies more than onecolumn. The same design in a single column completes with correct data. The trigger is the column
span and nothing else.
Variants derived from
test/npu-xrt/reconfigure_loadpdi_persistent_memtile/aie.mlirby moving tilecoordinates, with the overlay channels read out of the
ctrlpkt_npu_lowered.mlirartifact:ctrlpkt_col0_mm2s_chan0ctrlpkt_col1_mm2s_chan0One overlay control-packet shim MM2S channel works, two hang, in either direction.
test/npu-xrt/reconfigure_loadpdipasses on this path only because it sits entirely in column 0.Ruled out, each on device
aiex.configuredeleted, so with zeroreconfigurations.
initial_valueremoved.aie.memtile_dmarather than objectFIFO-generated. This was my first attribution andit was wrong: a memtile-free design in one column works, and the memtile design in one column
works.
[AIE] Generate the column control overlay for intermediate columns #3461. Fixing it makes the cross-column routing byte-match the working single-column case in
input_physical.mlir, and the hang persists.Both columns' syncs are emitted in the lowered sequence and both channels' DMAs are issued, so
nothing is unissued or unawaited in the IR.
Repro
Take
test/npu-xrt/reconfigure_loadpdi_persistent_memtile/aie.mlirand move the compute tiles tocolumn 1, leaving the shim at (0,0):
Single-column variants return in 276-310 us. The cross-column ones never return. The device
recovered after every hang, no wedge.
Hardware / device
Ryzen AI Strix,
RyzenAI-npu4, NPU firmware 1.1.2.64, 8 columns,aie.device(npu2).Version
mainat 94537df, built from source.Relevant logs