diff --git a/config/ai_test/data.xml b/config/ai_test/data.xml index ee7adb7..49545fa 100755 --- a/config/ai_test/data.xml +++ b/config/ai_test/data.xml @@ -258,7 +258,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -278,7 +278,7 @@ - + @@ -286,7 +286,7 @@ - + @@ -297,14 +297,14 @@ - + - + @@ -312,7 +312,7 @@ - + @@ -323,14 +323,14 @@ - + - + @@ -338,7 +338,7 @@ - + @@ -349,14 +349,14 @@ - + - + @@ -364,7 +364,7 @@ - + @@ -375,14 +375,14 @@ - + - + @@ -390,7 +390,7 @@ - + @@ -401,14 +401,14 @@ - + - + @@ -416,14 +416,14 @@ - + - + @@ -434,14 +434,14 @@ - + - + @@ -449,7 +449,7 @@ - + @@ -460,14 +460,14 @@ - + - + @@ -475,7 +475,7 @@ - + @@ -486,14 +486,14 @@ - + - + @@ -501,7 +501,7 @@ - + @@ -512,14 +512,14 @@ - + - + @@ -527,14 +527,14 @@ - + - + @@ -545,19 +545,19 @@ - + - + - + @@ -565,7 +565,7 @@ - + @@ -576,14 +576,14 @@ - + - + @@ -591,7 +591,7 @@ - + @@ -602,14 +602,14 @@ - + - + @@ -617,7 +617,7 @@ - + @@ -628,14 +628,14 @@ - + - + @@ -643,7 +643,7 @@ - + @@ -654,19 +654,19 @@ - + - + - + @@ -674,7 +674,7 @@ - + @@ -685,14 +685,14 @@ - + - + @@ -700,7 +700,7 @@ - + @@ -711,14 +711,14 @@ - + - + @@ -726,14 +726,14 @@ - + - + @@ -744,14 +744,14 @@ - + - + @@ -759,7 +759,7 @@ - + @@ -770,14 +770,14 @@ - + - + @@ -785,7 +785,7 @@ - + @@ -796,14 +796,14 @@ - + - + @@ -811,7 +811,7 @@ - + @@ -822,14 +822,14 @@ - + - + @@ -837,14 +837,14 @@ - + - + @@ -855,19 +855,19 @@ - + - + - + @@ -875,7 +875,7 @@ - + @@ -886,14 +886,14 @@ - + - + @@ -901,7 +901,7 @@ - + @@ -912,14 +912,14 @@ - + - + @@ -927,7 +927,7 @@ - + @@ -938,14 +938,14 @@ - + - + @@ -953,7 +953,7 @@ - + @@ -964,19 +964,19 @@ - + - + - + @@ -984,7 +984,7 @@ - + @@ -995,14 +995,14 @@ - + - + @@ -1010,7 +1010,7 @@ - + @@ -1021,14 +1021,14 @@ - + - + @@ -1036,14 +1036,14 @@ - + - + @@ -1054,14 +1054,14 @@ - + - + @@ -1069,7 +1069,7 @@ - + @@ -1080,14 +1080,14 @@ - + - + @@ -1095,7 +1095,7 @@ - + @@ -1106,14 +1106,14 @@ - + - + @@ -1121,7 +1121,7 @@ - + @@ -1132,14 +1132,14 @@ - + - + @@ -1147,14 +1147,14 @@ - + - + @@ -1165,19 +1165,19 @@ - + - + - + @@ -1185,7 +1185,7 @@ - + @@ -1196,14 +1196,14 @@ - + - + @@ -1211,7 +1211,7 @@ - + @@ -1222,14 +1222,14 @@ - + - + @@ -1237,7 +1237,7 @@ - + @@ -1248,14 +1248,14 @@ - + - + @@ -1263,14 +1263,14 @@ - + - + @@ -1281,19 +1281,19 @@ - + - + - + @@ -1301,7 +1301,7 @@ - + @@ -1312,14 +1312,14 @@ - + - + @@ -1327,7 +1327,7 @@ - + @@ -1338,14 +1338,14 @@ - + - + @@ -1353,7 +1353,7 @@ - + @@ -1364,14 +1364,14 @@ - + - + @@ -1379,7 +1379,7 @@ - + @@ -1390,19 +1390,19 @@ - + - + - + @@ -1410,7 +1410,7 @@ - + @@ -1421,14 +1421,14 @@ - + - + @@ -1436,7 +1436,7 @@ - + @@ -1447,14 +1447,14 @@ - + - + @@ -1462,14 +1462,14 @@ - + - + @@ -1480,14 +1480,14 @@ - + - + @@ -1495,7 +1495,7 @@ - + @@ -1506,14 +1506,14 @@ - + - + @@ -1521,7 +1521,7 @@ - + @@ -1532,14 +1532,14 @@ - + - + @@ -1547,7 +1547,7 @@ - + @@ -1558,14 +1558,14 @@ - + - + @@ -1573,14 +1573,14 @@ - + - + @@ -1591,19 +1591,19 @@ - + - + - + @@ -1611,7 +1611,7 @@ - + @@ -1622,14 +1622,14 @@ - + - + @@ -1637,7 +1637,7 @@ - + @@ -1648,14 +1648,14 @@ - + - + @@ -1663,7 +1663,7 @@ - + @@ -1674,14 +1674,14 @@ - + - + @@ -1689,14 +1689,14 @@ - + - + @@ -1707,19 +1707,19 @@ - + - + - + @@ -1727,7 +1727,7 @@ - + @@ -1738,14 +1738,14 @@ - + - + @@ -1753,7 +1753,7 @@ - + @@ -1764,14 +1764,14 @@ - + - + @@ -1779,7 +1779,7 @@ - + @@ -1790,14 +1790,14 @@ - + - + @@ -1805,7 +1805,7 @@ - + @@ -1816,19 +1816,19 @@ - + - + - + @@ -1836,7 +1836,7 @@ - + @@ -1847,14 +1847,14 @@ - + - + @@ -1862,7 +1862,7 @@ - + @@ -1873,14 +1873,14 @@ - + - + @@ -1888,14 +1888,14 @@ - + - + @@ -1906,14 +1906,14 @@ - + - + @@ -1921,7 +1921,7 @@ - + @@ -1932,14 +1932,14 @@ - + - + @@ -1947,7 +1947,7 @@ - + @@ -1958,14 +1958,14 @@ - + - + @@ -1973,7 +1973,7 @@ - + @@ -1984,14 +1984,14 @@ - + - + @@ -1999,14 +1999,14 @@ - + - + @@ -2017,19 +2017,19 @@ - + - + - + @@ -2037,7 +2037,7 @@ - + @@ -2048,14 +2048,14 @@ - + - + @@ -2063,7 +2063,7 @@ - + @@ -2074,14 +2074,14 @@ - + - + @@ -2089,7 +2089,7 @@ - + @@ -2100,14 +2100,14 @@ - + - + @@ -2115,14 +2115,14 @@ - + - + @@ -2133,19 +2133,19 @@ - + - + - + @@ -2153,7 +2153,7 @@ - + @@ -2164,14 +2164,14 @@ - + - + @@ -2179,7 +2179,7 @@ - + @@ -2190,14 +2190,14 @@ - + - + @@ -2205,7 +2205,7 @@ - + @@ -2216,14 +2216,14 @@ - + - + @@ -2231,14 +2231,14 @@ - + - + @@ -2249,19 +2249,19 @@ - + - + - + @@ -2269,7 +2269,7 @@ - + @@ -2280,14 +2280,14 @@ - + - + @@ -2295,7 +2295,7 @@ - + @@ -2306,14 +2306,14 @@ - + - + @@ -2321,7 +2321,7 @@ - + @@ -2332,14 +2332,14 @@ - + - + @@ -2347,7 +2347,7 @@ - + @@ -2358,19 +2358,19 @@ - + - + - + @@ -2378,7 +2378,7 @@ - + @@ -2389,14 +2389,14 @@ - + - + @@ -2404,7 +2404,7 @@ - + @@ -2415,14 +2415,14 @@ - + - + @@ -2430,7 +2430,7 @@ - + @@ -2441,14 +2441,14 @@ - + - + @@ -2456,7 +2456,7 @@ - + @@ -2467,14 +2467,14 @@ - + - + @@ -2482,7 +2482,7 @@ - + @@ -2493,14 +2493,14 @@ - + - + @@ -2508,7 +2508,7 @@ - + @@ -2519,14 +2519,14 @@ - + - + @@ -2534,7 +2534,7 @@ - + @@ -2545,14 +2545,14 @@ - + - + @@ -2560,7 +2560,7 @@ - + @@ -2571,14 +2571,14 @@ - + - + @@ -2589,7 +2589,7 @@ - + diff --git a/config/conc_stream_pack_test/data.xml b/config/conc_stream_pack_test/data.xml index d1af841..3daabec 100755 --- a/config/conc_stream_pack_test/data.xml +++ b/config/conc_stream_pack_test/data.xml @@ -254,14 +254,7 @@ - - - - - - - - + diff --git a/src/processingElement/ProcessingElementCS.cpp b/src/processingElement/ProcessingElementCS.cpp index e6a00ee..cecf3d1 100644 --- a/src/processingElement/ProcessingElementCS.cpp +++ b/src/processingElement/ProcessingElementCS.cpp @@ -21,6 +21,7 @@ ******************************************************************************/ #include "ProcessingElementCS.h" #include "traffic/PacketCS.h" +#include "utils/noc_logger.h" void ProcessingElementCS::thread(){ while(true) { @@ -52,6 +53,7 @@ void ProcessingElementCS::thread(){ DataDestinationCS dest = pair.first; // EXPLAIN: check if the current time is smaller or equal to the time of the destination if yes generate packet if (pair.second<=timeStamp) { + std::string curr_task_id = std::to_string(destToTask.at(dest).id); TaskCS task = globalResources.tasks.at(dest.destinationTask); Node dstNode = globalResources.nodes.at(task.nodeID); PacketCS* p = packetFactoryCS.createPacket(this->node, @@ -68,11 +70,15 @@ void ProcessingElementCS::thread(){ // EXPLAIN: decrement number of packets left to be sent countLeft.at(dest)--; + log_info("Task "+curr_task_id+" sent a packet"); // EXPLAIN: if there are no more packet to this destination remove destination from list of destinations if (!countLeft.at(dest)) { countLeft.erase(dest); destWait.erase(dest); + log_info("Task " + curr_task_id + + " has sent all packets to destination " + + std::to_string(task.id)); TaskCS task = destToTask.at(dest); destToTask.erase(dest); @@ -88,7 +94,7 @@ void ProcessingElementCS::thread(){ else { destWait.at(dest) = globalResources.getRandomIntBetween(dest.minInterval, dest.maxInterval)+timeStamp; - } + } break; } } @@ -272,6 +278,7 @@ void ProcessingElementCS::checkNeed() // EXPLAIN: check if the needed amount (datatype for specific task) is reached. If yes remove the pair if (neededAmount.at(pair)<=0) { removeList.push_back(pair); + log_info("Task "+std::to_string(t.id)+" has requirements fullfilled"); // This line is also commented out for the same reason mentioned above. // receivedData.at(type) = -neededAmount.at(pair); } @@ -289,4 +296,18 @@ void ProcessingElementCS::checkNeed() } } } -} \ No newline at end of file +} + + +/******************* LOG FUNCTIONS ********************/ +void ProcessingElementCS::log_info(std::string msg){ + SC_REPORT_INFO(PE_LOG, (msg).c_str()); +} + +void ProcessingElementCS::log_warn(std::string msg){ + SC_REPORT_WARNING(PE_LOG, (msg).c_str()); +} + +void ProcessingElementCS::log_error(std::string msg){ + SC_REPORT_ERROR(PE_LOG, (msg).c_str()); +} diff --git a/src/processingElement/ProcessingElementCS.h b/src/processingElement/ProcessingElementCS.h index 2fea5aa..79ed363 100644 --- a/src/processingElement/ProcessingElementCS.h +++ b/src/processingElement/ProcessingElementCS.h @@ -21,6 +21,7 @@ ******************************************************************************/ #pragma once +#include "systemc.h" #include "ratatoskrUtils/processingElement/ProcessingElementVC.h" #include "utils/PacketFactoryCS.h" #include "utils/GlobalResourcesCS.h" @@ -75,4 +76,19 @@ public: * Checks if requirements are fullfilled */ void checkNeed(); + + /** Log info + * @param msg log message + */ + void log_info(std::string msg); + + /** Log warning + * @param msg log message + */ + void log_warn(std::string msg); + + /** Log error + * @param msg log message + */ + void log_error(std::string msg); }; diff --git a/src/utils/noc_logger.cpp b/src/utils/noc_logger.cpp index 73e7e67..9aa3411 100755 --- a/src/utils/noc_logger.cpp +++ b/src/utils/noc_logger.cpp @@ -78,6 +78,9 @@ void report_handler(const sc_report& report, const sc_actions& actions){ else if(string(report.get_msg_type()) == NM_LOG){ log_filename = NM_LOGFILENAME; } + else if(string(report.get_msg_type()) == PE_LOG){ + log_filename = PE_LOGFILENAME; + } ofstream log_file; log_file.open(log_filename, std::ios_base::app); @@ -98,6 +101,8 @@ void setup_logger(){ log_file.close(); log_file.open(NM_LOGFILENAME); log_file.close(); + log_file.open(PE_LOGFILENAME); + log_file.close(); log_file.open(DEF_LOGFILENAME); log_file.close(); diff --git a/src/utils/noc_logger.h b/src/utils/noc_logger.h index 3748531..3bcabf0 100755 --- a/src/utils/noc_logger.h +++ b/src/utils/noc_logger.h @@ -39,6 +39,9 @@ #define NM_LOGFILENAME "./out/nm_conn.log" #define NM_LOG "NetworkManager" +#define PE_LOGFILENAME "./out/pe_tasks.log" +#define PE_LOG "ProcessingElement" + #define ASCII_RED "31" #define ASCII_GREEN "32" #define ASCII_YELLOW "33" diff --git a/src/utils/report.cpp b/src/utils/report.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/report.h b/src/utils/report.h new file mode 100644 index 0000000..561c03b --- /dev/null +++ b/src/utils/report.h @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (C) 2024 Juan Neyra + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + ******************************************************************************/ +#pragma once + +#include +#include + +using namespace std; +using namespace sc_core; + +class Report { + public: + std::map packet_count; + std::map throttled_count; + std::map task_start_time; + std::map task_completed_time; + + Report(); +}; \ No newline at end of file