if options.l2cache: # Provide a clock for the L2 and the L1-to-L2 bus here as they # are not connected using addTwoLevelCacheHierarchy. Use the # same clock as the CPUs. system.l2 = l2_cache_class( clk_domain=system.cpu_clk_domain, **_get_cache_opts("l2", options) )
if options.l2cache and options.l3cache: # Provide a clock for the L2 and the L1-to-L2 bus here as they # are not connected using addTwoLevelCacheHierarchy. Use the # same clock as the CPUs. system.l2 = l2_cache_class( clk_domain=system.cpu_clk_domain, **_get_cache_opts("l2", options) ) system.l3 = l3_cache_class( clk_domain=system.cpu_clk_domain, **_get_cache_opts("l3", options) )
elif options.l2cache: # Provide a clock for the L2 and the L1-to-L2 bus here as they # are not connected using addTwoLevelCacheHierarchy. Use the # same clock as the CPUs. system.l2 = l2_cache_class( clk_domain=system.cpu_clk_domain, **_get_cache_opts("l2", options) )
classL3XBar(CoherentXBar): # 256-bit crossbar by default width = 32
# Assume that most of this is covered by the cache latencies, with # no more than a single pipeline stage for any packet. frontend_latency = 1 forward_latency = 0 response_latency = 1 snoop_response_latency = 1
parser.add_argument( "--l3-hwp-type", default=None, choices=ObjectList.hwp_list.get_names(), help=""" type of hardware prefetcher to use with the L3 cache. (if not set, use the default prefetcher of the selected cache)""", )