Gabriel B. has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/67673?usp=email )

Change subject: mem-ruby: Define AbstractController::controllerCount static func
......................................................................

mem-ruby: Define AbstractController::controllerCount static func

It does the same as getNumControllers() which is local to each machine
type.  controllerCount is accessible from everywhere based on enum
value instead of static type.

Change-Id: I486d772b3e195827fc82b72e3d8e5c93a8a637c8
---
M src/mem/ruby/slicc_interface/AbstractController.cc
M src/mem/ruby/slicc_interface/AbstractController.hh
M src/mem/slicc/symbols/StateMachine.py
3 files changed, 29 insertions(+), 2 deletions(-)



diff --git a/src/mem/ruby/slicc_interface/AbstractController.cc b/src/mem/ruby/slicc_interface/AbstractController.cc
index f7b01cf..2affadd 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.cc
+++ b/src/mem/ruby/slicc_interface/AbstractController.cc
@@ -53,6 +53,8 @@
 namespace ruby
 {

+std::map<MachineType, uint32_t> AbstractController::controllerCounts;
+
 AbstractController::AbstractController(const Params &p)
     : ClockedObject(p), Consumer(this), m_version(p.version),
       m_clusterID(p.cluster_id),
@@ -470,6 +472,12 @@
     }
 }

+uint32_t
+AbstractController::controllerCount(MachineType mt) {
+    controllerCounts.try_emplace(mt, 0);
+    return controllerCounts[mt];
+}
+
 bool
 AbstractController::MemoryPort::recvTimingResp(PacketPtr pkt)
 {
diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh
index f483412..7d21351 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.hh
+++ b/src/mem/ruby/slicc_interface/AbstractController.hh
@@ -90,6 +90,8 @@
     NodeID getVersion() const { return m_machineID.getNum(); }
     MachineType getType() const { return m_machineID.getType(); }

+    static uint32_t controllerCount(MachineType);
+
     void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; }

     // return instance name
@@ -377,6 +379,8 @@
     bool m_waiting_mem_retry;
     bool m_mem_ctrl_waiting_retry;

+    static std::map<MachineType, uint32_t> controllerCounts;
+
     /**
      * Port that forwards requests and receives responses from the
      * memory controller.
diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py
index b5af9ca..c963ac2 100644
--- a/src/mem/slicc/symbols/StateMachine.py
+++ b/src/mem/slicc/symbols/StateMachine.py
@@ -678,8 +678,10 @@
 for (int event = 0; event < ${ident}_Event_NUM; event++) {
     m_event_counters[event] = 0;
 }
-"""
-        )
+
+controllerCounts.try_emplace(MachineType_${ident}, 0);
+++controllerCounts[MachineType_${ident}];
+""")
         code.dedent()
         code(
             """

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/67673?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I486d772b3e195827fc82b72e3d8e5c93a8a637c8
Gerrit-Change-Number: 67673
Gerrit-PatchSet: 1
Gerrit-Owner: Gabriel B. <gabriel.bus...@arteris.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to