diff --git a/CMakeLists.txt b/CMakeLists.txt index 876fee7..9924173 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,6 @@ ADD_EXECUTABLE(${PROJECT_NAME} src/utils/memory_manager.cpp src/utils/utils.cpp src/utils/noc_logger.cpp - src/utils/report.cpp src/ratatoskrUtils/utils/Report.cpp src/ratatoskrUtils/utils/GlobalReport.cpp src/ratatoskrUtils/utils/Structures.cpp @@ -47,7 +46,13 @@ ADD_EXECUTABLE(${PROJECT_NAME} src/ratatoskrUtils/traffic/synthetic/SyntheticPool.cpp src/ratatoskrUtils/traffic/task/TaskPool.cpp src/ratatoskrUtils/traffic/TrafficPool.cpp - src/ratatoskrUtils/link/Link.cpp + src/ratatoskrUtils/link/Link.cpp + src/ratatoskrUtils/traffic/netrace/NetracePool.cpp + src/ratatoskrUtils/traffic/netrace/NetracePool.h + src/ratatoskrUtils/traffic/netrace/ntNetrace.h + src/ratatoskrUtils/traffic/netrace/ntNetrace.cpp + src/ratatoskrUtils/traffic/netrace/ntQueue.h + src/ratatoskrUtils/traffic/netrace/ntQueue.cpp src/ratatoskrUtils/utils/TrafficTracer.cpp ) diff --git a/README.md b/README.md index 7b423ff..dbf0838 100755 --- a/README.md +++ b/README.md @@ -47,7 +47,4 @@ This project is licensed under the MIT License - see the LICENSE.md file for det ## Acknowledgments -* [Ratatoskr NoC simulator](https://github.com/jmjos/ratatoskr) - -### TODO -- Check why there is no throttled messages for router \ No newline at end of file +* [Ratatoskr NoC simulator](https://github.com/jmjos/ratatoskr) \ No newline at end of file diff --git a/config/ai_test/data.xml b/config/ai_test/data.xml index e373369..49545fa 100755 --- a/config/ai_test/data.xml +++ b/config/ai_test/data.xml @@ -264,9 +264,9 @@ - - - + + + @@ -284,9 +284,9 @@ - - - + + + @@ -297,7 +297,7 @@ - + @@ -310,9 +310,9 @@ - - - + + + @@ -323,7 +323,7 @@ - + @@ -336,9 +336,9 @@ - - - + + + @@ -349,7 +349,7 @@ - + @@ -362,9 +362,9 @@ - - - + + + @@ -375,7 +375,7 @@ - + @@ -388,9 +388,9 @@ - - - + + + @@ -401,7 +401,7 @@ - + @@ -414,16 +414,16 @@ - - - + + + - - - + + + @@ -434,7 +434,7 @@ - + @@ -447,9 +447,9 @@ - - - + + + @@ -460,7 +460,7 @@ - + @@ -473,9 +473,9 @@ - - - + + + @@ -486,7 +486,7 @@ - + @@ -499,9 +499,9 @@ - - - + + + @@ -512,7 +512,7 @@ - + @@ -525,16 +525,16 @@ - - - + + + - - - + + + @@ -545,12 +545,12 @@ - + - + @@ -563,9 +563,9 @@ - - - + + + @@ -576,7 +576,7 @@ - + @@ -589,9 +589,9 @@ - - - + + + @@ -602,7 +602,7 @@ - + @@ -615,9 +615,9 @@ - - - + + + @@ -628,7 +628,7 @@ - + @@ -641,9 +641,9 @@ - - - + + + @@ -654,12 +654,12 @@ - + - + @@ -672,9 +672,9 @@ - - - + + + @@ -685,7 +685,7 @@ - + @@ -698,9 +698,9 @@ - - - + + + @@ -711,7 +711,7 @@ - + @@ -724,16 +724,16 @@ - - - + + + - - - + + + @@ -744,7 +744,7 @@ - + @@ -757,9 +757,9 @@ - - - + + + @@ -770,7 +770,7 @@ - + @@ -783,9 +783,9 @@ - - - + + + @@ -796,7 +796,7 @@ - + @@ -809,9 +809,9 @@ - - - + + + @@ -822,7 +822,7 @@ - + @@ -835,16 +835,16 @@ - - - + + + - - - + + + @@ -855,12 +855,12 @@ - + - + @@ -873,9 +873,9 @@ - - - + + + @@ -886,7 +886,7 @@ - + @@ -899,9 +899,9 @@ - - - + + + @@ -912,7 +912,7 @@ - + @@ -925,9 +925,9 @@ - - - + + + @@ -938,7 +938,7 @@ - + @@ -951,9 +951,9 @@ - - - + + + @@ -964,12 +964,12 @@ - + - + @@ -982,9 +982,9 @@ - - - + + + @@ -995,7 +995,7 @@ - + @@ -1008,9 +1008,9 @@ - - - + + + @@ -1021,7 +1021,7 @@ - + @@ -1034,16 +1034,16 @@ - - - + + + - - - + + + @@ -1054,7 +1054,7 @@ - + @@ -1067,9 +1067,9 @@ - - - + + + @@ -1080,7 +1080,7 @@ - + @@ -1093,9 +1093,9 @@ - - - + + + @@ -1106,7 +1106,7 @@ - + @@ -1119,9 +1119,9 @@ - - - + + + @@ -1132,7 +1132,7 @@ - + @@ -1145,16 +1145,16 @@ - - - + + + - - - + + + @@ -1165,12 +1165,12 @@ - + - + @@ -1183,9 +1183,9 @@ - - - + + + @@ -1196,7 +1196,7 @@ - + @@ -1209,9 +1209,9 @@ - - - + + + @@ -1222,7 +1222,7 @@ - + @@ -1235,9 +1235,9 @@ - - - + + + @@ -1248,7 +1248,7 @@ - + @@ -1261,16 +1261,16 @@ - - - + + + - - - + + + @@ -1281,12 +1281,12 @@ - + - + @@ -1299,9 +1299,9 @@ - - - + + + @@ -1312,7 +1312,7 @@ - + @@ -1325,9 +1325,9 @@ - - - + + + @@ -1338,7 +1338,7 @@ - + @@ -1351,9 +1351,9 @@ - - - + + + @@ -1364,7 +1364,7 @@ - + @@ -1377,9 +1377,9 @@ - - - + + + @@ -1390,12 +1390,12 @@ - + - + @@ -1408,9 +1408,9 @@ - - - + + + @@ -1421,7 +1421,7 @@ - + @@ -1434,9 +1434,9 @@ - - - + + + @@ -1447,7 +1447,7 @@ - + @@ -1460,16 +1460,16 @@ - - - + + + - - - + + + @@ -1480,7 +1480,7 @@ - + @@ -1493,9 +1493,9 @@ - - - + + + @@ -1506,7 +1506,7 @@ - + @@ -1519,9 +1519,9 @@ - - - + + + @@ -1532,7 +1532,7 @@ - + @@ -1545,9 +1545,9 @@ - - - + + + @@ -1558,7 +1558,7 @@ - + @@ -1571,16 +1571,16 @@ - - - + + + - - - + + + @@ -1591,12 +1591,12 @@ - + - + @@ -1609,9 +1609,9 @@ - - - + + + @@ -1622,7 +1622,7 @@ - + @@ -1635,9 +1635,9 @@ - - - + + + @@ -1648,7 +1648,7 @@ - + @@ -1661,9 +1661,9 @@ - - - + + + @@ -1674,7 +1674,7 @@ - + @@ -1687,16 +1687,16 @@ - - - + + + - - - + + + @@ -1707,12 +1707,12 @@ - + - + @@ -1725,9 +1725,9 @@ - - - + + + @@ -1738,7 +1738,7 @@ - + @@ -1751,9 +1751,9 @@ - - - + + + @@ -1764,7 +1764,7 @@ - + @@ -1777,9 +1777,9 @@ - - - + + + @@ -1790,7 +1790,7 @@ - + @@ -1803,9 +1803,9 @@ - - - + + + @@ -1816,12 +1816,12 @@ - + - + @@ -1834,9 +1834,9 @@ - - - + + + @@ -1847,7 +1847,7 @@ - + @@ -1860,9 +1860,9 @@ - - - + + + @@ -1873,7 +1873,7 @@ - + @@ -1886,16 +1886,16 @@ - - - + + + - - - + + + @@ -1906,7 +1906,7 @@ - + @@ -1919,9 +1919,9 @@ - - - + + + @@ -1932,7 +1932,7 @@ - + @@ -1945,9 +1945,9 @@ - - - + + + @@ -1958,7 +1958,7 @@ - + @@ -1971,9 +1971,9 @@ - - - + + + @@ -1984,7 +1984,7 @@ - + @@ -1997,16 +1997,16 @@ - - - + + + - - - + + + @@ -2017,12 +2017,12 @@ - + - + @@ -2035,9 +2035,9 @@ - - - + + + @@ -2048,7 +2048,7 @@ - + @@ -2061,9 +2061,9 @@ - - - + + + @@ -2074,7 +2074,7 @@ - + @@ -2087,9 +2087,9 @@ - - - + + + @@ -2100,7 +2100,7 @@ - + @@ -2113,16 +2113,16 @@ - - - + + + - - - + + + @@ -2133,12 +2133,12 @@ - + - + @@ -2151,9 +2151,9 @@ - - - + + + @@ -2164,7 +2164,7 @@ - + @@ -2177,9 +2177,9 @@ - - - + + + @@ -2190,7 +2190,7 @@ - + @@ -2203,9 +2203,9 @@ - - - + + + @@ -2216,7 +2216,7 @@ - + @@ -2229,16 +2229,16 @@ - - - + + + - - - + + + @@ -2249,12 +2249,12 @@ - + - + @@ -2267,9 +2267,9 @@ - - - + + + @@ -2280,7 +2280,7 @@ - + @@ -2293,9 +2293,9 @@ - - - + + + @@ -2306,7 +2306,7 @@ - + @@ -2319,9 +2319,9 @@ - - - + + + @@ -2332,7 +2332,7 @@ - + @@ -2345,9 +2345,9 @@ - - - + + + @@ -2358,12 +2358,12 @@ - + - + @@ -2376,9 +2376,9 @@ - - - + + + @@ -2389,7 +2389,7 @@ - + @@ -2402,9 +2402,9 @@ - - - + + + @@ -2415,7 +2415,7 @@ - + @@ -2428,9 +2428,9 @@ - - - + + + @@ -2441,7 +2441,7 @@ - + @@ -2454,9 +2454,9 @@ - - - + + + @@ -2467,7 +2467,7 @@ - + @@ -2480,9 +2480,9 @@ - - - + + + @@ -2493,7 +2493,7 @@ - + @@ -2507,8 +2507,8 @@ - - + + @@ -2519,7 +2519,7 @@ - + @@ -2532,9 +2532,9 @@ - - - + + + @@ -2545,7 +2545,7 @@ - + @@ -2558,9 +2558,9 @@ - - - + + + @@ -2571,7 +2571,7 @@ - + @@ -2589,7 +2589,7 @@ - + diff --git a/config/simple_2_point_test/2pt_data.xml b/config/simple_2_point_test/2pt_data.xml index 42b28e9..c91fdb8 100755 --- a/config/simple_2_point_test/2pt_data.xml +++ b/config/simple_2_point_test/2pt_data.xml @@ -5,7 +5,7 @@ - + @@ -18,8 +18,8 @@ - - + + @@ -38,8 +38,8 @@ - - + + @@ -57,7 +57,12 @@ - + + + + + + diff --git a/config/simple_2_point_test/config.xml b/config/simple_2_point_test/config.xml index bc0faa5..4de57e7 100755 --- a/config/simple_2_point_test/config.xml +++ b/config/simple_2_point_test/config.xml @@ -5,7 +5,7 @@ report - config/simple_2_point_test/net.xml + config/simple_test/net.xml diff --git a/config/throttle_test/config.xml b/config/throttle_test/config.xml deleted file mode 100755 index 8f5501d..0000000 --- a/config/throttle_test/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - report - - - config/throttle_test/net.xml - - - - - - task - config/throttle_test/data.xml - config/throttle_test/map.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 6 9 10 - - diff --git a/config/throttle_test/data.xml b/config/throttle_test/data.xml deleted file mode 100755 index b79db77..0000000 --- a/config/throttle_test/data.xml +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/config/throttle_test/map.xml b/config/throttle_test/map.xml deleted file mode 100755 index f165073..0000000 --- a/config/throttle_test/map.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/config/throttle_test/net.xml b/config/throttle_test/net.xml deleted file mode 100755 index 7407f52..0000000 --- a/config/throttle_test/net.xml +++ /dev/null @@ -1,879 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main.cpp b/src/main.cpp index 18df502..667cb93 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,6 @@ #include "utils/GlobalResourcesCS.h" #include "networkManager/NetworkManager.h" -#include "utils/report.h" namespace po = boost::program_options; @@ -56,8 +55,5 @@ int sc_main(int arg_num, char *arg_vec[]) sc_start(globalResources.simulation_time, SC_NS); cout << endl << "Simulation completed! Time: "<< sc_time_stamp() << endl; - - TlmReport& report = TlmReport::getInstance(); - report.write_report(); return 0; } diff --git a/src/networkInterface/NetworkInterfaceTlm.cpp b/src/networkInterface/NetworkInterfaceTlm.cpp index ec57717..622e7a2 100755 --- a/src/networkInterface/NetworkInterfaceTlm.cpp +++ b/src/networkInterface/NetworkInterfaceTlm.cpp @@ -54,12 +54,12 @@ NetworkInterfaceTlm::NetworkInterfaceTlm(sc_module_name nm, Node& node, sensitive << packetPortContainer->portValidIn.pos(); for(uint8_t lay=0; layregister_nb_transport_bw(this, &NetworkInterfaceTlm::nb_transport_bw_cb, lay); - target[lay] = new ni_targ_socket((ni_name+"_"+ + target[lay] = new ni_targ_socket((string(nm)+"_"+ to_string(lay)+"targ").c_str()); target[lay]->register_nb_transport_fw(this, &NetworkInterfaceTlm::nb_transport_fw_cb, lay); @@ -263,7 +263,6 @@ void NetworkInterfaceTlm::thread() { } else { if(log_wait){ - report.update_throttled_count(ni_name); if(credit_counter == 0){ log_info("No more credits. Waiting for Router!"); } @@ -313,7 +312,7 @@ void NetworkInterfaceTlm::init_peq_cb(tlm_gp& trans, const tlm::tlm_phase& phase log_info("Init PEQ callback start for packet "+to_string(p_id)); log_info("Phase "+string(phase.get_name())+" received"); if (phase == tlm::END_REQ) { - //update_credits(trans, 1); + update_credits(trans, 1); curr_req = 0; if(p_id == -1){ // Config msg transaction ended, so packet can be scheduled for deletion @@ -466,7 +465,6 @@ void NetworkInterfaceTlm::target_peq_cb(tlm_gp& trans, const tlm::tlm_phase& pha break; default: - report.update_packet_count(ni_name); if(phase == INTERNAL_PROC_PHASE){ receive_and_process_flit(trans); } @@ -507,7 +505,7 @@ void NetworkInterfaceTlm::send_response(tlm_gp& trans){ tlm::tlm_sync_enum status = (*target[0])->nb_transport_bw( trans, bw_phase, delay); - //update_credits(trans, -1); + update_credits(trans, -1); if (status == tlm::TLM_UPDATED){ target_peq.notify(trans, bw_phase, delay); @@ -524,28 +522,27 @@ void NetworkInterfaceTlm::send_response(tlm_gp& trans){ void NetworkInterfaceTlm::update_credits(tlm_gp&trans, int added_creds){ string type_name = get_type_name(get_type_from_extension(trans)); int p_id = get_packet_id_from_extension(trans); - //if(type_name == TYPE_PACKET || (type_name == TYPE_ROUT_CONFIG && p_id != -1)){ - if (!((type_name == TYPE_ROUT_CONFIG && p_id == -1) || - type_name == TYPE_STREAM)){ + + if(type_name == TYPE_PACKET || (type_name == TYPE_ROUT_CONFIG && p_id != -1)){ credit_counter += added_creds; log_info("Credit counter updated: "+to_string(credit_counter)); } } void NetworkInterfaceTlm::log_info(string msg){ - string log_msg = string(name()) + ": (Node" + + string log_msg = ni_name + ": (Node" + to_string(node.id)+"): "+msg; SC_REPORT_INFO(NI_LOG, (log_msg).c_str()); } void NetworkInterfaceTlm::log_error(string msg){ - string log_msg = string(name()) + ": (Node" + + string log_msg = ni_name + ": (Node" + to_string(node.id)+"): "+msg; SC_REPORT_ERROR(NI_LOG, (log_msg).c_str()); } void NetworkInterfaceTlm::log_fatal(string msg){ - string log_msg = string(name()) + ": (Node" + + string log_msg = ni_name + ": (Node" + to_string(node.id)+"): "+msg; SC_REPORT_FATAL(NI_LOG, (log_msg).c_str()); } diff --git a/src/networkInterface/NetworkInterfaceTlm.h b/src/networkInterface/NetworkInterfaceTlm.h index d5f81b3..acd156b 100755 --- a/src/networkInterface/NetworkInterfaceTlm.h +++ b/src/networkInterface/NetworkInterfaceTlm.h @@ -54,6 +54,7 @@ public: std::queue packet_send_queue; std::queue packet_recv_queue; + string ni_name; // To PE sc_in clk; PacketPortContainer* packetPortContainer; @@ -65,14 +66,12 @@ public: tlm_gp* curr_req; tlm_gp* nxt_resp_pend; - string ni_name; bool resp_in_progress; int credit_counter; MemoryManager m_mm; uint8_t max_pos[3]; bool valid_socket[NUM_ACC_LAYERS] = {false}; - TlmReport& report = TlmReport::getInstance(); sc_event_or_list ev_msg_arrv; diff --git a/src/networkManager/NetworkManager.cpp b/src/networkManager/NetworkManager.cpp index 727fb3f..c1fa379 100755 --- a/src/networkManager/NetworkManager.cpp +++ b/src/networkManager/NetworkManager.cpp @@ -55,6 +55,7 @@ void NetworkManager::createTrafficPool() { get_max_pos(max_pos); // divided by num of layers (assuming equal number of nodes in each layer) unsigned long numOfPEs = globalResources.nodes.size() / (max_pos[2]+1); +#ifndef ENABLE_NETRACE if (globalResources.benchmark == "task") { tp = std::make_unique(); } else if (globalResources.benchmark == "synthetic") { @@ -62,6 +63,7 @@ void NetworkManager::createTrafficPool() { } else { FATAL("Please specify correct benchmark type"); } +#endif tp->processingElements.resize(numOfPEs); } diff --git a/src/router/router.cpp b/src/router/router.cpp index 73b31e9..0b57c79 100755 --- a/src/router/router.cpp +++ b/src/router/router.cpp @@ -46,18 +46,18 @@ void TlmRouter::initialize(){ to_string(link)+"_init").c_str()); (*init_socket[link]).register_nb_transport_bw(this, &TlmRouter::nb_transport_bw_cb, link); - + target_socket[link] = new rout_targ_socket((router_name+"_"+ to_string(link)+"_targ").c_str()); (*target_socket[link]).register_nb_transport_fw(this, &TlmRouter::nb_transport_fw_cb, link); - + valid_links[link] = false; resp_in_progress[link] = false; - //nxt_resp_pend[link] = 0; - //nxt_send_data_pend[link] = 0; + nxt_resp_pend[link] = 0; + nxt_send_data_pend[link] = 0; curr_req[link] = 0; - //send_data_in_prog_dest[link] = Direction::invalid; + send_data_in_prog_dest[link] = Direction::invalid; credit_counter[link] = NUM_CREDITS; } } @@ -98,8 +98,8 @@ void TlmRouter::send_begin_req(int link, tlm_gp& trans, int dest_link){ *new_trans, phase, delay); curr_req[dest_link] = new_trans; credit_counter[dest_link]--; - log_info(link, trans, "credits value updated on link " + DIR::toString(dest_link) + - ": " + to_string(credit_counter[dest_link])); + log_info(link, trans, + "credits value updated: " + to_string(credit_counter[dest_link])); // react to result if(status == TLM_UPDATED) { init_peq.notify(*new_trans, phase, delay); @@ -109,8 +109,8 @@ void TlmRouter::send_begin_req(int link, tlm_gp& trans, int dest_link){ curr_req[dest_link] = 0; check_transaction(link, *new_trans); credit_counter[dest_link]++; - log_info(link, trans, "credits value updated on link " + DIR::toString(dest_link) + - ": " + to_string(credit_counter[dest_link])); + log_info(link, trans, + "credits value updated: " + to_string(credit_counter[dest_link])); new_trans->release(); } } @@ -121,17 +121,10 @@ bool TlmRouter::send_data(int link, int dest_link, tlm_gp& trans){ // check credits or that previous message is complete if (credit_counter[dest_link] > 0){ send_begin_req(link, trans, dest_link); - // send response or add it to queue - if(resp_in_progress[link]) { - nxt_resp_pend[link].push(&trans); - } - else{ send_begin_response(link, trans); } - return true; } else { log_warn(link,trans, "Waiting for downstream Router!"); - report.update_throttled_count(router_name); return false; } } @@ -152,6 +145,7 @@ void TlmRouter::check_transaction(int link, tlm_gp& trans) { stream << hex << adr << " check, cmd=" << (cmd ? 'W' : 'R') << ", data=" << hex << *ptr; log_info(link,trans, stream.str()); + // Allow the memory manager to free the transaction object trans.release(); } @@ -182,12 +176,12 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){ int link = get_link_from_extension(trans); log_info(link,trans, "Initiator PEQ callback start"); log_info(link,trans, "Phase "+string(phase.get_name())+" received"); - if (phase == END_REQ || (&trans == curr_req[link] && phase == BEGIN_RESP)){ + if (phase == END_REQ || (&trans == curr_req[link] && + phase == BEGIN_RESP)){ curr_req[link] = 0; - /*credit_counter[link]++; - log_info(link, trans, "credits value updated on link " + DIR::toString(link) + - ": " + to_string(credit_counter[link]));*/ - log_info(link, trans, "Issuing next request"); + credit_counter[link]++; + log_info(link, trans, + "credits value updated: " + to_string(credit_counter[link])); start_pend_req(link, trans); } else if (phase == BEGIN_REQ || phase == END_RESP){ @@ -195,9 +189,7 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){ } if (phase == BEGIN_RESP) { - credit_counter[link]++; - log_info(link, trans, "credits value updated on link " + DIR::toString(link) + - ": " + to_string(credit_counter[link])); + check_transaction(link, trans); send_end_response(link, trans); } } @@ -205,20 +197,20 @@ void TlmRouter::init_peq_cb(tlm_gp& trans, const tlm_phase& phase){ void TlmRouter::start_pend_req(int rel_link, tlm_gp& trans){ // find pending link + Direction pending_link = Direction::invalid; for(uint8_t dir=0; dir #include -#include #include "tlm.h" #include "tlm_utils/simple_initiator_socket.h" @@ -38,7 +37,6 @@ #include "utils/configuration.h" #include "utils/utils.h" #include "utils/noc_logger.h" -#include "utils/report.h" using namespace sc_core; using namespace sc_dt; @@ -61,12 +59,12 @@ class TlmRouter : public sc_module{ peq_with_cb_and_phase init_peq; peq_with_cb_and_phase target_peq; tlm_gp* curr_req[NUM_LINKS]; + tlm_gp* nxt_resp_pend[NUM_LINKS]; + tlm_gp* nxt_send_data_pend[NUM_LINKS]; MemoryManager m_mm; - int credit_counter[NUM_LINKS]; bool resp_in_progress[NUM_LINKS]; - queue nxt_resp_pend[NUM_LINKS]; - queue nxt_send_data_pend[NUM_LINKS]; - queue send_data_in_prog_dest[NUM_LINKS]; + int credit_counter[NUM_LINKS]; + Dir send_data_in_prog_dest[NUM_LINKS]; // attributes string router_name; @@ -74,8 +72,6 @@ class TlmRouter : public sc_module{ uint8_t max_pos[3]; bool valid_links[NUM_LINKS]; - TlmReport& report = TlmReport::getInstance(); - SC_HAS_PROCESS(TlmRouter); TlmRouter(sc_module_name name, uint8_t rout_pos[3], uint8_t max_pos[3]); diff --git a/src/router/router_cs.cpp b/src/router/router_cs.cpp index d310bfe..d63f360 100755 --- a/src/router/router_cs.cpp +++ b/src/router/router_cs.cpp @@ -35,7 +35,7 @@ void TlmRouterCS::initialize(){ TlmRouter::initialize(); cout<<"Inherited function called"; for(int link=0; linknb_transport_fw( *new_trans, phase, delay); curr_req[dest_link] = new_trans; - //credit_counter[dest_link]--; - /*log_info(link, trans, - "credits value updated: " + to_string(credit_counter[link]));*/ + credit_counter[dest_link]--; + log_info(link, trans, + "credits value updated: " + to_string(credit_counter[link])); // react to result if(status == TLM_COMPLETED) { log_error(link, trans, "Request completed prematurely"); curr_req[dest_link] = 0; check_transaction(link, *new_trans); - //credit_counter[dest_link]++; - /*log_info(link, trans, - "credits value updated: " + to_string(credit_counter[dest_link]));*/ + credit_counter[dest_link]++; + log_info(link, trans, + "credits value updated: " + to_string(credit_counter[dest_link])); new_trans->release(); } } @@ -122,7 +122,6 @@ void TlmRouterCS::target_peq_cb(tlm_gp& trans, const tlm_phase& phase){ send_end_req(link, trans); break; default: - report.update_packet_count(name()); if(phase == INTERNAL_PROC_PHASE){ switching(link, trans); } diff --git a/src/utils/configuration.h b/src/utils/configuration.h index 064c9a7..5172a1a 100755 --- a/src/utils/configuration.h +++ b/src/utils/configuration.h @@ -34,10 +34,10 @@ using namespace sc_dt; // router paremters #define NUM_CREDITS 7 // router delays -#define REQ_INIT_DELAY 10 -#define REQ_END_DELAY 10 -#define INTERN_PROC_DELAY 100 -#define RESP_END_DELAY 10 +#define REQ_INIT_DELAY 20 +#define REQ_END_DELAY 20 +#define INTERN_PROC_DELAY 20 +#define RESP_END_DELAY 20 #define UNITS_DELAY SC_NS // types diff --git a/src/utils/report.cpp b/src/utils/report.cpp index 2719455..e69de29 100644 --- a/src/utils/report.cpp +++ b/src/utils/report.cpp @@ -1,81 +0,0 @@ -/******************************************************************************* - * 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. - ******************************************************************************/ -#include "report.h" -#include -#include -#include - -TlmReport::TlmReport(){ -} - -TlmReport &TlmReport::getInstance() -{ - static TlmReport instance; - return instance; -} - -void TlmReport::update_packet_count(string np_name){ - // check if np_name exists in packet_count - if(packet_count.count(np_name)){ - packet_count[np_name] += 1; - } - else{ - packet_count.insert(std::make_pair(np_name, 1)); - } -} - - -void TlmReport::update_throttled_count(string np_name){ - if(throttled_count.count(np_name)){ - throttled_count[np_name] += 1; - } - else{ - throttled_count.insert(std::make_pair(np_name, 1)); - } -} - - -void TlmReport::write_report(){ - cout << endl << "Write packet count csv file" << endl; - stringstream ss_msg_packet; - ss_msg_packet << "router,packet_count" << endl; - for(auto& pc_pair: packet_count){ - ss_msg_packet << string(pc_pair.first) << "," << to_string(pc_pair.second) << endl; - } - - ofstream log_file; - log_file.open(PACKET_COUNT_FILE); - log_file << ss_msg_packet.str(); - log_file.close(); - - - cout << "Write throttled count csv file" << endl << endl; - stringstream ss_msg_throttled; - ss_msg_throttled << "router,throttled_count" << endl; - for(auto& tc_pair: throttled_count){ - ss_msg_throttled << tc_pair.first << "," << tc_pair.second << endl; - } - - log_file.open(THROTTLED_COUNT_FILE); - log_file << ss_msg_throttled.str(); - log_file.close(); -} diff --git a/src/utils/report.h b/src/utils/report.h index 8106de6..561c03b 100644 --- a/src/utils/report.h +++ b/src/utils/report.h @@ -22,42 +22,17 @@ #pragma once #include -//#include - -#define PACKET_COUNT_FILE "out/packet_count.csv" -#define THROTTLED_COUNT_FILE "out/throttled_count.csv" +#include using namespace std; -//using namespace sc_core; +using namespace sc_core; -class TlmReport { +class Report { public: - - TlmReport(); - static TlmReport &getInstance(); - - /** - * Increases the packet count by one for the given router - * - * @param np_name network participant's name - */ - void update_packet_count(string np_name); - - /** - * Increases the throttled count by one for the given router - * - * @param np_name network participant's name - */ - void update_throttled_count(string np_name); - - /** - * Writes report as csv - */ - void write_report(); - - private: std::map packet_count; std::map throttled_count; - //std::map task_start_time; - //std::map task_completed_time; + std::map task_start_time; + std::map task_completed_time; + + Report(); }; \ No newline at end of file diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp index b7f5a30..50d0f3d 100755 --- a/src/utils/utils.cpp +++ b/src/utils/utils.cpp @@ -51,15 +51,12 @@ void get_max_pos(uint8_t max_pos[3]){ vector gr_pos[3]; get_pos_distances(dists, gr_pos); - max_pos[0] = dists[0] != 0 ? - 1+round(max_element(gr_pos[0].begin(), gr_pos[0].end())[0]/dists[0]) - : 1; - max_pos[1] = dists[1] != 0 ? - 1+round(max_element(gr_pos[1].begin(),gr_pos[1].end())[0]/dists[1]) - : 1; - max_pos[2] = dists[2] != 0 ? - 1+round(max_element(gr_pos[2].begin(), gr_pos[2].end())[0]/dists[2]) - : 1; + max_pos[0] = 1+round(max_element(gr_pos[0].begin(), + gr_pos[0].end())[0]/dists[0]); + max_pos[1] = 1+round(max_element(gr_pos[1].begin(), + gr_pos[1].end())[0]/dists[1]); + max_pos[2] = 1+round(max_element(gr_pos[2].begin(), + gr_pos[2].end())[0]/dists[2]); } string get_type_name(dataTypeID_t id){