12#include <xaiefal/rsc/xaiefal-bc.hpp>
13#include <xaiefal/rsc/xaiefal-rsc-base.hpp>
28 XAie_EventPhysicalToLogicalConv(
dev(),
Loc,
Mod, 0,
31 Mode = XAIE_TRACE_EVENT_TIME;
39 State.Initialized = 1;
45 if (
State.Reserved == 1) {
75 if (
State.Running == 1) {
77 "failed, tracing already started." << std::endl;
99 if (
State.Running == 1) {
101 "failed, tracing already started." << std::endl;
102 }
else if (Slot >=
static_cast<uint32_t
>(
TraceSlotBits.size())) {
104 "failed, invalid slot id " << Slot <<
"." << std::endl;
105 RC = XAIE_INVALID_ARGS;
110 XAie_EventPhysicalToLogicalConv(
dev(),
Loc,
Mod, 0, &E);
132 "(" <<
static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
") Mod=" <<
Mod <<
133 " Slot=" << Slot <<
" E=" << Event <<
" (" <<
134 XAie_EventGetString(Event) <<
")" << std::endl;
135 if (
State.Running == 1) {
137 "failed, trace started." << std::endl;
139 }
else if (Slot >=
static_cast<uint32_t
>(
TraceSlotBits.size())) {
141 "failed, invalid slot." << std::endl;
142 RC = XAIE_INVALID_ARGS;
145 "failed, trace slot is not reserved." << std::endl;
146 RC = XAIE_INVALID_ARGS;
148 if (Event == XAIE_EVENT_NONE_CORE) {
149 XAie_EventPhysicalToLogicalConv(
dev(),
Loc,
Mod, 0, &Event);
154 changeToConfigured();
173 "(" <<
static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
") Mod=" <<
Mod <<
174 " StartE=" << StartE <<
" (" << XAie_EventGetString(StartE) <<
")" <<
175 " StopE=" << StopE <<
" (" << XAie_EventGetString(StopE) <<
")" << std::endl;
176 if (
State.Running == 1) {
178 "failed, trace started." << std::endl;
185 RC = XAie_EventLogicalToPhysicalConv(
dev(),
Loc,
186 StartM, StartE, &HwE);
188 RC = XAie_EventLogicalToPhysicalConv(
dev(),
Loc,
191 if ((StartM !=
Mod || StopM !=
Mod) &&
192 State.Reserved == 1) {
194 "failed, trace reserved," <<
195 "but start/stop event not of the same module of trace control. " <<
196 "Please set control event before reserve() if they are of different mod" <<
206 changeToConfigured();
222 if (
State.Running == 1) {
224 "failed, trace started." << std::endl;
228 changeToConfigured();
242 AieRC
setPkt(
const XAie_Packet &Packet) {
245 if (
State.Running == 1) {
247 "failed, trace started." << std::endl;
251 changeToConfigured();
284 if (
State.Reserved == 1) {
292 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
293 ") trace control Mod=" <<
Mod <<
294 " not reserved" <<
Mod << std::endl;
310 if (
State.Reserved == 1) {
318 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
319 ") trace control Mod=" <<
Mod <<
320 " not reserved" <<
Mod << std::endl;
342 vRscs.push_back(Rsc);
344 RC =
AieHd->rscMgr()->request(*
this);
347 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
348 ") Mod=" <<
Mod <<
" failed to reserve." << std::endl;
351 std::vector<XAie_LocType> vL;
362 std::vector<XAie_LocType> vL;
396 RC =
AieHd->rscMgr()->release(*
this);
399 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
400 ") Mod=" <<
Mod <<
" failed to release." << std::endl;
408 std::vector<XAie_Events> vE;
409 std::vector<u8> vSlot;
414 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
") Mod=" <<
Mod << std::endl;
418 vSlot.push_back((uint8_t)i);
439 RC = XAie_TraceEventList(
dev(),
Loc,
Mod,
440 vE.data(), vSlot.data(),
446 RC = XAie_TraceControlConfig(
dev(),
447 Loc,
Mod, lStartE, lStopE,
458 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
") Mod=" <<
Mod << std::endl;
463 RC = XAie_TraceControlConfigReset(
dev(),
Loc,
Mod);
469 XAie_TraceEventReset(
dev(),
Loc,
476 RC = XAie_EventBroadcastReset(
dev(),
Loc,
484 RC = XAie_EventBroadcastReset(
dev(),
Loc,
494 vOutRscs.push_back(
vRscs[0]);
496 StartBC->getReservedRscs(vOutRscs);
499 StopBC->getReservedRscs(vOutRscs);
514 void changeToConfigured() {
515 if (
State.Configured == 0 &&
522 if (bits.test(i) == 0) {
525 XAie_EventPhysicalToLogicalConv(
dev(),
Loc,
Mod, 0, &E);
527 State.Configured = 1;
545 std::shared_ptr<XAieTraceCntr> TCntr):
549 throw std::invalid_argument(
"Trace event failed, empty trace control");
551 if (TCntr->dev() != DevHd->dev() ||
552 TCntr->getModule() !=
Mod) {
553 throw std::invalid_argument(
"Trace event failed,trace control aiedev or module mismatched");
556 State.Initialized = 1;
564 State.Initialized = 1;
578 RC = XAie_EventLogicalToPhysicalConv(
dev(),
Loc,
579 Module, TraceEvent, &HwEvent);
582 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
583 ") Event Mod=" << Module <<
" Event=" << TraceEvent <<
584 " (" << XAie_EventGetString(TraceEvent) <<
")" <<
585 " invalid event" << std::endl;
586 RC = XAIE_INVALID_ARGS;
587 }
else if (
State.Running == 1) {
590 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
591 ") Event Mod=" << Module <<
" Event=" << TraceEvent <<
592 " (" << XAie_EventGetString(TraceEvent) <<
")" <<
593 " trace event already in used" << std::endl;
595 RC = XAIE_INVALID_ARGS;
597 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
598 ") Event Mod=" << Module <<
" Event=" << TraceEvent <<
599 " (" << XAie_EventGetString(TraceEvent) <<
")" <<
600 " trace event already reserved, input event module is different to the one already set" << std::endl;
604 State.Configured = 1;
619 if (
State.Configured == 0) {
621 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
622 ") trace control Mod=" <<
TraceCntr->getModule() <<
623 " Event Mod=" <<
Mod <<
" no event specified" << std::endl;
642 if (
State.Reserved == 1) {
650 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
651 ") trace control Mod=" <<
TraceCntr->getModule() <<
653 " resource not reserved." << std::endl;
664 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
665 ") trace control Mod=" <<
TraceCntr->getModule() <<
666 " Event Mod=" <<
Mod << std::endl;
670 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
671 ") trace control Mod=" <<
TraceCntr->getModule() <<
672 " Event Mod=" <<
Mod <<
" no trace slot" << std::endl;
674 std::vector<XAie_LocType> vL;
677 BC = std::make_shared<XAieBroadcast>(
AieHd, vL,
678 XAIE_CORE_MOD, XAIE_MEM_MOD);
682 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
683 ") trace control Mod=" <<
TraceCntr->getModule() <<
684 " Event Mod=" <<
Mod <<
" no broadcast event" << std::endl;
700 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
701 ") trace control Mod=" <<
TraceCntr->getModule() <<
702 " Event Mod=" <<
Mod <<
"Event=" <<
Event <<
703 " (" << XAie_EventGetString(
Event) <<
")" << std::endl;
714 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
715 ") trace control Mod=" <<
TraceCntr->getModule() <<
717 " (" << XAie_EventGetString(
Event) <<
")" << std::endl;
731 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
732 ") trace control Mod=" <<
TraceCntr->getModule() <<
734 " (" << XAie_EventGetString(
Event) <<
")" <<
735 " failed." << std::endl;
748 static_cast<uint32_t
>(
Loc.Col) <<
"," <<
static_cast<uint32_t
>(
Loc.Row) <<
749 ") trace control Mod=" <<
TraceCntr->getModule() <<
750 " Event Mod=" <<
Mod <<
"Event=" <<
Event <<
751 " (" << XAie_EventGetString(
Event) <<
")" << std::endl;
753 XAie_EventPhysicalToLogicalConv(
dev(),
Loc,
756 if (lRC != XAIE_OK) {
761 if (lRC != XAIE_OK) {
776 vOutRscs.push_back(Rsc);
779 BC->getReservedRscs(vOutRscs);
786 std::shared_ptr<XAieBroadcast>
BC;
802 throw std::invalid_argument(
"Trace event failed, empty trace control");
804 if (TCntr->dev() != DevHd->dev() ||
805 TCntr->getModule() !=
Mod) {
806 throw std::invalid_argument(
"Trace event failed,trace control aiedev or module mismatched");
809 State.Initialized = 1;
815 State.Initialized = 1;
834 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
835 ") Mod=" <<
static_cast<uint32_t
>(Module) <<
" E=" << TraceEvent << std::endl;
838 "failed for tracing, exceeded max num of events." << std::endl;
840 }
else if (
State.Running == 1) {
842 "failed for tracing, resource reserved." << std::endl;
847 RC = TraceE.
setEvent(Module, TraceEvent);
850 "failed for tracing, failed to initialize event." << std::endl;
851 }
else if (
State.Reserved == 1) {
855 "failed for tracing, reserved new event failed." << std::endl;
865 changeToConfigured();
882 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
883 ") Mod=" <<
static_cast<uint32_t
>(Module) <<
" E=" << TraceEvent <<
884 " (" << XAie_EventGetString(TraceEvent) <<
")" << std::endl;
885 if (
State.Running == 1) {
887 "failed for tracing, resource reserved." << std::endl;
890 RC = XAIE_INVALID_ARGS;
891 for (uint32_t i = 0; i <
Events.size(); i++) {
895 Events[i].getEvent(lM, lE);
896 if (lM == Module && TraceEvent == lE) {
904 "failed for tracing, event doesn't exist." << std::endl;
906 changeToConfigured();
926 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
927 ") Mod=" <<
static_cast<uint32_t
>(
TraceCntr->getModule()) <<
928 " StartE=" << StartE <<
" (" << XAie_EventGetString(StartE) <<
")" <<
929 " StopE=" << StopE <<
" (" << XAie_EventGetString(StopE) <<
")" <<
931 RC =
TraceCntr->setCntrEvent(StartE, StopE);
933 changeToConfigured();
950 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
951 ") Mode=" << TraceMode << std::endl;
954 changeToConfigured();
967 AieRC
setPkt(
const XAie_Packet &Packet) {
971 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
972 ") Mod=" <<
static_cast<uint32_t
>(
TraceCntr->getModule()) << std::endl;
975 changeToConfigured();
986 uint32_t MaxEvents, NumReserved;
989 NumReserved =
TraceCntr->getReservedTraceEvents();
990 return (MaxEvents - NumReserved);
1006 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
1007 ") Mod=" <<
static_cast<uint32_t
>(
TraceCntr->getModule()) << std::endl;
1008 if (RC == XAIE_OK && !(
TraceCntr->isReserved())) {
1011 for (uint32_t i = 0; i <
Events.size(); i++) {
1012 RC =
Events[i].reserve();
1013 if (RC != XAIE_OK) {
1017 if (RC != XAIE_OK) {
1018 for (uint32_t i = 0; i <
Events.size(); i++) {
1025 for (uint32_t i = 0; i <
Events.size(); i++) {
1028 changeToConfigured();
1034 <<
static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
1035 ") Mod=" <<
static_cast<uint32_t
>(
TraceCntr->getModule()) << std::endl;
1037 for (uint32_t i = 0; i <
Events.size(); i++) {
1046 static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
")" <<
1047 " Mod=" <<
TraceCntr->getModule() <<
", " <<
Events.size() <<
" events to trace." << std::endl;
1048 for (uint32_t i = 0; i <
Events.size(); i++) {
1050 if (RC != XAIE_OK) {
1054 if (RC == XAIE_OK) {
1057 if (RC != XAIE_OK) {
1058 for (uint32_t i = 0; i <
Events.size(); i++) {
1066 static_cast<uint32_t
>(
TraceCntr->loc().Col) <<
"," <<
static_cast<uint32_t
>(
TraceCntr->loc().Row) <<
")" <<
1067 " Mod=" <<
TraceCntr->getModule() <<
", " <<
Events.size() <<
" events to trace." << std::endl;
1069 for (uint32_t i = 0; i <
Events.size(); i++) {
1077 void changeToConfigured() {
1078 if (
State.Configured == 0) {
1081 State.Configured = 1;
static std::ostream & log(LogLevel Lvl=LogLevel::FAL_MAX)
Definition xaiefal-log.hpp:50
class for broadcast channel resource. A broadcast channel resource represents a broadcast channel bet...
Definition xaiefal-bc.hpp:29
AI engine device class. It defines AI engine device operations.
Definition xaiefal-base.hpp:259
XAieTile & tile(XAie_LocType Loc)
Definition xaiefal-base.hpp:272
XAieRscType Type
Definition xaiefal-rsc-base.hpp:399
std::vector< XAieUserRsc > vRscs
Definition xaiefal-rsc-base.hpp:403
XAieRscState State
Definition xaiefal-rsc-base.hpp:398
XAie_DevInst * dev()
Definition xaiefal-rsc-base.hpp:373
AieRC release()
Definition xaiefal-rsc-base.hpp:188
AieRC reserve()
Definition xaiefal-rsc-base.hpp:161
AieRC start()
Definition xaiefal-rsc-base.hpp:239
uint32_t reservedId
Definition xaiefal-rsc-base.hpp:402
std::shared_ptr< XAieDevHandle > AieHd
Definition xaiefal-rsc-base.hpp:400
XAieSingleTileRsc()=delete
XAie_LocType Loc
Definition xaiefal-rsc-base.hpp:594
XAie_ModuleType Mod
Definition xaiefal-rsc-base.hpp:595
AieRC setCntrEvent(XAie_Events StartE, XAie_Events StopE)
Definition xaiefal-trace.hpp:168
AieRC setMode(XAie_TraceMode TraceMode)
Definition xaiefal-trace.hpp:219
void _getReservedRscs(std::vector< XAieUserRsc > &vOutRscs) const
Definition xaiefal-trace.hpp:493
AieRC _stop()
Definition xaiefal-trace.hpp:454
XAie_TraceMode Mode
Definition xaiefal-trace.hpp:512
uint32_t getMaxTraceEvents() const
Definition xaiefal-trace.hpp:262
XAieBroadcast * StartBC
Definition xaiefal-trace.hpp:509
XAie_Events Events[8]
Definition xaiefal-trace.hpp:504
std::bitset< 8 > TraceSlotBits
Definition xaiefal-trace.hpp:503
~XAieTraceCntr()
Definition xaiefal-trace.hpp:44
AieRC _start()
Definition xaiefal-trace.hpp:406
uint32_t getReservedTraceEvents() const
Definition xaiefal-trace.hpp:271
XAieTraceCntr(XAieDev &Dev, XAie_LocType Loc, XAie_ModuleType Mod)
Definition xaiefal-trace.hpp:41
AieRC reserveTraceSlot(uint8_t &Slot)
Definition xaiefal-trace.hpp:72
int getStartBc()
Definition xaiefal-trace.hpp:281
XAieBroadcast * StopBC
Definition xaiefal-trace.hpp:510
int getStopBc()
Definition xaiefal-trace.hpp:307
XAieRscType getManagedRscsType()
Definition xaiefal-trace.hpp:330
XAie_Events StartEvent
Definition xaiefal-trace.hpp:505
AieRC setTraceEvent(uint32_t Slot, XAie_Events Event)
Definition xaiefal-trace.hpp:128
XAie_ModuleType getModule()
Definition xaiefal-trace.hpp:60
AieRC _reserve()
Definition xaiefal-trace.hpp:334
AieRC _release()
Definition xaiefal-trace.hpp:384
AieRC releaseTraceSlot(uint8_t Slot)
Definition xaiefal-trace.hpp:96
XAie_Packet Pkt
Definition xaiefal-trace.hpp:511
AieRC setPkt(const XAie_Packet &Packet)
Definition xaiefal-trace.hpp:242
XAie_ModuleType StopMod
Definition xaiefal-trace.hpp:508
XAieTraceCntr(std::shared_ptr< XAieDevHandle > DevHd, XAie_LocType Loc, XAie_ModuleType Mod)
Definition xaiefal-trace.hpp:25
XAie_Events StopEvent
Definition xaiefal-trace.hpp:506
uint32_t getAvailManagedRscs()
Definition xaiefal-trace.hpp:327
XAie_ModuleType StartMod
Definition xaiefal-trace.hpp:507
Trace event resource class. Each event to trace is presented as a trace event resource class.
Definition xaiefal-trace.hpp:540
AieRC _start()
Definition xaiefal-trace.hpp:710
~XAieTraceEvent()
Definition xaiefal-trace.hpp:566
int getBc()
Definition xaiefal-trace.hpp:639
void _getReservedRscs(std::vector< XAieUserRsc > &vOutRscs) const
Definition xaiefal-trace.hpp:768
uint8_t Slot
Definition xaiefal-trace.hpp:787
XAie_ModuleType EventMod
Definition xaiefal-trace.hpp:785
std::shared_ptr< XAieBroadcast > BC
Definition xaiefal-trace.hpp:786
AieRC getEvent(XAie_ModuleType &Module, XAie_Events &TraceEvent) const
Definition xaiefal-trace.hpp:616
AieRC _release()
Definition xaiefal-trace.hpp:698
XAieTraceEvent(std::shared_ptr< XAieDevHandle > DevHd, XAie_LocType Loc, XAie_ModuleType Mod, std::shared_ptr< XAieTraceCntr > TCntr)
Definition xaiefal-trace.hpp:543
XAieTraceEvent(XAieDev &Dev, XAie_LocType Loc, XAie_ModuleType Mod)
Definition xaiefal-trace.hpp:559
std::shared_ptr< XAieTraceCntr > TraceCntr
Definition xaiefal-trace.hpp:783
XAie_Events Event
Definition xaiefal-trace.hpp:784
AieRC _reserve()
Definition xaiefal-trace.hpp:660
AieRC _stop()
Definition xaiefal-trace.hpp:743
AieRC setEvent(XAie_ModuleType Module, XAie_Events TraceEvent)
Definition xaiefal-trace.hpp:574
std::shared_ptr< XAieTraceCntr > TraceCntr
Definition xaiefal-trace.hpp:1074
std::vector< XAieTraceEvent > Events
Definition xaiefal-trace.hpp:1075
AieRC _start()
Definition xaiefal-trace.hpp:1042
~XAieTracing()
Definition xaiefal-trace.hpp:817
AieRC setMode(XAie_TraceMode TraceMode)
Definition xaiefal-trace.hpp:946
XAieTracing(std::shared_ptr< XAieDevHandle > DevHd, XAie_LocType Loc, XAie_ModuleType Mod, std::shared_ptr< XAieTraceCntr > TCntr)
Definition xaiefal-trace.hpp:798
uint32_t getMaxTraceEvents() const
Definition xaiefal-trace.hpp:998
AieRC setPkt(const XAie_Packet &Packet)
Definition xaiefal-trace.hpp:967
AieRC _reserve()
Definition xaiefal-trace.hpp:1002
XAieTracing(XAieDev &Dev, XAie_LocType Loc, XAie_ModuleType Mod)
Definition xaiefal-trace.hpp:811
AieRC removeEvent(XAie_ModuleType Module, XAie_Events TraceEvent)
Definition xaiefal-trace.hpp:878
AieRC _release()
Definition xaiefal-trace.hpp:1032
uint32_t getTraceControlAvailTraceSlots() const
Definition xaiefal-trace.hpp:985
AieRC setCntrEvent(XAie_Events StartE, XAie_Events StopE)
Definition xaiefal-trace.hpp:922
AieRC addEvent(XAie_ModuleType Module, XAie_Events TraceEvent)
Definition xaiefal-trace.hpp:830
AieRC _stop()
Definition xaiefal-trace.hpp:1064
Definition xaiefal-base.hpp:23
XAieRscType
Enums representing all requestable resources.
Definition xaiefal-rsc-group.hpp:27
@ XAIE_TRACEEVENT
Definition xaiefal-rsc-group.hpp:38
@ XAIE_TRACECTRL
Definition xaiefal-rsc-group.hpp:30
static XAie_ModuleType XAieEstimateModFromEvent(XAie_Events Event)
Definition xaiefal-base.hpp:1098
@ FAL_DEBUG
Definition xaiefal-log.hpp:11
@ FAL_ERROR
Definition xaiefal-log.hpp:14
@ FAL_WARN
Definition xaiefal-log.hpp:13
Data needed to make a resource request.
Definition xaiefal-rsc-base.hpp:27
uint32_t RscId
Definition xaiefal-rsc-base.hpp:41
XAieRscType RscType
Definition xaiefal-rsc-base.hpp:37
XAie_LocType Loc
Definition xaiefal-rsc-base.hpp:29
XAie_ModuleType Mod
Definition xaiefal-rsc-base.hpp:33