From 1884bcc03ba2b6e734b4bd379d8542596e6d5c84 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Sat, 20 Sep 2014 17:18:30 -0400 Subject: tests: Add a memtest version using the ideal SnoopFilter This patch adds a basic regression test for the snoop filter. --HG-- rename : tests/configs/memtest.py => tests/configs/memtest-filter.py --- tests/configs/memtest-filter.py | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 tests/configs/memtest-filter.py (limited to 'tests/configs/memtest-filter.py') diff --git a/tests/configs/memtest-filter.py b/tests/configs/memtest-filter.py new file mode 100644 index 000000000..4de009d76 --- /dev/null +++ b/tests/configs/memtest-filter.py @@ -0,0 +1,87 @@ +# Copyright (c) 2006-2007 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Ron Dreslinski + +import m5 +from m5.objects import * +m5.util.addToPath('../configs/common') +from Caches import * + +#MAX CORES IS 8 with the fals sharing method +nb_cores = 8 +cpus = [ MemTest() for i in xrange(nb_cores) ] + +# system simulated +system = System(cpu = cpus, funcmem = SimpleMemory(in_addr_map = False), + funcbus = NoncoherentBus(), + physmem = SimpleMemory(), + membus = CoherentBus(width=16, snoop_filter = SnoopFilter())) +# Dummy voltage domain for all our clock domains +system.voltage_domain = VoltageDomain() +system.clk_domain = SrcClockDomain(clock = '1GHz', + voltage_domain = system.voltage_domain) + +# Create a seperate clock domain for components that should run at +# CPUs frequency +system.cpu_clk_domain = SrcClockDomain(clock = '2GHz', + voltage_domain = system.voltage_domain) + +system.toL2Bus = CoherentBus(clk_domain = system.cpu_clk_domain, width=16, + snoop_filter = SnoopFilter()) +system.l2c = L2Cache(clk_domain = system.cpu_clk_domain, size='64kB', assoc=8) +system.l2c.cpu_side = system.toL2Bus.master + +# connect l2c to membus +system.l2c.mem_side = system.membus.slave + +# add L1 caches +for cpu in cpus: + # All cpus are associated with cpu_clk_domain + cpu.clk_domain = system.cpu_clk_domain + cpu.l1c = L1Cache(size = '32kB', assoc = 4) + cpu.l1c.cpu_side = cpu.test + cpu.l1c.mem_side = system.toL2Bus.slave + system.funcbus.slave = cpu.functional + +system.system_port = system.membus.slave + +# connect reference memory to funcbus +system.funcmem.port = system.funcbus.master + +# connect memory to membus +system.physmem.port = system.membus.master + + +# ----------------------- +# run simulation +# ----------------------- + +root = Root( full_system = False, system = system ) +root.system.mem_mode = 'timing' +#root.trace.flags="Cache CachePort MemoryAccess" +#root.trace.cycle=1 + -- cgit v1.2.3