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:
@@ -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,
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
]
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user