|
MLIR-AIE
|
#include "aie/Dialect/AIE/IR/AIETargetModel.h"
Inheritance diagram for xilinx::AIE::AIE2TargetModel:
Collaboration diagram for xilinx::AIE::AIE2TargetModel:Public Member Functions | |
| AIE2TargetModel (TargetModelKind k) | |
| AIEArch | getTargetArch () const override |
| Return the target architecture. | |
| uint32_t | getAddressGenGranularity () const override |
| Return the data bus width of the device. | |
| std::optional< TileID > | getMemWest (TileID src) const override |
| Return the tile ID of the memory to the west of the given tile, if it exists. | |
| std::optional< TileID > | getMemEast (TileID src) const override |
| Return the tile ID of the memory to the east of the given tile, if it exists. | |
| std::optional< TileID > | getMemNorth (TileID src) const override |
| Return the tile ID of the memory to the north of the given tile, if it exists. | |
| std::optional< TileID > | getMemSouth (TileID src) const override |
| Return the tile ID of the memory to the south of the given tile, if it exists. | |
| bool | isMemWest (int srcCol, int srcRow, int dstCol, int dstRow) const override |
| Return true if src has a memory tile which is West of dst. | |
| bool | isMemEast (int srcCol, int srcRow, int dstCol, int dstRow) const override |
| Return true if src has a memory tile which is East of dst. | |
| bool | isMemNorth (int srcCol, int srcRow, int dstCol, int dstRow) const override |
| Return true if src has a memory tile which is North of dst. | |
| bool | isMemSouth (int srcCol, int srcRow, int dstCol, int dstRow) const override |
| Return true if src has a memory tile which is South of dst. | |
| bool | isLegalMemAffinity (int coreCol, int coreRow, int memCol, int memRow) const override |
| Return true if core can access the memory in mem. | |
| uint32_t | getMemInternalBaseAddress (TileID src) const override |
| Return the base address in the local address map for a core. | |
| uint32_t | getMemSouthBaseAddress () const override |
| Return the base address in the local address map for a core. | |
| uint32_t | getMemWestBaseAddress () const override |
| Return the base address in the local address map for a core. | |
| uint32_t | getMemNorthBaseAddress () const override |
| Return the base address in the local address map for a core. | |
| uint32_t | getMemEastBaseAddress () const override |
| Return the base address in the local address map for a core. | |
| uint32_t | getLocalMemorySize () const override |
| Return the size (in bytes) of the local data memory of a core. | |
| uint32_t | getAccumulatorCascadeSize () const override |
| Return the size (in bits) of the accumulator/cascade. | |
| uint32_t | getNumLocks (AIETileType tileType) const override |
| Return the number of lock objects for a given tile type. | |
| uint32_t | getMaxLockValue () const override |
| Return the maximum value that can be stored in a lock register. | |
| std::optional< uint32_t > | getLocalLockAddress (uint32_t lockId, TileID tile) const override |
| uint32_t | getNumBDs (AIETileType tileType) const override |
| Return the number of buffer descriptors for a given tile type. | |
| bool | isBdChannelAccessible (int col, int row, uint32_t bd_id, int channel) const override |
Return true iff buffer descriptor bd_id on tile (col, row) can be submitted on channel channel. | |
| uint64_t | getDmaBdAddress (int col, int row, uint32_t bd_id, int channel, AIE::DMAChannelDir direction) const override |
| Return the array address of the dma buffer descriptor for the given col, row, buffer descriptor id, channel and direction. | |
| uint32_t | getDmaBdAddressOffset (int col, int row) const override |
| Return the offset of the base address field within the shim dma buffer descriptor. | |
| uint32_t | getDmaControlAddress (int col, int row, int channel, AIE::DMAChannelDir direction) const override |
| Return the array address of the dma task queue register for the given col, row, channel and direction. | |
| uint32_t | getMemTileSize () const override |
| Return the size (in bytes) of a MemTile. | |
| uint32_t | getNumBanks (int col, int row) const override |
| Return the number of memory banks of a given tile. | |
| uint32_t | getMaxChannelNumForAdjacentMemTile (int col, int row) const override |
| uint32_t | getNumDestSwitchboxConnections (int col, int row, WireBundle bundle) const override |
| Return the number of destinations of connections inside a switchbox. | |
| uint32_t | getNumSourceSwitchboxConnections (int col, int row, WireBundle bundle) const override |
| Return the number of sources of connections inside a switchbox. | |
| uint32_t | getNumDestShimMuxConnections (int col, int row, WireBundle bundle) const override |
| Return the number of destinations of connections inside a shimmux. | |
| uint32_t | getNumSourceShimMuxConnections (int col, int row, WireBundle bundle) const override |
| Return the number of sources of connections inside a shimmux. | |
| bool | isLegalTileConnection (int col, int row, WireBundle srcBundle, int srcChan, WireBundle dstBundle, int dstChan) const override |
| std::optional< uint32_t > | getStreamSwitchPortIndex (int col, int row, WireBundle bundle, uint32_t channel, bool master) const override |
| Get stream switch port index for a given port specification Return port index for Stream_Switch_Event_Port_Selection register, or nullopt if invalid. | |
| uint32_t | getColumnShift () const override |
| uint32_t | getRowShift () const override |
| std::vector< std::pair< uint32_t, uint32_t > > | getShimBurstEncodingsAndLengths () const override |
| virtual uint32_t | getNumLocks (AIETileType tileType) const=0 |
| Return the number of lock objects for a given tile type. | |
| uint32_t | getNumLocks (int col, int row) const |
| Return the number of lock objects for a tile at the given coordinates. | |
Public Member Functions inherited from xilinx::AIE::AIETargetModel | |
| TargetModelKind | getKind () const |
| AIETargetModel (TargetModelKind k) | |
| virtual | ~AIETargetModel () |
| virtual int | columns () const =0 |
| Return the number of columns in the device. | |
| virtual int | rows () const =0 |
| Return the number of rows in the device. | |
| virtual AIETileType | getTileType (int col, int row) const =0 |
| Return the tile type for the given tile coordinates. | |
| bool | isCoreTile (int col, int row) const |
| Return true if the given tile is a Core tile. | |
| bool | isMemTile (int col, int row) const |
| Return true if the given tile is a Mem tile. | |
| bool | isShimNOCTile (int col, int row) const |
| Return true if the given tile is a ShimNOC tile. | |
| bool | isShimPLTile (int col, int row) const |
| Return true if the given tile is a ShimPL tile. | |
| bool | isShimNOCorPLTile (int col, int row) const |
| Return true if the given tile is either a ShimNOC or ShimPL tile. | |
| virtual bool | isValidTile (TileID src) const |
| Return true if the given tile ID is valid. | |
| bool | isInternal (int srcCol, int srcRow, int dstCol, int dstRow) const |
| Return true if src is the internal memory of dst. | |
| bool | isWest (int srcCol, int srcRow, int dstCol, int dstRow) const |
| Return true if src is West of dst. | |
| bool | isEast (int srcCol, int srcRow, int dstCol, int dstRow) const |
| Return true if src is East of dst. | |
| bool | isNorth (int srcCol, int srcRow, int dstCol, int dstRow) const |
| Return true if src is North of dst. | |
| bool | isSouth (int srcCol, int srcRow, int dstCol, int dstRow) const |
| Return true if src is South of dst. | |
| std::optional< uint32_t > | getLockLocalBaseIndex (int localCol, int localRow, int lockCol, int lockRow) const |
| Return the lock base index (or offset) in the local tile when accessing a neighbor's lock or an empty optional if an invalid neighbor is given Takes into account differences between Memory and Core tiles. | |
| std::optional< uint32_t > | getMemLocalBaseAddress (int localCol, int localRow, int memCol, int memRow) const |
| Return the memory base address (or offset) in the local tile when accessing a neighbor's memory or an empty optional if an invalid neighbor is given Takes into account differences between Memory and Core tiles. | |
| uint32_t | getNumLocks (int col, int row) const |
| Return the number of lock objects for a tile at the given coordinates. | |
| uint32_t | getNumBDs (int col, int row) const |
| Return the number of buffer descriptors supported by the DMA in the given tile. | |
| uint32_t | getNumBDsForChannel (int col, int row, int channel) const |
Return the number of buffer descriptors accessible on channel channel for the tile at (col, row). | |
| virtual uint32_t | getNumMemTileRows () const =0 |
| void | validate () const |
| uint32_t | getModelProperties () const |
| void | addModelProperty (uint32_t prop) |
| bool | hasProperty (ModelProperty Prop) const |
| virtual bool | isSupportedBlockFormat (std::string const &format) const |
| const RegisterInfo * | lookupRegister (llvm::StringRef name, TileID tile, bool isMem=false) const |
| Register Database API - provides access to register and event information for trace configuration and low-level register access. | |
| std::optional< uint32_t > | lookupEvent (llvm::StringRef name, TileID tile, bool isMem=false) const |
| Lookup event number by name and tile. | |
| uint32_t | encodeFieldValue (const BitFieldInfo &field, uint32_t value) const |
| Encode a field value with proper bit shifting. | |
| std::optional< uint32_t > | getFieldMask (const BitFieldInfo &field) const |
| Compute a 32-bit mask for a register field. | |
| std::optional< uint32_t > | resolvePortValue (llvm::StringRef value, TileID tile, bool master) const |
| Resolve stream switch port specification to port index. | |
Static Public Member Functions | |
| static bool | classof (const AIETargetModel *model) |
Protected Member Functions | |
| std::unique_ptr< RegisterDatabase > | loadRegisterDatabase () const override |
| AIE2 TargetModel. | |
Protected Member Functions inherited from xilinx::AIE::AIETargetModel | |
| const RegisterDatabase * | getRegisterDatabase () const |
| Get the register database, loading it lazily on first access. | |
Additional Inherited Members | |
Public Types inherited from xilinx::AIE::AIETargetModel | |
| enum | TargetModelKind { TK_AIE1_VC1902 , TK_AIE1_Last , TK_AIE2_VE2302 , TK_AIE2_VE2802 , TK_AIE2_NPU1_1Col , TK_AIE2_NPU1_2Col , TK_AIE2_NPU1_3Col , TK_AIE2_NPU1_4Col , TK_AIE2_NPU1_Last , TK_AIE2_NPU2 = TK_AIE2_NPU1_Last , TK_AIE2_NPU2_1Col , TK_AIE2_NPU2_2Col , TK_AIE2_NPU2_3Col , TK_AIE2_NPU2_4Col , TK_AIE2_NPU2_5Col , TK_AIE2_NPU2_6Col , TK_AIE2_NPU2_7Col , TK_AIE2_NPU2_Last , TK_AIE2_Last = TK_AIE2_NPU2_Last } |
| enum | ModelProperty { UsesSemaphoreLocks = 1U << 0 , IsNPU = 1U << 1 , IsVirtualized = 1U << 2 , UsesMultiDimensionalBDs = 1U << 3 } |
Definition at line 510 of file AIETargetModel.h.
|
inline |
Definition at line 515 of file AIETargetModel.h.
References xilinx::AIE::AIETargetModel::addModelProperty(), xilinx::AIE::AIETargetModel::UsesMultiDimensionalBDs, and xilinx::AIE::AIETargetModel::UsesSemaphoreLocks.
|
inlinestatic |
Definition at line 616 of file AIETargetModel.h.
References xilinx::AIE::AIETargetModel::getKind(), xilinx::AIE::AIETargetModel::TK_AIE2_Last, and xilinx::AIE::AIETargetModel::TK_AIE2_VE2302.
|
inlineoverridevirtual |
Return the size (in bits) of the accumulator/cascade.
Implements xilinx::AIE::AIETargetModel.
Definition at line 549 of file AIETargetModel.h.
|
inlineoverridevirtual |
Return the data bus width of the device.
Implements xilinx::AIE::AIETargetModel.
Definition at line 523 of file AIETargetModel.h.
|
inlineoverridevirtual |
Implements xilinx::AIE::AIETargetModel.
Definition at line 613 of file AIETargetModel.h.
Referenced by getDmaBdAddress(), and getDmaControlAddress().
|
overridevirtual |
Return the array address of the dma buffer descriptor for the given col, row, buffer descriptor id, channel and direction.
Not all architecture variants will use channel and direction so these have default values.
Implements xilinx::AIE::AIETargetModel.
Definition at line 782 of file AIETargetModel.cpp.
References xilinx::AIE::col, getColumnShift(), getRowShift(), xilinx::AIE::AIETargetModel::isCoreTile(), xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isShimNOCTile(), and xilinx::AIE::row.
|
overridevirtual |
Return the offset of the base address field within the shim dma buffer descriptor.
Implements xilinx::AIE::AIETargetModel.
Definition at line 800 of file AIETargetModel.cpp.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::isCoreTile(), and xilinx::AIE::row.
|
overridevirtual |
Return the array address of the dma task queue register for the given col, row, channel and direction.
Implements xilinx::AIE::AIETargetModel.
Definition at line 807 of file AIETargetModel.cpp.
References xilinx::AIE::channel, xilinx::AIE::col, getColumnShift(), getRowShift(), xilinx::AIE::AIETargetModel::isCoreTile(), xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isShimNOCTile(), and xilinx::AIE::row.
|
overridevirtual |
Implements xilinx::AIE::AIETargetModel.
Definition at line 1120 of file AIETargetModel.cpp.
References getNumLocks(), xilinx::AIE::AIETargetModel::isCoreTile(), xilinx::AIE::AIETargetModel::isMemTile(), and xilinx::AIE::AIETargetModel::isShimNOCorPLTile().
|
inlineoverridevirtual |
Return the size (in bytes) of the local data memory of a core.
Implements xilinx::AIE::AIETargetModel.
Definition at line 548 of file AIETargetModel.h.
|
inlineoverridevirtual |
Implements xilinx::AIE::AIETargetModel.
Definition at line 592 of file AIETargetModel.h.
|
inlineoverridevirtual |
Return the maximum value that can be stored in a lock register.
Implements xilinx::AIE::AIETargetModel.
Definition at line 556 of file AIETargetModel.h.
|
overridevirtual |
Return the tile ID of the memory to the east of the given tile, if it exists.
Implements xilinx::AIE::AIETargetModel.
Definition at line 721 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isValidTile(), and xilinx::AIE::src.
|
inlineoverridevirtual |
Return the base address in the local address map for a core.
Implements xilinx::AIE::AIETargetModel.
Definition at line 547 of file AIETargetModel.h.
Referenced by getMemInternalBaseAddress().
|
inlineoverridevirtual |
Return the base address in the local address map for a core.
Implements xilinx::AIE::AIETargetModel.
Definition at line 540 of file AIETargetModel.h.
References getMemEastBaseAddress().
|
overridevirtual |
Return the tile ID of the memory to the north of the given tile, if it exists.
Implements xilinx::AIE::AIETargetModel.
Definition at line 730 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isValidTile(), and xilinx::AIE::src.
|
inlineoverridevirtual |
Return the base address in the local address map for a core.
Implements xilinx::AIE::AIETargetModel.
Definition at line 546 of file AIETargetModel.h.
|
overridevirtual |
Return the tile ID of the memory to the south of the given tile, if it exists.
Implements xilinx::AIE::AIETargetModel.
Definition at line 737 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isValidTile(), and xilinx::AIE::src.
|
inlineoverridevirtual |
Return the base address in the local address map for a core.
Implements xilinx::AIE::AIETargetModel.
Definition at line 544 of file AIETargetModel.h.
|
inlineoverridevirtual |
Return the size (in bytes) of a MemTile.
Implements xilinx::AIE::AIETargetModel.
Definition at line 586 of file AIETargetModel.h.
|
overridevirtual |
Return the tile ID of the memory to the west of the given tile, if it exists.
Implements xilinx::AIE::AIETargetModel.
Definition at line 712 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isValidTile(), and xilinx::AIE::src.
|
inlineoverridevirtual |
Return the base address in the local address map for a core.
Implements xilinx::AIE::AIETargetModel.
Definition at line 545 of file AIETargetModel.h.
|
inlineoverridevirtual |
Return the number of memory banks of a given tile.
Implements xilinx::AIE::AIETargetModel.
Definition at line 588 of file AIETargetModel.h.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::getTileType(), and xilinx::AIE::row.
|
inlineoverridevirtual |
Return the number of buffer descriptors for a given tile type.
Implements xilinx::AIE::AIETargetModel.
Definition at line 561 of file AIETargetModel.h.
|
overridevirtual |
Return the number of destinations of connections inside a shimmux.
These are the targets of connect operations in the switchbox.
Implements xilinx::AIE::AIETargetModel.
Definition at line 982 of file AIETargetModel.cpp.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::isShimNOCorPLTile(), and xilinx::AIE::row.
|
overridevirtual |
Return the number of destinations of connections inside a switchbox.
These are the targets of connect operations in the switchbox.
Implements xilinx::AIE::AIETargetModel.
Definition at line 832 of file AIETargetModel.cpp.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::columns(), xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isShimNOCTile(), xilinx::AIE::AIETargetModel::isShimPLTile(), xilinx::AIE::row, and xilinx::AIE::AIETargetModel::rows().
Referenced by isLegalTileConnection().
|
inlineoverridevirtual |
Return the number of lock objects for a given tile type.
Implements xilinx::AIE::AIETargetModel.
Definition at line 552 of file AIETargetModel.h.
Referenced by getLocalLockAddress().
|
virtual |
Return the number of lock objects for a given tile type.
Implements xilinx::AIE::AIETargetModel.
|
inline |
Return the number of lock objects for a tile at the given coordinates.
Definition at line 267 of file AIETargetModel.h.
|
overridevirtual |
Return the number of sources of connections inside a shimmux.
These are the origins of connect operations in the switchbox.
Implements xilinx::AIE::AIETargetModel.
Definition at line 1002 of file AIETargetModel.cpp.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::isShimNOCorPLTile(), and xilinx::AIE::row.
|
overridevirtual |
Return the number of sources of connections inside a switchbox.
These are the origins of connect operations in the switchbox.
Implements xilinx::AIE::AIETargetModel.
Definition at line 903 of file AIETargetModel.cpp.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::columns(), xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isShimNOCTile(), xilinx::AIE::AIETargetModel::isShimPLTile(), xilinx::AIE::row, and xilinx::AIE::AIETargetModel::rows().
Referenced by isLegalTileConnection().
|
inlineoverridevirtual |
Implements xilinx::AIE::AIETargetModel.
Definition at line 614 of file AIETargetModel.h.
Referenced by getDmaBdAddress(), and getDmaControlAddress().
|
overridevirtual |
Implements xilinx::AIE::AIETargetModel.
Reimplemented in xilinx::AIE::BaseNPU2TargetModel.
Definition at line 1115 of file AIETargetModel.cpp.
|
overridevirtual |
Get stream switch port index for a given port specification Return port index for Stream_Switch_Event_Port_Selection register, or nullopt if invalid.
Implements xilinx::AIE::AIETargetModel.
Definition at line 1246 of file AIETargetModel.cpp.
References xilinx::AIE::col, xilinx::AIE::AIETargetModel::isCoreTile(), xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isShimNOCTile(), and xilinx::AIE::row.
|
overridevirtual |
Return the target architecture.
Implements xilinx::AIE::AIETargetModel.
Reimplemented in xilinx::AIE::BaseNPU2TargetModel.
Definition at line 709 of file AIETargetModel.cpp.
References xilinx::AIE2.
|
inlineoverridevirtual |
Return true iff buffer descriptor bd_id on tile (col, row) can be submitted on channel channel.
Implements xilinx::AIE::AIETargetModel.
Definition at line 565 of file AIETargetModel.h.
References xilinx::AIE::channel, xilinx::AIE::col, xilinx::AIE::AIETargetModel::getTileType(), and xilinx::AIE::row.
|
overridevirtual |
Return true if core can access the memory in mem.
Implements xilinx::AIE::AIETargetModel.
Definition at line 766 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isEast(), xilinx::AIE::AIETargetModel::isInternal(), isMemEast(), isMemNorth(), isMemSouth(), xilinx::AIE::AIETargetModel::isMemTile(), isMemWest(), and xilinx::AIE::AIETargetModel::isWest().
|
overridevirtual |
Implements xilinx::AIE::AIETargetModel.
Definition at line 1021 of file AIETargetModel.cpp.
References xilinx::AIE::col, getNumDestSwitchboxConnections(), getNumSourceSwitchboxConnections(), xilinx::AIE::AIETargetModel::isCoreTile(), xilinx::AIE::AIETargetModel::isMemTile(), xilinx::AIE::AIETargetModel::isShimNOCorPLTile(), and xilinx::AIE::row.
|
overridevirtual |
Return true if src has a memory tile which is East of dst.
Implements xilinx::AIE::AIETargetModel.
Definition at line 751 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isInternal().
Referenced by isLegalMemAffinity().
|
overridevirtual |
Return true if src has a memory tile which is North of dst.
Implements xilinx::AIE::AIETargetModel.
Definition at line 756 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isNorth().
Referenced by isLegalMemAffinity().
|
overridevirtual |
Return true if src has a memory tile which is South of dst.
Implements xilinx::AIE::AIETargetModel.
Definition at line 761 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isSouth().
Referenced by isLegalMemAffinity().
|
overridevirtual |
Return true if src has a memory tile which is West of dst.
Implements xilinx::AIE::AIETargetModel.
Definition at line 746 of file AIETargetModel.cpp.
References xilinx::AIE::AIETargetModel::isWest().
Referenced by isLegalMemAffinity().
|
overrideprotectedvirtual |
AIE2 TargetModel.
Reimplemented from xilinx::AIE::AIETargetModel.
Definition at line 705 of file AIETargetModel.cpp.
References xilinx::AIE::RegisterDatabase::loadAIE2().