From 29e21a99ab644bec7db878451a55241aafbc9260 Mon Sep 17 00:00:00 2001 From: Prerona Dutta Date: Wed, 15 Apr 2026 14:50:52 -0700 Subject: [PATCH 1/6] fixing error/warnings in XDP plugins Signed-off-by: Prerona Dutta --- profile/plugin/aie_profile/aie_profile_metadata.cpp | 9 ++++++++- profile/plugin/aie_profile/edge/aie_profile.cpp | 5 ++++- profile/plugin/aie_trace/aie_trace_metadata.cpp | 13 ++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/profile/plugin/aie_profile/aie_profile_metadata.cpp b/profile/plugin/aie_profile/aie_profile_metadata.cpp index 2416fc68..aaa7bb46 100644 --- a/profile/plugin/aie_profile/aie_profile_metadata.cpp +++ b/profile/plugin/aie_profile/aie_profile_metadata.cpp @@ -921,7 +921,7 @@ namespace xdp { } catch (...) { std::stringstream msg; - msg << "Channel specifications in graph_based_interface_metrics " + msg << "Channel specifications in graph_based_interface_tile_metrics " << "are not valid and hence ignored."; xrt_core::message::send(severity_level::warning, "XRT", msg.str()); } @@ -1083,6 +1083,9 @@ namespace xdp { } catch (std::invalid_argument const&) { // maxColumn is not an integer i.e either 1st style or wrong format, skip for now + xrt_core::message::send(severity_level::warning, "XRT", + "tile_based_interface_tile_metrics: invalid range line. Ignored: " + + metricsSettings[i]); continue; } @@ -1149,6 +1152,10 @@ namespace xdp { try { col = aie::convertStringToUint8(metrics[i][1]); + xrt_core::message::send(severity_level::warning, "XRT", + "tile_based_interface_tile_metrics: invalid format. Ignored: " + + metricsSettings[i]); + continue; } catch (std::invalid_argument const&) { // max column is not a number, so the expected single column specification. Handle this here diff --git a/profile/plugin/aie_profile/edge/aie_profile.cpp b/profile/plugin/aie_profile/edge/aie_profile.cpp index d600ba93..4749fe81 100644 --- a/profile/plugin/aie_profile/edge/aie_profile.cpp +++ b/profile/plugin/aie_profile/edge/aie_profile.cpp @@ -121,7 +121,10 @@ namespace xdp { if (!runtimeCounters) { // No runtime counters means there were no valid metrics configured for profiling this design. There is nothing to profile, so return early. xrt_core::message::send(severity_level::warning, "XRT", - "No valid metric setting found for this design. Please specify valid tile_based_[aie|aie_memory|interface_tile]_metrics under \"AIE_profile_settings\" section in your xrt.ini if you want to configure this design."); + "No valid metric setting found for this design. Please specify valid " + "graph_based_[aie|aie_memory|memory_tile|interface_tile]_metrics and/or " + "tile_based_[aie|aie_memory|memory_tile|interface_tile|microcontroller]_metrics " + "under \"AIE_profile_settings\" section in your xrt.ini if you want to configure this design."); return; } } diff --git a/profile/plugin/aie_trace/aie_trace_metadata.cpp b/profile/plugin/aie_trace/aie_trace_metadata.cpp index b8171edb..96d7868c 100644 --- a/profile/plugin/aie_trace/aie_trace_metadata.cpp +++ b/profile/plugin/aie_trace/aie_trace_metadata.cpp @@ -417,7 +417,7 @@ namespace xdp { && (std::find(allValidEntries.begin(), allValidEntries.end(), graphMetrics[i][1]) == allValidEntries.end())) { std::stringstream msg; msg << "Could not find " << entryType << " " << graphMetrics[i][1] - << " as specified in graph_based_" << tileName << "_metrics setting." + << " as specified in graph_based_" << tileName << "_tile_metrics setting." << " The following " << entryType << "s are valid : "; if (!allValidEntries.empty()) { msg << allValidEntries[0]; @@ -460,7 +460,7 @@ namespace xdp { && (std::find(allValidEntries.begin(), allValidEntries.end(), graphMetrics[i][1]) == allValidEntries.end())) { std::stringstream msg; msg << "Could not find " << entryType << " " << graphMetrics[i][1] - << " as specified in graph_based_" << tileName << "_metrics setting." + << " as specified in graph_based_" << tileName << "_tile_metrics setting." << " The following " << entryType << "s are valid : "; if (!allValidEntries.empty()) { msg << allValidEntries[0]; @@ -788,7 +788,7 @@ namespace xdp { } } catch (...) { std::stringstream msg; - msg << "Channel specifications in graph_based_interface_metrics " + msg << "Channel specifications in graph_based_interface_tile_metrics " << "are not valid and hence ignored."; xrt_core::message::send(severity_level::warning, "XRT", msg.str()); } @@ -894,6 +894,9 @@ namespace xdp { } catch (std::invalid_argument const&) { // Max column is not an integer, so either first style or wrong format. Skip for now. + xrt_core::message::send(severity_level::warning, "XRT", + "tile_based_interface_tile_metrics: invalid range line. Ignored: " + + metricsSettings[i]); continue; } @@ -952,6 +955,10 @@ namespace xdp { uint8_t col = 0; try { col = aie::convertStringToUint8(metrics[i][1]); + xrt_core::message::send(severity_level::warning, "XRT", + "tile_based_interface_tile_metrics: invalid format. Ignored: " + + metricsSettings[i]); + continue; } catch (std::invalid_argument const&) { // Max column is not an integer, so expected single column specification. Handle this here. From c474a10aff4735870418831535aa7323b7d378b3 Mon Sep 17 00:00:00 2001 From: Prerona Dutta Date: Wed, 15 Apr 2026 14:57:44 -0700 Subject: [PATCH 2/6] adding profiling error/warnings fixes to ve2 Signed-off-by: Prerona Dutta --- profile/plugin/aie_profile/ve2/aie_profile.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/profile/plugin/aie_profile/ve2/aie_profile.cpp b/profile/plugin/aie_profile/ve2/aie_profile.cpp index 3aec430f..42bd6ee4 100644 --- a/profile/plugin/aie_profile/ve2/aie_profile.cpp +++ b/profile/plugin/aie_profile/ve2/aie_profile.cpp @@ -150,7 +150,10 @@ namespace xdp { if (counters.empty()) { xrt_core::message::send(severity_level::warning, "XRT", - "AIE Profile Counters were not found for this design. Please specify tile_based_[aie|aie_memory|interface_tile]_metrics under \"AIE_profile_settings\" section in your xrt.ini."); + "AIE Profile Counters were not found for this design. Please specify " + "graph_based_[aie|aie_memory|memory_tile|interface_tile]_metrics and/or " + "tile_based_[aie|aie_memory|memory_tile|interface_tile|microcontroller]_metrics " + "under \"AIE_profile_settings\" section in your xrt.ini."); (db->getStaticInfo()).setIsAIECounterRead(deviceID,true); return; } From 33b8efcd7adfcdee9fc9f8103f4f3a7209714a60 Mon Sep 17 00:00:00 2001 From: Prerona Dutta <150398390+predutta@users.noreply.github.com> Date: Fri, 17 Apr 2026 14:09:24 -0700 Subject: [PATCH 3/6] Potential fix for pull request finding Fixing the logic so that valid single-tile settings that include a channel (e.g. ::) isn't considered error. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- profile/plugin/aie_trace/aie_trace_metadata.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/profile/plugin/aie_trace/aie_trace_metadata.cpp b/profile/plugin/aie_trace/aie_trace_metadata.cpp index 96d7868c..7e052c04 100644 --- a/profile/plugin/aie_trace/aie_trace_metadata.cpp +++ b/profile/plugin/aie_trace/aie_trace_metadata.cpp @@ -888,12 +888,17 @@ namespace xdp { if ((processed.find(i) != processed.end()) || (metrics[i].size() < 3)) continue; + // Only entries with a numeric second token are range specifications. + // Valid single-tile settings with channels (for example, + // ::) also have 3+ tokens and are handled in Pass 3. + if (!aie::isDigitString(metrics[i][1])) + continue; + uint8_t maxCol = 0; try { maxCol = aie::convertStringToUint8(metrics[i][1]); } catch (std::invalid_argument const&) { - // Max column is not an integer, so either first style or wrong format. Skip for now. xrt_core::message::send(severity_level::warning, "XRT", "tile_based_interface_tile_metrics: invalid range line. Ignored: " + metricsSettings[i]); From 58f8be4caa1c9ecd663327a0870926456468f959 Mon Sep 17 00:00:00 2001 From: Prerona Dutta <150398390+predutta@users.noreply.github.com> Date: Fri, 17 Apr 2026 14:33:12 -0700 Subject: [PATCH 4/6] Potential fix for pull request finding In case second entry is not maxcolumn, we are giving error message by default whereas it could also be case three. Hence leaving it to be handled correctly in case three. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- profile/plugin/aie_profile/aie_profile_metadata.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/profile/plugin/aie_profile/aie_profile_metadata.cpp b/profile/plugin/aie_profile/aie_profile_metadata.cpp index aaa7bb46..d8777dc3 100644 --- a/profile/plugin/aie_profile/aie_profile_metadata.cpp +++ b/profile/plugin/aie_profile/aie_profile_metadata.cpp @@ -1074,21 +1074,20 @@ namespace xdp { for (size_t i = 0; i < metricsSettings.size(); ++i) { if ((metrics[i][0].compare("all") == 0) || (metrics[i].size() < 3)) continue; - if (!isSupported(metrics[i][1], true)) - continue; uint8_t maxCol = 0; try { maxCol = aie::convertStringToUint8(metrics[i][1]); } catch (std::invalid_argument const&) { - // maxColumn is not an integer i.e either 1st style or wrong format, skip for now - xrt_core::message::send(severity_level::warning, "XRT", - "tile_based_interface_tile_metrics: invalid range line. Ignored: " - + metricsSettings[i]); + // Not a range specification (e.g. single-tile format such as + // ::); let later passes handle it. continue; } + if (!isSupported(metrics[i][2], true)) + continue; + uint8_t minCol = 0; try { minCol = aie::convertStringToUint8(metrics[i][0]); From de390a33853f58da147ed4f44a684de15868ffcd Mon Sep 17 00:00:00 2001 From: Prerona Dutta <150398390+predutta@users.noreply.github.com> Date: Fri, 17 Apr 2026 14:39:26 -0700 Subject: [PATCH 5/6] Potential fix for pull request finding Avoiding redundant checks in pass three which have already been filtered out in pass two. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../plugin/aie_profile/aie_profile_metadata.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/profile/plugin/aie_profile/aie_profile_metadata.cpp b/profile/plugin/aie_profile/aie_profile_metadata.cpp index d8777dc3..fa121f97 100644 --- a/profile/plugin/aie_profile/aie_profile_metadata.cpp +++ b/profile/plugin/aie_profile/aie_profile_metadata.cpp @@ -1141,8 +1141,21 @@ namespace xdp { // Pass 3 : process only single tile metric setting // :[:[:]] for (size_t i = 0; i < metricsSettings.size(); ++i) { + bool isRangeSpecification = false; + if (metrics[i].size() >= 3) { + try { + (void)aie::convertStringToUint8(metrics[i][0]); + (void)aie::convertStringToUint8(metrics[i][1]); + isRangeSpecification = true; + } + catch (std::invalid_argument const&) { + isRangeSpecification = false; + } + } + // Skip range specification, invalid format, or already processed - if ((metrics[i].size() == 4) || (metrics[i].size() < 2) || (metrics[i][0].compare("all") == 0)) + if (isRangeSpecification || (metrics[i].size() == 4) || (metrics[i].size() < 2) + || (metrics[i][0].compare("all") == 0)) continue; if (!isSupported(metrics[i][1], true)) continue; From af0cbc8f3a379ab10bbd0c99ac999bc5f91b56e7 Mon Sep 17 00:00:00 2001 From: Prerona Dutta Date: Fri, 17 Apr 2026 15:41:37 -0700 Subject: [PATCH 6/6] minor change for CR-1236200 Signed-off-by: Prerona Dutta --- profile/plugin/aie_profile/aie_profile_metadata.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/profile/plugin/aie_profile/aie_profile_metadata.cpp b/profile/plugin/aie_profile/aie_profile_metadata.cpp index fa121f97..9fc80d67 100644 --- a/profile/plugin/aie_profile/aie_profile_metadata.cpp +++ b/profile/plugin/aie_profile/aie_profile_metadata.cpp @@ -619,6 +619,9 @@ namespace xdp { // Pass 2 : process only range of tiles metric setting for (size_t i = 0; i < metricsSettings.size(); ++i) { + //Do not re-parse Pass 1 "all:..." + if (isAll[i]) + continue; if ((metrics[i].size() != 3) && (metrics[i].size() != 4)) continue;