Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
35a4a75
initial next gen changes
Mar 4, 2025
3a7c006
API adjustments
Mar 13, 2025
c7b2339
added set include
Mar 14, 2025
d400d6e
compile fixes
Mar 14, 2025
12e73cd
added missing includes
Mar 14, 2025
746466b
more compilation fixes
Mar 14, 2025
725025d
guarded next gen events
Mar 14, 2025
80d6505
added gen headers to profile plugin
Mar 14, 2025
2cf7d14
added string header
Mar 14, 2025
601aaba
fixed namespace markers
Mar 14, 2025
bcb6793
more compile fixes
Mar 14, 2025
a71e363
guarding next gen used regs
Mar 17, 2025
fe23126
fixed stupid bug
Mar 17, 2025
f478c11
added next gen writer regs
Mar 17, 2025
2cb2dee
added another constructor for RegData
Mar 17, 2025
4a50e7d
removed dup APIs
Mar 17, 2025
edff177
corrected mm2dm events to match driver changes
Mar 24, 2025
2322ea2
using npu3 terminology
Mar 28, 2025
7a66d8d
compile corrections
Mar 28, 2025
19cab21
compile fixes
Apr 1, 2025
80c9fc4
corrected warning
Apr 2, 2025
f7dfe70
added API to get number of counters
Apr 21, 2025
f5d1797
fixed compile error
Apr 28, 2025
5c64e44
re-arranged profile metric sets for NPU3
May 12, 2025
adf79d2
corrected events for NPU3
May 12, 2025
b1f345f
fixed warning
May 12, 2025
eae4f9f
fixed bugs
May 13, 2025
13bfdae
keep track of DMA type for trace GMIO
May 15, 2025
001bf67
added default device name
May 15, 2025
c2eee67
initial set additions
May 27, 2025
7318ccc
added mem tile profile metric set throughputs events list
May 27, 2025
7a149be
merge of many patches; lots of npu3 changes
Jun 13, 2025
96f784b
corrected cmake files
Jun 13, 2025
480c9ab
fixed merge bugs
Jun 13, 2025
7b90a30
cmake improvements
Jun 13, 2025
7ea51e7
fixed bug
Jun 13, 2025
a758255
another bug fix
Jun 13, 2025
ff546d5
updated cmake for profile and trace
Jun 16, 2025
df8e388
cmake updates
Jun 17, 2025
4be5442
linking to aiebu object
Jun 17, 2025
f04d3be
cmake changes for trace
Jun 18, 2025
359be4a
Using NPU3 trace offload implementation
jyothees99 Jun 19, 2025
9bba749
use npu3 trace device
Jun 19, 2025
55dc1cb
towards one client build
Jun 27, 2025
41102be
using isNPU3 API
Jun 30, 2025
5f6cdcc
corrected ifdef
Jun 30, 2025
19557d7
corrected header path
Jun 30, 2025
e8cc9bb
NPU3 offloader changes
Jun 30, 2025
d149a14
break out util
Jun 30, 2025
678f287
offloader base class
Jun 30, 2025
7cae624
corrected class
Jun 30, 2025
c743a57
corrected signature in c file
Jun 30, 2025
6c46917
made members protected
Jun 30, 2025
a49d96b
compile fixes
Jul 1, 2025
7b68b58
made base class members public
Jul 1, 2025
29a65bc
created base class constructor
Jul 1, 2025
ebfad31
included proper headers
Jul 1, 2025
4e6fa95
linking aiebu library
Jul 1, 2025
7e61829
updated metric sets
Jul 1, 2025
ee2c294
rearranged stalled/running
Jul 1, 2025
afe125c
improved trace metric sets
Jul 2, 2025
1ce93a1
corrected bugs
Jul 2, 2025
954e7d8
corrected DMA indices
Jul 18, 2025
dce147d
event selection in shim tiles
Jul 22, 2025
3d9686d
updated dma event channel sels
Jul 23, 2025
7471e26
corrected warning
Jul 23, 2025
51a223f
fixed writing of trace event config file
Jul 25, 2025
cd0edab
corrected compile bug
Jul 25, 2025
59e1143
merge with master
Aug 6, 2025
c7311f0
corrected bug in cmake
Aug 6, 2025
cb7374f
bug fixes
Aug 6, 2025
e1e83d7
fixed parsing IO types
Aug 7, 2025
87565ee
alignment with master
Aug 9, 2025
8cbd19c
remove temp moved files
Aug 9, 2025
f8caabc
more backtracking
Aug 9, 2025
47ad3bf
chmod 644 to files
Aug 9, 2025
3163d98
improved merge and simplified changes
Aug 11, 2025
94a2e52
npu3 implementation files
Aug 12, 2025
e7310c7
compile fixes
Aug 12, 2025
acc6b4b
moved API changes to separate branch
Aug 12, 2025
43f1301
NPU3 util API changes
Aug 12, 2025
70a0977
guarding npu3 definitions
Aug 12, 2025
87147e6
include missing header
Aug 12, 2025
52dc731
merge with latest master
Aug 12, 2025
3a0d8ac
corrected a few bugs
Aug 12, 2025
c4fe1b3
more compile fixes
Aug 12, 2025
f14921b
fixed compile error
Aug 12, 2025
26d4da3
changes to aie_halt build
Aug 12, 2025
d948b23
more compile fixes
Aug 12, 2025
fc3d9c8
fixed another compile error
Aug 13, 2025
7450fb0
yet another bug fix
Aug 13, 2025
41b8474
guarding NPU3 offload class
Aug 13, 2025
510c578
more offloader build fixes
Aug 13, 2025
0c0451f
moved files to fix compilation issues
Aug 14, 2025
b3e9fda
merge with master
Aug 14, 2025
4b94161
adjusting add_library
Aug 14, 2025
b89c9da
fixed build warning
Aug 14, 2025
4d8a50a
guarded some npu3 code
Aug 14, 2025
cd0b1b3
bug fixes
Aug 14, 2025
dc31897
moved guard
Aug 14, 2025
036816c
including win impl headers
Aug 14, 2025
6555670
added npu3 tranx to build
Aug 18, 2025
006aeaa
cmake adjustments
Aug 20, 2025
98ad89c
Resolved issue getting while configuring Mem tile: [AIE ERROR] XAie_C…
Aug 26, 2025
e9a9bab
Resolved issue getting while configuring Core Tile: [AIE ERROR] XAie_…
jyothees99 Aug 26, 2025
705475d
merge with master
Aug 30, 2025
865fc0e
corrected poll functions
Sep 2, 2025
f81cc44
fixed poll function bug
Sep 2, 2025
6784413
merge with Vinod's PR
Sep 2, 2025
d561e3e
added NPU3 trace offloader
Sep 2, 2025
a5a0847
Fixed Unable to read ASM file issue
Sep 3, 2025
95a73b8
corrected compile error and added names to npu3 config
Sep 4, 2025
4a6efc4
code cleanup
Sep 4, 2025
86bffc7
added space
Sep 4, 2025
f24677b
Fix for error - [AIE ERROR] XAie_DmaWriteBdPvtBuffPool():1347: Invali…
Sep 8, 2025
c387f9f
Fix for incorrect tile type issue
Sep 8, 2025
c5d26fd
Merge branch 'master' of https://github.com/Xilinx/XRT into next_gen_…
Sep 8, 2025
ec88ad4
Fix for error: Invalid event ID
Sep 10, 2025
1206867
added DMA channel attributes
Sep 10, 2025
63d23c8
added placeholder counter addresses
Sep 11, 2025
9bff0cc
corrected bugs in stream switch monitor ports
Sep 11, 2025
2f96ef1
Fix issue for incorrect elf generation from asm
Sep 12, 2025
9b4dd94
Fix for Invalid stream port error for interface tile
Sep 15, 2025
304f91d
Revert "Fix for Invalid stream port error for interface tile"
Sep 15, 2025
2e08d0c
Fix for Error: Invalid stream Port for interface tile
Sep 15, 2025
b01e019
Merge branch 'master' into next_gen_aie_devel
pgschuey Sep 15, 2025
fd0a41a
use new addOpenedFile
Sep 15, 2025
0bc40af
AIE Profile NPU3 bug fixes
jyothees99 Sep 17, 2025
ea32011
Third-Party DCO Remediation Commit for Jain <[email protected]>
Sep 17, 2025
45210bd
corrected return descriptions
Sep 17, 2025
46ab16c
Merge branch 'master' of https://github.com/Xilinx/XRT into next_gen_…
Sep 25, 2025
8439875
Using save_register opcode to read register values using debug buffer…
jyothees99 Oct 6, 2025
c546995
Merge branch 'master' of https://github.com/Xilinx/XRT into next_gen_…
Oct 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/runtime_src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ else()
xrt_add_subdirectory(xocl)
xrt_add_subdirectory(xrt)
xrt_add_subdirectory(tools/xclbinutil)
xrt_add_subdirectory(xdp)
xrt_add_subdirectory(tools/scripts)
xrt_add_subdirectory(core)
xrt_add_subdirectory(xdp)

