diff --git a/src/python/gem5/components/boards/abstract_board.py b/src/python/gem5/components/boards/abstract_board.py index e22c9ef105..720aacaf65 100644 --- a/src/python/gem5/components/boards/abstract_board.py +++ b/src/python/gem5/components/boards/abstract_board.py @@ -31,6 +31,7 @@ from .mem_mode import MemMode, mem_mode_to_string from ...resources.workload import AbstractWorkload from m5.objects import ( + AddrRange, System, Port, IOXBar, @@ -39,7 +40,7 @@ from m5.objects import ( VoltageDomain, ) -from typing import List, Optional +from typing import List, Optional, Sequence, Tuple class AbstractBoard: @@ -128,6 +129,14 @@ class AbstractBoard: """ return self.memory + def get_mem_ports(self) -> Sequence[Tuple[AddrRange, Port]]: + """Get the memory ports exposed on this board + + Note: The ports should be returned such that the address ranges are + in ascending order. + """ + return self.get_memory().get_mem_ports() + def get_cache_hierarchy(self) -> Optional["AbstractCacheHierarchy"]: """Get the cache hierarchy connected to the board. diff --git a/src/python/gem5/components/cachehierarchies/chi/private_l1_cache_hierarchy.py b/src/python/gem5/components/cachehierarchies/chi/private_l1_cache_hierarchy.py index 20339030a4..9c91e05ac1 100644 --- a/src/python/gem5/components/cachehierarchies/chi/private_l1_cache_hierarchy.py +++ b/src/python/gem5/components/cachehierarchies/chi/private_l1_cache_hierarchy.py @@ -202,7 +202,7 @@ class PrivateL1CacheHierarchy(AbstractRubyCacheHierarchy): self, board: AbstractBoard ) -> List[MemoryController]: memory_controllers = [] - for rng, port in board.get_memory().get_mem_ports(): + for rng, port in board.get_mem_ports(): mc = MemoryController(self.ruby_system.network, rng, port) mc.ruby_system = self.ruby_system memory_controllers.append(mc) diff --git a/src/python/gem5/components/cachehierarchies/ruby/mesi_two_level_cache_hierarchy.py b/src/python/gem5/components/cachehierarchies/ruby/mesi_two_level_cache_hierarchy.py index 96c7b70351..82089a5bdc 100644 --- a/src/python/gem5/components/cachehierarchies/ruby/mesi_two_level_cache_hierarchy.py +++ b/src/python/gem5/components/cachehierarchies/ruby/mesi_two_level_cache_hierarchy.py @@ -147,7 +147,7 @@ class MESITwoLevelCacheHierarchy( self._directory_controllers = [ Directory(self.ruby_system.network, cache_line_size, range, port) - for range, port in board.get_memory().get_mem_ports() + for range, port in board.get_mem_ports() ] # TODO: Make this prettier: The problem is not being able to proxy # the ruby system correctly diff --git a/src/python/gem5/components/cachehierarchies/ruby/mi_example_cache_hierarchy.py b/src/python/gem5/components/cachehierarchies/ruby/mi_example_cache_hierarchy.py index e3cf714c80..5955ad3b20 100644 --- a/src/python/gem5/components/cachehierarchies/ruby/mi_example_cache_hierarchy.py +++ b/src/python/gem5/components/cachehierarchies/ruby/mi_example_cache_hierarchy.py @@ -118,7 +118,7 @@ class MIExampleCacheHierarchy(AbstractRubyCacheHierarchy): # Create the directory controllers self._directory_controllers = [] - for range, port in board.get_memory().get_mem_ports(): + for range, port in board.get_mem_ports(): dir = Directory( self.ruby_system.network, board.get_cache_line_size(),