stdlib: Adding clock_domain to GUPSGenerators
This change adds clock domain as a parameter to the GUPSGen
classes. This way the generator and other components can
work on different clock frequencies.
Change-Id: If916877a57b3c3a61073dad075e35f3f93af8459
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53163
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
diff --git a/src/python/gem5/components/processors/gups_generator.py b/src/python/gem5/components/processors/gups_generator.py
index 191be6b..41d1812 100644
--- a/src/python/gem5/components/processors/gups_generator.py
+++ b/src/python/gem5/components/processors/gups_generator.py
@@ -25,15 +25,14 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from ...utils.override import overrides
+from typing import Optional
from m5.objects import Addr
+from ...utils.override import overrides
from ..boards.mem_mode import MemMode
-
-from .gups_generator_core import GUPSGeneratorCore
-
from .abstract_processor import AbstractProcessor
from ..boards.abstract_board import AbstractBoard
+from .gups_generator_core import GUPSGeneratorCore
class GUPSGenerator(AbstractProcessor):
@@ -42,6 +41,7 @@
start_addr: Addr,
mem_size: str,
update_limit: int = 0,
+ clk_freq: Optional[str] = None,
):
"""The GUPSGenerator class
This class defines the interface for a single core GUPSGenerator, this
@@ -63,6 +63,7 @@
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit,
+ clk_freq=clk_freq,
)
]
)
diff --git a/src/python/gem5/components/processors/gups_generator_core.py b/src/python/gem5/components/processors/gups_generator_core.py
index 8ce921e..f315b8b 100644
--- a/src/python/gem5/components/processors/gups_generator_core.py
+++ b/src/python/gem5/components/processors/gups_generator_core.py
@@ -24,10 +24,11 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.objects import Port, GUPSGen, Addr
+from typing import Optional
from ...utils.override import overrides
from .abstract_generator_core import AbstractGeneratorCore
+from m5.objects import Port, GUPSGen, Addr, SrcClockDomain, VoltageDomain
class GUPSGeneratorCore(AbstractGeneratorCore):
@@ -36,14 +37,24 @@
start_addr: Addr,
mem_size: str,
update_limit: int,
+ clk_freq: Optional[str],
):
"""
Create a GUPSGeneratorCore as the main generator.
"""
super().__init__()
self.generator = GUPSGen(
- start_addr=start_addr, mem_size=mem_size, update_limit=update_limit
- )
+ start_addr=start_addr,
+ mem_size=mem_size,
+ update_limit=update_limit,
+ )
+ if clk_freq:
+ clock_domain = SrcClockDomain(
+ clock=clk_freq, voltage_domain=VoltageDomain()
+ )
+ self.generator.clk_domain = clock_domain
+
+
@overrides(AbstractGeneratorCore)
def connect_dcache(self, port: Port) -> None:
diff --git a/src/python/gem5/components/processors/gups_generator_ep.py b/src/python/gem5/components/processors/gups_generator_ep.py
index 203a88c..da27494 100644
--- a/src/python/gem5/components/processors/gups_generator_ep.py
+++ b/src/python/gem5/components/processors/gups_generator_ep.py
@@ -25,17 +25,14 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from ...utils.override import overrides
+from typing import Optional
from m5.objects import Addr
-from m5.util.convert import toMemorySize
-
from ..boards.mem_mode import MemMode
-
-from .gups_generator_core import GUPSGeneratorCore
-
+from ...utils.override import overrides
+from m5.util.convert import toMemorySize
from .abstract_processor import AbstractProcessor
from ..boards.abstract_board import AbstractBoard
-
+from .gups_generator_core import GUPSGeneratorCore
class GUPSGeneratorEP(AbstractProcessor):
def __init__(
@@ -44,6 +41,7 @@
start_addr: Addr,
mem_size: str,
update_limit: int = 0,
+ clk_freq: Optional[str] = None,
):
"""The GUPSGeneratorEP class
This class defines the interface for multi core GUPSGenerator, this
@@ -64,6 +62,7 @@
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit,
+ clk_freq=clk_freq,
)
)
@@ -73,6 +72,7 @@
start_addr: Addr,
mem_size: str,
update_limit: int,
+ clk_freq: Optional[str],
):
"""
Helper function to create cores.
@@ -85,6 +85,7 @@
start_addr=start_addr + i * chunk_size,
mem_size=table_size,
update_limit=update_limit,
+ clk_freq=clk_freq
)
for i in range(num_cores)
]
diff --git a/src/python/gem5/components/processors/gups_generator_par.py b/src/python/gem5/components/processors/gups_generator_par.py
index aad360a..12e8d4c 100644
--- a/src/python/gem5/components/processors/gups_generator_par.py
+++ b/src/python/gem5/components/processors/gups_generator_par.py
@@ -25,17 +25,14 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from ...utils.override import overrides
+from typing import Optional
from m5.objects import Addr
+from ...utils.override import overrides
from ..boards.mem_mode import MemMode
-
-from .gups_generator_core import GUPSGeneratorCore
-
from .abstract_processor import AbstractProcessor
from ..boards.abstract_board import AbstractBoard
-
-
+from .gups_generator_core import GUPSGeneratorCore
class GUPSGeneratorPAR(AbstractProcessor):
def __init__(
self,
@@ -43,6 +40,7 @@
start_addr: Addr,
mem_size: str,
update_limit: int = 0,
+ clk_freq: Optional[str] = None,
):
"""The GUPSGeneratorPAR class
This class defines the interface for multi core GUPSGenerator, this
@@ -63,6 +61,7 @@
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit,
+ clk_freq=clk_freq,
)
)
@@ -72,6 +71,7 @@
start_addr: Addr,
mem_size: str,
update_limit: int,
+ clk_freq: Optional[str],
):
"""
Helper function to create cores.
@@ -81,8 +81,9 @@
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit / num_cores,
+ clk_freq=clk_freq,
)
- for i in range(num_cores)
+ for _ in range(num_cores)
]
@overrides(AbstractProcessor)