# --- Optional HIP bindings ---
if (XRT_ENABLE_HIP)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
#include <sstream>

namespace xdp::aie {
// Microblaze Debug Module (MDM) Counters
// https://docs.amd.com/r/en-US/ug984-vivado-microblaze-ref/Performance-Monitoring)
constexpr unsigned int NUM_UC_EVENT_COUNTERS = 5;
constexpr unsigned int NUM_UC_LATENCY_COUNTERS = 1;

struct aiecompiler_options
{
bool broadcast_enable_core;
Expand Down Expand Up @@ -51,7 +56,9 @@ namespace xdp {

enum io_type {
PLIO = 0,
GMIO
GMIO,
TRACE_DMA,
CONTROL_DMA
};

struct tile_type
Expand Down Expand Up @@ -203,14 +210,16 @@ namespace xdp {
uint8_t channelNumber;
uint8_t streamId;
uint8_t burstLength;
uint8_t type;

TraceGMIO(uint32_t i, uint8_t col, uint8_t num,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: 6 adjacent parameters of 'TraceGMIO' of convertible types are easily swapped by mistake [bugprone-easily-swappable-parameters]

    TraceGMIO(uint32_t i, uint8_t col, uint8_t num, 
              ^
Additional context

src/runtime_src/xdp/profile/database/static_info/aie_constructs.h:214: the first parameter in the range is 'i'

    TraceGMIO(uint32_t i, uint8_t col, uint8_t num, 
                       ^

src/runtime_src/xdp/profile/database/static_info/aie_constructs.h:215: the last parameter in the range is 't'

              uint8_t stream, uint8_t len, uint8_t t = 0)
                                                   ^

src/runtime_src/xdp/profile/database/static_info/aie_constructs.h:214:

    TraceGMIO(uint32_t i, uint8_t col, uint8_t num, 
              ^

src/runtime_src/xdp/profile/database/static_info/aie_constructs.h:214: 'uint32_t' and 'uint8_t' may be implicitly converted: 'uint32_t' (as 'unsigned int') -> 'uint8_t' (as 'unsigned char'), 'uint8_t' (as 'unsigned char') -> 'uint32_t' (as 'unsigned int')

    TraceGMIO(uint32_t i, uint8_t col, uint8_t num, 
                          ^

uint8_t stream, uint8_t len)
uint8_t stream, uint8_t len, uint8_t t = 0)
: id(i)
, shimColumn(col)
, channelNumber(num)
, streamId(stream)
, burstLength(len)
, type(t)
{}
};

Expand Down Expand Up @@ -277,8 +286,8 @@ namespace xdp {
bool port_trace_is_master[NUM_SWITCH_MONITOR_PORTS];
int8_t port_trace_ids[NUM_SWITCH_MONITOR_PORTS];
std::string port_trace_names[NUM_SWITCH_MONITOR_PORTS];
int8_t s2mm_channels[NUM_CHANNEL_SELECTS] = {-1, -1};
int8_t mm2s_channels[NUM_CHANNEL_SELECTS] = {-1, -1};
int8_t s2mm_channels[NUM_CHANNEL_SELECTS_MAX] = {-1, -1, -1, -1};
int8_t mm2s_channels[NUM_CHANNEL_SELECTS_MAX] = {-1, -1, -1, -1};
std::string s2mm_names[NUM_MEM_CHANNELS];
std::string mm2s_names[NUM_MEM_CHANNELS];
std::vector<aie_cfg_counter> pc;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,13 +320,13 @@ namespace xdp {
}

void DeviceInfo::addTraceGMIO(uint32_t id, uint8_t col, uint8_t num,
uint8_t stream, uint8_t len)
uint8_t stream, uint8_t len, uint8_t type)
{
ConfigInfo* config = currentConfig() ;
if (!config || config->currentXclbins.empty())
return ;

config->addTraceGMIO(id, col, num, stream, len) ;
config->addTraceGMIO(id, col, num, stream, len, type) ;
}

void DeviceInfo::addAIECounter(uint32_t i, uint8_t col, uint8_t row,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ namespace xdp {
// ****** Functions for AIE information on the current xclbin ******
XDP_CORE_EXPORT
void addTraceGMIO(uint32_t i, uint8_t col, uint8_t num, uint8_t stream,
uint8_t len) ;
uint8_t len, uint8_t type) ;
XDP_CORE_EXPORT
void addAIECounter(uint32_t i, uint8_t col, uint8_t row, uint8_t num,
uint16_t start, uint16_t end, uint8_t reset,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@

#include "aie_control_config_filetype.h"
#include "core/common/message.h"
#include "xdp/profile/plugin/vp_base/utility.h"
#include "xdp/profile/database/static_info/aie_util.h"
#include "xdp/profile/device/tracedefs.h"
#include "xdp/profile/plugin/vp_base/utility.h"
#include "xdp/profile/plugin/aie_profile/aie_profile_defs.h"

namespace xdp::aie {
Expand Down Expand Up @@ -225,16 +226,18 @@ AIEControlConfigFiletype::getChildGMIOs( const std::string& childStr) const
// 1 : S2MM channel 1
// 2 : MM2S channel 0 (slave/input)
// 3 : MM2S channel 1
auto slaveOrMaster = gmio_node.second.get<uint8_t>("type");
auto ioType = gmio_node.second.get<uint8_t>("type");
auto channelNumber = gmio_node.second.get<uint8_t>("channel_number");

gmio.type = io_type::GMIO;
gmio.type = (ioType == MM2S_CONTROL) ? io_type::CONTROL_DMA
: ((ioType == S2MM_TRACE) ? io_type::TRACE_DMA : io_type::GMIO);
gmio.id = gmio_node.second.get<uint32_t>("id");
gmio.name = gmio_node.second.get<std::string>("name");
gmio.logicalName = gmio_node.second.get<std::string>("logical_name");
gmio.slaveOrMaster = slaveOrMaster;
gmio.slaveOrMaster = (ioType >= 2) ? (ioType - 2) : ioType;
gmio.shimColumn = gmio_node.second.get<uint8_t>("shim_column");
gmio.channelNum = (slaveOrMaster == 0) ? (channelNumber - 2) : channelNumber;
gmio.channelNum = ((ioType == 0) && (channelNumber >= 2))
? (channelNumber - 2) : channelNumber;
gmio.streamId = gmio_node.second.get<uint8_t>("stream_id");
gmio.burstLength = gmio_node.second.get<uint8_t>("burst_length_in_16byte");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -556,14 +556,15 @@ namespace xdp {
}

void ConfigInfo::addTraceGMIO(uint32_t id, uint8_t col, uint8_t num,
uint8_t stream, uint8_t len)
uint8_t stream, uint8_t len, uint8_t t)
{
for (auto xclbin : currentXclbins)
{
if (xclbin->aie.valid)
{
xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", "Added GMIO trace of ID "+ std::to_string(id) + ".");
xclbin->aie.gmioList.push_back(new TraceGMIO(id, col, num, stream, len)) ;
xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT",
"Added GMIO trace of ID "+ std::to_string(id) + ".");
xclbin->aie.gmioList.push_back(new TraceGMIO(id, col, num, stream, len, t)) ;
return ;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ namespace xdp {
std::vector<Monitor*> getUserASMsWithTrace(XclbinInfo* xclbin) ;

void addTraceGMIO(uint32_t id, uint8_t col, uint8_t num,
uint8_t stream, uint8_t len) ;
uint8_t stream, uint8_t len, uint8_t type) ;
void addAIECounter(uint32_t i, uint8_t col, uint8_t r,
uint8_t num, uint16_t start, uint16_t end,
uint8_t reset, uint64_t load, double freq,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1108,14 +1108,14 @@ namespace xdp {
}

void VPStaticDatabase::addTraceGMIO(uint64_t deviceId, uint32_t i,
uint8_t col, uint8_t num,
uint8_t stream, uint8_t len)
uint8_t col, uint8_t num, uint8_t stream,
uint8_t len, uint8_t type)
{
std::lock_guard<std::mutex> lock(deviceLock) ;

if (deviceInfo.find(deviceId) == deviceInfo.end())
return ;
deviceInfo[deviceId]->addTraceGMIO(i, col, num, stream, len) ;
deviceInfo[deviceId]->addTraceGMIO(i, col, num, stream, len, type) ;
}

void VPStaticDatabase::addAIECounter(uint64_t deviceId, uint32_t i,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ namespace xdp {
getAIECfgTiles(uint64_t deviceId) ;
XDP_CORE_EXPORT TraceGMIO* getTraceGMIO(uint64_t deviceId, uint64_t idx) ;
XDP_CORE_EXPORT void addTraceGMIO(uint64_t deviceId, uint32_t i, uint8_t col,
uint8_t num, uint8_t stream, uint8_t len) ;
uint8_t num, uint8_t stream, uint8_t len, uint8_t type) ;
XDP_CORE_EXPORT void addAIECounter(uint64_t deviceId, uint32_t i, uint8_t col,
uint8_t row, uint8_t num, uint16_t start,
uint16_t end, uint8_t reset, uint64_t load,
Expand Down
Loading
Loading