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>
This commit is contained in:
Mahyar Samani
2021-11-23 12:40:21 -08:00
parent 2671c59858
commit 2d0de8e524
4 changed files with 35 additions and 21 deletions

View File

@@ -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 @@ class GUPSGenerator(AbstractProcessor):
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 @@ class GUPSGenerator(AbstractProcessor):
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit,
clk_freq=clk_freq,
)
]
)

View File

@@ -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 @@ class GUPSGeneratorCore(AbstractGeneratorCore):
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:

View File

@@ -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 @@ class GUPSGeneratorEP(AbstractProcessor):
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 @@ class GUPSGeneratorEP(AbstractProcessor):
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit,
clk_freq=clk_freq,
)
)
@@ -73,6 +72,7 @@ class GUPSGeneratorEP(AbstractProcessor):
start_addr: Addr,
mem_size: str,
update_limit: int,
clk_freq: Optional[str],
):
"""
Helper function to create cores.
@@ -85,6 +85,7 @@ class GUPSGeneratorEP(AbstractProcessor):
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)
]

View File

@@ -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 @@ class GUPSGeneratorPAR(AbstractProcessor):
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 @@ class GUPSGeneratorPAR(AbstractProcessor):
start_addr=start_addr,
mem_size=mem_size,
update_limit=update_limit,
clk_freq=clk_freq,
)
)
@@ -72,6 +71,7 @@ class GUPSGeneratorPAR(AbstractProcessor):
start_addr: Addr,
mem_size: str,
update_limit: int,
clk_freq: Optional[str],
):
"""
Helper function to create cores.
@@ -81,8 +81,9 @@ class GUPSGeneratorPAR(AbstractProcessor):
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)