diff --git a/profile/plugin/ml_timeline/clientDev/ml_timeline.cpp b/profile/plugin/ml_timeline/clientDev/ml_timeline.cpp index 58835341..14a18720 100644 --- a/profile/plugin/ml_timeline/clientDev/ml_timeline.cpp +++ b/profile/plugin/ml_timeline/clientDev/ml_timeline.cpp @@ -72,13 +72,44 @@ namespace xdp { std::vector activeUCs; std::map activeUCsegmentMap; + + std::string bufCfg = xrt_core::config::get_ml_timeline_settings_buffer_config(); + if (!bufCfg.empty()) { + try { + std::istringstream ss(bufCfg); + + boost::property_tree::ptree ptBufCfg; + boost::property_tree::read_json(ss, ptBufCfg); + + for (const auto& e: ptBufCfg) { + activeUCs.emplace_back(e.second.get("shim_column"), e.second.get("index")); + } + } catch (const boost::property_tree::json_parser_error& e) { + std::stringstream errMsg; + errMsg << " Microcontroller config JSON parsing failed: " << e.what() + << std::endl; + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", errMsg.str()); + } catch (const boost::property_tree::ptree_bad_data& e) { + std::stringstream errMsg; + errMsg << " Data type mismatch while parsing Microcontroller config JSON" + << e.what() + << std::endl; + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", errMsg.str()); + } catch (...) { + std::stringstream errMsg; + errMsg << " Microcontroller config parsing failed. " + << std::endl; + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", errMsg.str()); + } + } + auto metadataReader = (db->getStaticInfo()).getAIEmetadataReader(devId); if (nullptr == metadataReader) { xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", "AIE Metadata is not found."); } - if (metadataReader && 5 < metadataReader->getHardwareGeneration()) { + if (activeUCs.empty() && metadataReader && 5 < metadataReader->getHardwareGeneration()) { if (xrt_core::bo_int::use_type::uc_debug != mBOType) { xrt_core::message::send(xrt_core::message::severity_level::warning, "XRT", "Device type does not match with HW Gen in AIE_TRACE_METADATA."); diff --git a/profile/plugin/ml_timeline/ve2/ml_timeline.cpp b/profile/plugin/ml_timeline/ve2/ml_timeline.cpp index f2a591f8..760d9a36 100644 --- a/profile/plugin/ml_timeline/ve2/ml_timeline.cpp +++ b/profile/plugin/ml_timeline/ve2/ml_timeline.cpp @@ -71,8 +71,39 @@ namespace xdp { std::vector activeUCs; std::map activeUCsegmentMap; + std::string bufCfg = xrt_core::config::get_ml_timeline_settings_buffer_config(); + if (!bufCfg.empty()) { + try { + std::istringstream ss(bufCfg); + + boost::property_tree::ptree ptBufCfg; + boost::property_tree::read_json(ss, ptBufCfg); + + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", "Read buffer config JSON"); + for (const auto& e: ptBufCfg) { + activeUCs.emplace_back(e.second.get("shim_column"), e.second.get("index")); + } + } catch (const boost::property_tree::json_parser_error& e) { + std::stringstream errMsg; + errMsg << " Microcontroller config JSON parsing failed: " << e.what() + << std::endl; + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", errMsg.str()); + } catch (const boost::property_tree::ptree_bad_data& e) { + std::stringstream errMsg; + errMsg << " Data type mismatch while parsing Microcontroller config JSON" + << e.what() + << std::endl; + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", errMsg.str()); + } catch (...) { + std::stringstream errMsg; + errMsg << " Microcontroller config parsing failed. " + << std::endl; + xrt_core::message::send(xrt_core::message::severity_level::debug, "XRT", errMsg.str()); + } + } + auto metadataReader = (db->getStaticInfo()).getAIEmetadataReader(devId); - if (metadataReader) { + if (activeUCs.empty() && metadataReader) { activeUCs = metadataReader->getActiveMicroControllers(); }