tests: Update tests to use ALL/gem5.opt compilation

Where possible the gem5 tests have been updated to use the
build/ALL/gem5.opt compilation.

If a quick test requied a specific a ISA/protocol compilation they
were moved to the long/nightly set. This means all the quick/kokoro
tests are run with the build/ALL/gem5.opt compilation.

The learning_gem5 tests have been updated to use ALL/gem5.opt.

The equivilant examples on the website have been updated via:
https://gem5-review.googlesource.com/c/public/gem5-website/+/63336

Change-Id: I533689ad6848233867bdba9e9a43bb5840ed65c7
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/63374
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
This commit is contained in:
Bobby R. Bruce
2022-09-08 18:19:27 -07:00
committed by Bobby Bruce
parent 2429a6dd58
commit 3b0cb574f5
70 changed files with 455 additions and 225 deletions

View File

@@ -76,7 +76,7 @@ memory = DualChannelDDR4_2400(size="2GB")
# Here we setup the processor. We use a simple TIMING processor. The config
# script was also tested with ATOMIC processor.
processor = SimpleProcessor(cpu_type=CPUTypes.TIMING, num_cores=2)
processor = SimpleProcessor(cpu_type=CPUTypes.TIMING, num_cores=2, isa=ISA.ARM)
# The ArmBoard requires a `release` to be specified. This adds all the
# extensions or features to the system. We are setting this to Armv8

View File

@@ -0,0 +1,78 @@
# Copyright (c) 2015 Jason Power
# 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.
"""
This is the ARM equivalent to `simple.py` (which is designed to run using the
X86 ISA). More detailed documentation can be found in `simple.py`.
"""
import m5
from m5.objects import *
system = System()
system.clk_domain = SrcClockDomain()
system.clk_domain.clock = "1GHz"
system.clk_domain.voltage_domain = VoltageDomain()
system.mem_mode = "timing"
system.mem_ranges = [AddrRange("512MB")]
system.cpu = ArmTimingSimpleCPU()
system.membus = SystemXBar()
system.cpu.icache_port = system.membus.cpu_side_ports
system.cpu.dcache_port = system.membus.cpu_side_ports
system.cpu.createInterruptController()
system.mem_ctrl = MemCtrl()
system.mem_ctrl.dram = DDR3_1600_8x8()
system.mem_ctrl.dram.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.mem_side_ports
system.system_port = system.membus.cpu_side_ports
thispath = os.path.dirname(os.path.realpath(__file__))
binary = os.path.join(
thispath,
"../../../",
"tests/test-progs/hello/bin/arm/linux/hello",
)
system.workload = SEWorkload.init_compatible(binary)
process = Process()
process.cmd = [binary]
system.cpu.workload = process
system.cpu.createThreads()
root = Root(full_system=False, system=system)
m5.instantiate()
print("Beginning simulation!")
exit_event = m5.simulate()
print("Exiting @ tick %i because %s" % (m5.curTick(), exit_event.getCause()))

View File

@@ -0,0 +1,78 @@
# Copyright (c) 2015 Jason Power
# 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.
"""
This is the RISCV equivalent to `simple.py` (which is designed to run using the
X86 ISA). More detailed documentation can be found in `simple.py`.
"""
import m5
from m5.objects import *
system = System()
system.clk_domain = SrcClockDomain()
system.clk_domain.clock = "1GHz"
system.clk_domain.voltage_domain = VoltageDomain()
system.mem_mode = "timing"
system.mem_ranges = [AddrRange("512MB")]
system.cpu = RiscvTimingSimpleCPU()
system.membus = SystemXBar()
system.cpu.icache_port = system.membus.cpu_side_ports
system.cpu.dcache_port = system.membus.cpu_side_ports
system.cpu.createInterruptController()
system.mem_ctrl = MemCtrl()
system.mem_ctrl.dram = DDR3_1600_8x8()
system.mem_ctrl.dram.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.mem_side_ports
system.system_port = system.membus.cpu_side_ports
thispath = os.path.dirname(os.path.realpath(__file__))
binary = os.path.join(
thispath,
"../../../",
"tests/test-progs/hello/bin/riscv/linux/hello",
)
system.workload = SEWorkload.init_compatible(binary)
process = Process()
process.cmd = [binary]
system.cpu.workload = process
system.cpu.createThreads()
root = Root(full_system=False, system=system)
m5.instantiate()
print("Beginning simulation!")
exit_event = m5.simulate()
print("Exiting @ tick %i because %s" % (m5.curTick(), exit_event.getCause()))

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015 Jason Power
# All rights reserved.
#
@@ -33,6 +32,10 @@ learning_gem5 book for more information about this script.
IMPORTANT: If you modify this file, it's likely that the Learning gem5 book
also needs to be updated. For now, email Jason <power.jg@gmail.com>
This script uses the X86 ISA. `simple-arm.py` and `simple-riscv.py` may be
referenced as examples of scripts which utilize the ARM and RISC-V ISAs
respectively.
"""
# import the m5 (gem5) library created when gem5 is built
@@ -40,8 +43,6 @@ import m5
# import all of the SimObjects
from m5.objects import *
from gem5.isas import ISA
from gem5.runtime import get_runtime_isa
# create the system we are going to simulate
system = System()
@@ -56,7 +57,9 @@ system.mem_mode = "timing" # Use timing accesses
system.mem_ranges = [AddrRange("512MB")] # Create an address range
# Create a simple CPU
system.cpu = TimingSimpleCPU()
# You can use ISA-specific CPU models for different workloads:
# `RiscvTimingSimpleCPU`, `ArmTimingSimpleCPU`.
system.cpu = X86TimingSimpleCPU()
# Create a memory bus, a system crossbar, in this case
system.membus = SystemXBar()
@@ -68,12 +71,12 @@ system.cpu.dcache_port = system.membus.cpu_side_ports
# create the interrupt controller for the CPU and connect to the membus
system.cpu.createInterruptController()
# For x86 only, make sure the interrupts are connected to the memory
# Note: these are directly connected to the memory bus and are not cached
if get_runtime_isa() == ISA.X86:
system.cpu.interrupts[0].pio = system.membus.mem_side_ports
system.cpu.interrupts[0].int_requestor = system.membus.cpu_side_ports
system.cpu.interrupts[0].int_responder = system.membus.mem_side_ports
# For X86 only we make sure the interrupts care connect to memory.
# Note: these are directly connected to the memory bus and are not cached.
# For other ISA you should remove the following three lines.
system.cpu.interrupts[0].pio = system.membus.mem_side_ports
system.cpu.interrupts[0].int_requestor = system.membus.cpu_side_ports
system.cpu.interrupts[0].int_responder = system.membus.mem_side_ports
# Create a DDR3 memory controller and connect it to the membus
system.mem_ctrl = MemCtrl()
@@ -84,18 +87,14 @@ system.mem_ctrl.port = system.membus.mem_side_ports
# Connect the system up to the membus
system.system_port = system.membus.cpu_side_ports
# get ISA for the binary to run.
isa = get_runtime_isa()
# Default to running 'hello', use the compiled ISA to find the binary
# grab the specific path to the binary
# Here we set the X86 "hello world" binary. With other ISAs you must specify
# workloads compiled to those ISAs. Other "hello world" binaries for other ISAs
# can be found in "tests/test-progs/hello".
thispath = os.path.dirname(os.path.realpath(__file__))
binary = os.path.join(
thispath,
"../../../",
"tests/test-progs/hello/bin/",
isa.name.lower(),
"linux/hello",
"tests/test-progs/hello/bin/x86/linux/hello",
)
system.workload = SEWorkload.init_compatible(binary)

View File

@@ -43,7 +43,6 @@ import m5
# import all of the SimObjects
from m5.objects import *
from gem5.isas import ISA
from gem5.runtime import get_runtime_isa
# Add the common scripts to our path
@@ -55,18 +54,13 @@ from caches import *
# import the SimpleOpts module
from common import SimpleOpts
# get ISA for the default binary to run. This is mostly for simple testing
isa = get_runtime_isa()
# Default to running 'hello', use the compiled ISA to find the binary
# grab the specific path to the binary
thispath = os.path.dirname(os.path.realpath(__file__))
default_binary = os.path.join(
thispath,
"../../../",
"tests/test-progs/hello/bin/",
isa.name.lower(),
"linux/hello",
"tests/test-progs/hello/bin/x86/linux/hello",
)
# Binary to execute
@@ -88,7 +82,7 @@ system.mem_mode = "timing" # Use timing accesses
system.mem_ranges = [AddrRange("512MB")] # Create an address range
# Create a simple CPU
system.cpu = TimingSimpleCPU()
system.cpu = X86TimingSimpleCPU()
# Create an L1 instruction and data cache
system.cpu.icache = L1ICache(args)
@@ -117,13 +111,9 @@ system.l2cache.connectMemSideBus(system.membus)
# create the interrupt controller for the CPU
system.cpu.createInterruptController()
# For x86 only, make sure the interrupts are connected to the memory
# Note: these are directly connected to the memory bus and are not cached
if isa == ISA.X86:
system.cpu.interrupts[0].pio = system.membus.mem_side_ports
system.cpu.interrupts[0].int_requestor = system.membus.cpu_side_ports
system.cpu.interrupts[0].int_responder = system.membus.mem_side_ports
system.cpu.interrupts[0].pio = system.membus.mem_side_ports
system.cpu.interrupts[0].int_requestor = system.membus.cpu_side_ports
system.cpu.interrupts[0].int_responder = system.membus.mem_side_ports
# Connect the system up to the membus
system.system_port = system.membus.cpu_side_ports

View File

@@ -50,7 +50,7 @@ system.mem_mode = "timing" # Use timing accesses
system.mem_ranges = [AddrRange("512MB")] # Create an address range
# Create a simple CPU
system.cpu = TimingSimpleCPU()
system.cpu = X86TimingSimpleCPU()
# Create a memory bus, a coherent crossbar, in this case
system.membus = SystemXBar()

View File

@@ -50,7 +50,7 @@ system.mem_mode = "timing" # Use timing accesses
system.mem_ranges = [AddrRange("512MB")] # Create an address range
# Create a simple CPU
system.cpu = TimingSimpleCPU()
system.cpu = X86TimingSimpleCPU()
# Create the simple memory object
system.memobj = SimpleMemobj()

View File

@@ -39,8 +39,6 @@ import math
from m5.defines import buildEnv
from m5.util import fatal, panic
from gem5.isas import ISA
from gem5.runtime import get_runtime_isa
from m5.objects import *
@@ -148,10 +146,10 @@ class L1Cache(L1Cache_Controller):
1. The O3 model must keep the LSQ coherent with the caches
2. The x86 mwait instruction is built on top of coherence
3. The local exclusive monitor in ARM systems
As this is an X86 simulation we return True.
"""
if type(cpu) is DerivO3CPU or get_runtime_isa() in (ISA.X86, ISA.ARM):
return True
return False
return True
def connectQueues(self, ruby_system):
"""Connect all of the queues for this controller."""

View File

@@ -41,8 +41,6 @@ import math
from m5.defines import buildEnv
from m5.util import fatal, panic
from gem5.isas import ISA
from gem5.runtime import get_runtime_isa
from m5.objects import *
@@ -146,10 +144,10 @@ class L1Cache(L1Cache_Controller):
1. The O3 model must keep the LSQ coherent with the caches
2. The x86 mwait instruction is built on top of coherence
3. The local exclusive monitor in ARM systems
As this is an X86 simulation we return True.
"""
if type(cpu) is DerivO3CPU or get_runtime_isa() in (ISA.X86, ISA.ARM):
return True
return False
return True
def connectQueues(self, ruby_system):
"""Connect all of the queues for this controller."""

View File

@@ -42,7 +42,6 @@ import m5
# import all of the SimObjects
from m5.objects import *
from gem5.runtime import get_runtime_isa
# Needed for running C++ threads
m5.util.addToPath("../../")
@@ -65,7 +64,7 @@ system.mem_mode = "timing" # Use timing accesses
system.mem_ranges = [AddrRange("512MB")] # Create an address range
# Create a pair of simple CPUs
system.cpu = [TimingSimpleCPU() for i in range(2)]
system.cpu = [X86TimingSimpleCPU() for i in range(2)]
# Create a DDR3 memory controller and connect it to the membus
system.mem_ctrl = MemCtrl()
@@ -80,18 +79,13 @@ for cpu in system.cpu:
system.caches = MyCacheSystem()
system.caches.setup(system, system.cpu, [system.mem_ctrl])
# get ISA for the binary to run.
isa = get_runtime_isa()
# Run application and use the compiled ISA to find the binary
# grab the specific path to the binary
thispath = os.path.dirname(os.path.realpath(__file__))
binary = os.path.join(
thispath,
"../../../",
"tests/test-progs/threads/bin/",
isa.name.lower(),
"linux/threads",
"tests/test-progs/threads/bin/x86/linux/threads",
)
# Create a process for a simple "multi-threaded" application

View File

@@ -192,6 +192,6 @@ for cpu_type in cpu_types:
"--resource-directory",
resource_path,
],
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
)

View File

@@ -40,7 +40,7 @@ from m5.proxy import *
m5.util.addToPath("../configs/")
from common import FSConfig
from common.Caches import *
from base_caches import *
from base_config import *
from common.cores.arm.O3_ARM_v7a import *
from common.Benchmarks import SysConfig

View File

@@ -0,0 +1,85 @@
# Copyright (c) 2012 ARM Limited
# Copyright (c) 2020 Barkhausen Institut
# All rights reserved.
#
# The license below extends only to copyright in the software and shall
# not be construed as granting a license to any other intellectual
# property including but not limited to intellectual property relating
# to a hardware implementation of the functionality of the software
# licensed hereunder. You may use the software subject to the license
# terms below provided that you ensure that this notice is replicated
# unmodified and in its entirety in all distributions of the software,
# modified or unmodified, in source code or in binary form.
#
# 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.
from m5.objects import *
# Base implementations of L1, L2, IO and TLB-walker caches. There are
# used in the regressions and also as base components in the
# system-configuration scripts. The values are meant to serve as a
# starting point, and specific parameters can be overridden in the
# specific instantiations.
class L1Cache(Cache):
assoc = 2
tag_latency = 2
data_latency = 2
response_latency = 2
mshrs = 4
tgts_per_mshr = 20
class L1_ICache(L1Cache):
is_read_only = True
# Writeback clean lines as well
writeback_clean = True
class L1_DCache(L1Cache):
pass
class L2Cache(Cache):
assoc = 8
tag_latency = 20
data_latency = 20
response_latency = 20
mshrs = 20
tgts_per_mshr = 12
write_buffers = 8
class IOCache(Cache):
assoc = 8
tag_latency = 50
data_latency = 50
response_latency = 50
mshrs = 20
size = "1kB"
tgts_per_mshr = 12

View File

@@ -40,7 +40,7 @@ from m5.objects import *
from m5.proxy import *
from common import FSConfig
from common import Options
from common.Caches import *
from base_caches import *
from ruby import Ruby
_have_kvm_support = "BaseKvmCPU" in globals()

View File

@@ -41,5 +41,5 @@ root = LinuxArmFSSystemUniprocessor(
machine_type="VExpress_GEM5_V1",
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=MinorCPU,
cpu_class=ArmMinorCPU,
).create_root()

View File

@@ -44,7 +44,7 @@ root = LinuxArmFSSystemUniprocessor(
machine_type="VExpress_GEM5_V1",
mem_mode="atomic",
mem_class=SimpleMemory,
cpu_class=AtomicSimpleCPU,
cpu_class=ArmAtomicSimpleCPU,
).create_root()
run_test = functools.partial(checkpoint.run_test, interval=0.2)

View File

@@ -41,6 +41,6 @@ root = LinuxArmFSSystem(
machine_type="VExpress_GEM5_V1",
mem_mode="atomic",
mem_class=SimpleMemory,
cpu_class=AtomicSimpleCPU,
cpu_class=ArmAtomicSimpleCPU,
num_cpus=2,
).create_root()

View File

@@ -41,5 +41,5 @@ root = LinuxArmFSSystemUniprocessor(
machine_type="VExpress_GEM5_V1",
mem_mode="atomic",
mem_class=SimpleMemory,
cpu_class=AtomicSimpleCPU,
cpu_class=ArmAtomicSimpleCPU,
).create_root()

View File

@@ -41,7 +41,7 @@ root = LinuxArmFSSystem(
machine_type="VExpress_GEM5_V1",
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
num_cpus=2,
use_ruby=True,
).create_root()

View File

@@ -41,6 +41,6 @@ root = LinuxArmFSSystem(
machine_type="VExpress_GEM5_V1",
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
num_cpus=2,
).create_root()

View File

@@ -41,6 +41,6 @@ root = LinuxArmFSSystemUniprocessor(
machine_type="VExpress_GEM5_V1",
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
use_ruby=True,
).create_root()

View File

@@ -41,5 +41,5 @@ root = LinuxArmFSSystemUniprocessor(
machine_type="VExpress_GEM5_V1",
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
).create_root()

View File

@@ -38,7 +38,8 @@ from arm_generic import *
import switcheroo
root = LinuxArmFSSwitcheroo(
mem_class=SimpleMemory, cpu_classes=(AtomicSimpleCPU, AtomicSimpleCPU)
mem_class=SimpleMemory,
cpu_classes=(ArmAtomicSimpleCPU, ArmAtomicSimpleCPU),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -41,7 +41,12 @@ root = LinuxArmFSSwitcheroo(
machine_type="VExpress_GEM5_V1",
aarch64_kernel=False,
mem_class=DDR3_1600_8x8,
cpu_classes=(AtomicSimpleCPU, TimingSimpleCPU, MinorCPU, DerivO3CPU),
cpu_classes=(
ArmAtomicSimpleCPU,
ArmTimingSimpleCPU,
ArmMinorCPU,
ArmO3CPU,
),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -38,7 +38,7 @@ from arm_generic import *
import switcheroo
root = LinuxArmFSSwitcheroo(
cpu_classes=(NonCachingSimpleCPU, TimingSimpleCPU)
cpu_classes=(ArmNonCachingSimpleCPU, ArmTimingSimpleCPU)
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -41,7 +41,7 @@ root = LinuxArmFSSwitcheroo(
aarch64_kernel=False,
machine_type="VExpress_GEM5_V1",
mem_class=DDR3_1600_8x8,
cpu_classes=(DerivO3CPU, DerivO3CPU),
cpu_classes=(ArmDerivO3CPU, ArmDerivO3CPU),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -38,7 +38,8 @@ from arm_generic import *
import switcheroo
root = LinuxArmFSSwitcheroo(
mem_class=DDR3_1600_8x8, cpu_classes=(TimingSimpleCPU, TimingSimpleCPU)
mem_class=DDR3_1600_8x8,
cpu_classes=(ArmTimingSimpleCPU, ArmTimingSimpleCPU),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -37,5 +37,8 @@ from m5.objects import *
from arm_generic import *
root = LinuxArmFSSystem(
mem_mode="timing", mem_class=DDR3_1600_8x8, cpu_class=MinorCPU, num_cpus=2
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=ArmMinorCPU,
num_cpus=2,
).create_root()

View File

@@ -37,5 +37,5 @@ from m5.objects import *
from arm_generic import *
root = LinuxArmFSSystemUniprocessor(
mem_mode="timing", mem_class=DDR3_1600_8x8, cpu_class=MinorCPU
mem_mode="timing", mem_class=DDR3_1600_8x8, cpu_class=ArmMinorCPU
).create_root()

View File

@@ -39,7 +39,7 @@ from arm_generic import *
root = LinuxArmFSSystem(
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=O3CPU,
cpu_class=ArmO3CPU,
num_cpus=2,
enable_dvm=True,
use_ruby=True,

View File

@@ -40,7 +40,7 @@ from arm_generic import *
import checkpoint
root = LinuxArmFSSystemUniprocessor(
mem_mode="atomic", mem_class=SimpleMemory, cpu_class=AtomicSimpleCPU
mem_mode="atomic", mem_class=SimpleMemory, cpu_class=ArmAtomicSimpleCPU
).create_root()
run_test = functools.partial(

View File

@@ -39,6 +39,6 @@ from arm_generic import *
root = LinuxArmFSSystem(
mem_mode="atomic",
mem_class=SimpleMemory,
cpu_class=AtomicSimpleCPU,
cpu_class=ArmAtomicSimpleCPU,
num_cpus=2,
).create_root()

View File

@@ -37,5 +37,5 @@ from m5.objects import *
from arm_generic import *
root = LinuxArmFSSystemUniprocessor(
mem_mode="atomic", mem_class=SimpleMemory, cpu_class=AtomicSimpleCPU
mem_mode="atomic", mem_class=SimpleMemory, cpu_class=ArmAtomicSimpleCPU
).create_root()

View File

@@ -39,7 +39,7 @@ from arm_generic import *
root = LinuxArmFSSystem(
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
num_cpus=2,
use_ruby=True,
).create_root()

View File

@@ -39,6 +39,6 @@ from arm_generic import *
root = LinuxArmFSSystem(
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
num_cpus=2,
).create_root()

View File

@@ -39,6 +39,6 @@ from arm_generic import *
root = LinuxArmFSSystemUniprocessor(
mem_mode="timing",
mem_class=DDR3_1600_8x8,
cpu_class=TimingSimpleCPU,
cpu_class=ArmTimingSimpleCPU,
use_ruby=True,
).create_root()

View File

@@ -37,5 +37,5 @@ from m5.objects import *
from arm_generic import *
root = LinuxArmFSSystemUniprocessor(
mem_mode="timing", mem_class=DDR3_1600_8x8, cpu_class=TimingSimpleCPU
mem_mode="timing", mem_class=DDR3_1600_8x8, cpu_class=ArmTimingSimpleCPU
).create_root()

View File

@@ -38,7 +38,8 @@ from arm_generic import *
import switcheroo
root = LinuxArmFSSwitcheroo(
mem_class=SimpleMemory, cpu_classes=(AtomicSimpleCPU, AtomicSimpleCPU)
mem_class=SimpleMemory,
cpu_classes=(ArmAtomicSimpleCPU, ArmAtomicSimpleCPU),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -39,7 +39,12 @@ import switcheroo
root = LinuxArmFSSwitcheroo(
mem_class=DDR3_1600_8x8,
cpu_classes=(AtomicSimpleCPU, TimingSimpleCPU, MinorCPU, DerivO3CPU),
cpu_classes=(
ArmAtomicSimpleCPU,
ArmTimingSimpleCPU,
ArmMinorCPU,
ArmDerivO3CPU,
),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -38,7 +38,7 @@ from arm_generic import *
import switcheroo
root = LinuxArmFSSwitcheroo(
mem_class=DDR3_1600_8x8, cpu_classes=(DerivO3CPU, DerivO3CPU)
mem_class=DDR3_1600_8x8, cpu_classes=(ArmDerivO3CPU, ArmDerivO3CPU)
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -38,7 +38,8 @@ from arm_generic import *
import switcheroo
root = LinuxArmFSSwitcheroo(
mem_class=DDR3_1600_8x8, cpu_classes=(TimingSimpleCPU, TimingSimpleCPU)
mem_class=DDR3_1600_8x8,
cpu_classes=(ArmTimingSimpleCPU, ArmTimingSimpleCPU),
).create_root()
# Setup a custom test method that uses the switcheroo tester that

View File

@@ -66,7 +66,7 @@ parser.add_argument(
"-m",
"--mem-system",
type=str,
choices=("classic", "mi_example"),
choices=("classic", "mesi_two_level"),
required=True,
help="The memory system.",
)
@@ -110,13 +110,21 @@ if args.mem_system == "classic":
cache_hierarchy = PrivateL1PrivateL2CacheHierarchy(
l1d_size="32KiB", l1i_size="32KiB", l2_size="512KiB"
)
elif args.mem_system == "mi_example":
from gem5.components.cachehierarchies.ruby.mi_example_cache_hierarchy import (
MIExampleCacheHierarchy,
elif args.mem_system == "mesi_two_level":
from gem5.components.cachehierarchies.ruby.mesi_two_level_cache_hierarchy import (
MESITwoLevelCacheHierarchy,
)
# Setup the cache hierarchy.
cache_hierarchy = MIExampleCacheHierarchy(size="32KiB", assoc=8)
cache_hierarchy = MESITwoLevelCacheHierarchy(
l1d_size="16kB",
l1d_assoc=8,
l1i_size="16kB",
l1i_assoc=8,
l2_size="256kB",
l2_assoc=16,
num_l2_banks=1,
)
# Setup the system memory.
python_module = "gem5.components.memory"

View File

@@ -38,7 +38,7 @@ import _m5
from m5.objects import *
m5.util.addToPath("../configs/")
from common.Caches import *
from base_caches import *
class Sequential:

View File

@@ -29,8 +29,6 @@ import os
import argparse
import m5
from gem5.isas import ISA
from gem5.runtime import get_runtime_isa
from m5.objects import *
@@ -99,27 +97,25 @@ class MySimpleMemory(SimpleMemory):
latency = "1ns"
if get_runtime_isa() == ISA.X86:
valid_cpu = {
"AtomicSimpleCPU": AtomicSimpleCPU,
"TimingSimpleCPU": TimingSimpleCPU,
"DerivO3CPU": DerivO3CPU,
}
else:
valid_cpu = {
"AtomicSimpleCPU": AtomicSimpleCPU,
"TimingSimpleCPU": TimingSimpleCPU,
"MinorCPU": MinorCPU,
"DerivO3CPU": DerivO3CPU,
}
valid_cpu = {
"X86AtomicSimpleCPU": X86AtomicSimpleCPU,
"X86TimingSimpleCPU": X86TimingSimpleCPU,
"X86DerivO3CPU": X86O3CPU,
"ArmAtomicSimpleCPU": ArmAtomicSimpleCPU,
"ArmTimingSimpleCPU": ArmTimingSimpleCPU,
"ArmMinorCPU": ArmMinorCPU,
"ArmDerivO3CPU": ArmO3CPU,
"RiscvAtomicSimpleCPU": RiscvAtomicSimpleCPU,
"RiscvTimingSimpleCPU": RiscvTimingSimpleCPU,
"RiscvMinorCPU": RiscvMinorCPU,
"RiscvDerivO3CPU": RiscvO3CPU,
}
valid_mem = {"SimpleMemory": MySimpleMemory, "DDR3_1600_8x8": DDR3_1600_8x8}
parser = argparse.ArgumentParser()
parser.add_argument("binary", type=str)
parser.add_argument(
"--cpu", choices=valid_cpu.keys(), default="TimingSimpleCPU"
)
parser.add_argument("--cpu")
parser.add_argument("--mem", choices=valid_mem.keys(), default="SimpleMemory")
args = parser.parse_args()
@@ -132,14 +128,22 @@ system.clk_domain = SrcClockDomain()
system.clk_domain.clock = "1GHz"
system.clk_domain.voltage_domain = VoltageDomain()
if args.cpu != "AtomicSimpleCPU":
if args.cpu not in (
"X86AtomicSimpleCPU",
"ArmAtomicSimpleCPU",
"RiscvAtomicSimpleCPU",
):
system.mem_mode = "timing"
system.mem_ranges = [AddrRange("512MB")]
system.cpu = valid_cpu[args.cpu]()
if args.cpu == "AtomicSimpleCPU":
if args.cpu in (
"X86AtomicSimpleCPU",
"ArmAtomicSimpleCPU",
"RiscvAtomicSimpleCPU",
):
system.membus = SystemXBar()
system.cpu.icache_port = system.membus.cpu_side_ports
system.cpu.dcache_port = system.membus.cpu_side_ports
@@ -157,7 +161,7 @@ else:
system.l2cache.connectMemSideBus(system.membus)
system.cpu.createInterruptController()
if get_runtime_isa() == ISA.X86:
if args.cpu in ("X86AtomicSimpleCPU", "X86TimingSimpleCPU", "X86DerivO3CPU"):
system.cpu.interrupts[0].pio = system.membus.mem_side_ports
system.cpu.interrupts[0].int_master = system.membus.cpu_side_ports
system.cpu.interrupts[0].int_slave = system.membus.mem_side_ports

View File

@@ -47,21 +47,21 @@ workloads = ("Bubblesort", "FloatMM")
valid_isas = {
constants.vega_x86_tag: (
"AtomicSimpleCPU",
"TimingSimpleCPU",
"DerivO3CPU",
"X86AtomicSimpleCPU",
"X86TimingSimpleCPU",
"X86DerivO3CPU",
),
constants.arm_tag: (
"AtomicSimpleCPU",
"TimingSimpleCPU",
"MinorCPU",
"DerivO3CPU",
"ArmAtomicSimpleCPU",
"ArmTimingSimpleCPU",
"ArmMinorCPU",
"ArmDerivO3CPU",
),
constants.riscv_tag: (
"AtomicSimpleCPU",
"TimingSimpleCPU",
"MinorCPU",
"DerivO3CPU",
"RiscvAtomicSimpleCPU",
"RiscvTimingSimpleCPU",
"RiscvMinorCPU",
"RiscvDerivO3CPU",
),
}
@@ -92,6 +92,6 @@ for isa in valid_isas:
verifiers=verifiers,
config=joinpath(getcwd(), "run.py"),
config_args=["--cpu={}".format(cpu), binary],
valid_isas=(isa,),
valid_isas=(constants.all_compiled_tag,),
fixtures=[workload_binary],
)

View File

@@ -34,7 +34,7 @@ gem5_verify_config(
verifiers=verifiers,
config=joinpath(config.base_dir, "configs", "dram", "low_power_sweep.py"),
config_args=["-p", "close_adaptive", "-r", "2"],
valid_isas=(constants.null_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
)
@@ -44,6 +44,6 @@ gem5_verify_config(
verifiers=verifiers,
config=joinpath(config.base_dir, "configs", "dram", "low_power_sweep.py"),
config_args=["-p", "open_adaptive", "-r", "2"],
valid_isas=(constants.null_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
)

View File

@@ -134,7 +134,7 @@ for name in arm_fs_quick_tests:
verifiers=verifier_list(name), # Add basic stat verifiers
config=joinpath(filepath, "run.py"),
config_args=args,
valid_isas=(constants.arm_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.quick_tag,
valid_hosts=valid_hosts,
fixtures=(arm_fs_binaries,),
@@ -152,7 +152,7 @@ for name in arm_fs_long_tests:
verifiers=verifier_list(name), # TODO: Add basic stat verifiers
config=joinpath(filepath, "run.py"),
config_args=args,
valid_isas=(constants.arm_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.long_tag,
fixtures=(arm_fs_binaries,),
uses_kvm=name in arm_fs_kvm_tests,

View File

@@ -41,6 +41,6 @@ gem5_verify_config(
config.base_dir, "tests", "gem5", "configs", "download_check.py"
),
config_args=["--download-directory", resource_path],
valid_isas=(constants.null_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.very_long_tag,
)

View File

@@ -45,7 +45,7 @@ gem5_verify_config(
config.base_dir, "configs", "example", "gem5_library", "arm-hello.py"
),
config_args=[],
valid_isas=(constants.arm_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.quick_tag,
)
@@ -63,7 +63,7 @@ gem5_verify_config(
"riscv-hello-save-checkpoint.py",
),
config_args=[],
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.quick_tag,
)
@@ -81,7 +81,7 @@ gem5_verify_config(
"riscv-hello-restore-checkpoint.py",
),
config_args=[],
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.quick_tag,
)
@@ -101,7 +101,7 @@ if os.access("/dev/kvm", mode=os.R_OK | os.W_OK):
"x86-ubuntu-run-with-kvm.py",
),
config_args=[],
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=(constants.host_x86_64_tag,),
length=constants.long_tag,
uses_kvm=True,
@@ -119,7 +119,7 @@ gem5_verify_config(
"x86-ubuntu-run.py",
),
config_args=[],
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.long_tag,
)
@@ -139,7 +139,7 @@ if os.access("/dev/kvm", mode=os.R_OK | os.W_OK):
"x86-parsec-benchmarks.py",
),
config_args=["--benchmark", "blackscholes", "--size", "simsmall"],
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
protocol="MESI_Two_Level",
valid_hosts=(constants.host_x86_64_tag,),
length=constants.long_tag,
@@ -168,7 +168,7 @@ if os.access("/dev/kvm", mode=os.R_OK | os.W_OK):
"--ticks",
"5000000000",
],
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
protocol="MESI_Two_Level",
valid_hosts=(constants.host_x86_64_tag,),
length=constants.long_tag,
@@ -190,7 +190,7 @@ if os.access("/dev/kvm", mode=os.R_OK | os.W_OK):
"x86-gapbs-benchmarks.py",
),
config_args=["--benchmark", "bfs", "--synthetic", "1", "--size", "1"],
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
protocol="MESI_Two_Level",
valid_hosts=(constants.host_x86_64_tag,),
length=constants.long_tag,
@@ -209,7 +209,7 @@ gem5_verify_config(
"riscv-ubuntu-run.py",
),
config_args=[],
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.long_tag,
)
@@ -222,7 +222,7 @@ gem5_verify_config(
config.base_dir, "configs", "example", "lupv", "run_lupv.py"
),
config_args=["timing", "1", "--max-ticks", "1000000000"],
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.long_tag,
)
@@ -239,7 +239,7 @@ gem5_verify_config(
"arm-ubuntu-boot-exit.py",
),
config_args=[],
valid_isas=(constants.arm_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.long_tag,
)

View File

@@ -53,7 +53,7 @@ gem5_verify_config(
config_args=["--test-length", "50000", "--num-dmas", "0"],
valid_isas=(constants.vega_x86_tag,),
valid_hosts=constants.supported_hosts,
length=constants.quick_tag,
length=constants.long_tag,
)

View File

@@ -62,6 +62,6 @@ for isa in test_progs:
resource_path,
"sparc",
],
valid_isas=(isa,),
valid_isas=(constants.all_compiled_tag,),
length=constants.long_tag,
)

View File

@@ -53,13 +53,13 @@ def test_kvm_fork_run(cpu: str, num_cpus: int, mem_system: str, length: str):
if mem_system == "mesi_two_level":
protocol_to_use = None
isa_to_use = constants.x86_tag
isa_to_use = constants.all_compiled_tag
elif mem_system == "mi_example":
protocol_to_use = "MI_example"
isa_to_use = constants.x86_tag
else:
protocol_to_use = None
isa_to_use = constants.vega_x86_tag
isa_to_use = constants.all_compiled_tag
gem5_verify_config(
name=name,

View File

@@ -53,13 +53,13 @@ def test_kvm_switch(cpu: str, num_cpus: int, mem_system: str, length: str):
if mem_system == "mesi_two_level":
protocol_to_use = None
isa_to_use = constants.x86_tag
isa_to_use = constants.all_compiled_tag
elif mem_system == "mi_example":
protocol_to_use = "MI_example"
isa_to_use = constants.x86_tag
else:
protocol_to_use = None
isa_to_use = constants.vega_x86_tag
isa_to_use = constants.all_compiled_tag
gem5_verify_config(
name=name,

View File

@@ -35,11 +35,25 @@ gem5_verify_config(
config=joinpath(config_path, "simple.py"),
config_args=[],
length=constants.quick_tag,
valid_isas=(
constants.vega_x86_tag,
constants.riscv_tag,
constants.arm_tag,
),
valid_isas=(constants.all_compiled_tag,),
)
gem5_verify_config(
name="simple_test_arm",
verifiers=(),
config=joinpath(config_path, "simple-arm.py"),
config_args=[],
length=constants.quick_tag,
valid_isas=(constants.all_compiled_tag,),
)
gem5_verify_config(
name="simple_test_riscv",
verifiers=(),
config=joinpath(config_path, "simple-riscv.py"),
config_args=[],
length=constants.quick_tag,
valid_isas=(constants.all_compiled_tag,),
)
# The "quick" two level tests.
@@ -49,9 +63,5 @@ gem5_verify_config(
config=joinpath(config_path, "two_level.py"),
config_args=[],
length=constants.quick_tag,
valid_isas=(
constants.vega_x86_tag,
constants.riscv_tag,
constants.arm_tag,
),
valid_isas=(constants.all_compiled_tag,),
)

View File

@@ -35,7 +35,7 @@ gem5_verify_config(
verifiers=(get_verifier("simple"),),
config=joinpath(config_path, "run_simple.py"),
config_args=[],
valid_isas=(constants.null_tag,),
valid_isas=(constants.all_compiled_tag,),
)
gem5_verify_config(
@@ -43,7 +43,7 @@ gem5_verify_config(
verifiers=(get_verifier("hello_goodbye"),),
config=joinpath(config_path, "hello_goodbye.py"),
config_args=[],
valid_isas=(constants.null_tag,),
valid_isas=(constants.all_compiled_tag,),
)
gem5_verify_config(
@@ -52,7 +52,7 @@ gem5_verify_config(
config=joinpath(config_path, "simple_memobj.py"),
config_args=[],
# note: by default the above script uses x86
valid_isas=(constants.vega_x86_tag,),
valid_isas=(constants.all_compiled_tag,),
)
gem5_verify_config(
@@ -61,7 +61,7 @@ gem5_verify_config(
config=joinpath(config_path, "simple_cache.py"),
config_args=[],
# note: by default the above script uses x86
valid_isas=(constants.vega_x86_tag,),
valid_isas=(constants.all_compiled_tag,),
)
# Note: for simple memobj and simple cache I want to use the traffic generator

View File

@@ -40,9 +40,9 @@ gem5_verify_config(
config_args=[],
protocol="MSI",
# Currently only x86 has the threads test
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
# dynamically linked
valid_hosts=constants.target_host[constants.x86_tag],
valid_hosts=(constants.x86_tag,),
length=constants.long_tag,
)
@@ -53,6 +53,6 @@ gem5_verify_config(
config_args=[],
protocol="MSI",
# Currently only x86 has the threads test
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.long_tag,
)

View File

@@ -66,5 +66,5 @@ gem5_verify_config(
resource_path,
"x86",
],
valid_isas=(constants.vega_x86_tag,),
valid_isas=(constants.all_compiled_tag,),
)

View File

@@ -50,11 +50,11 @@ root.system.mem_ranges = [AddrRange("512MB")]
if args.cpu_type == "DerivO3CPU":
root.system.cpu = [
DerivO3CPU(cpu_id=i) for i in range(int(args.num_cores))
SparcDerivO3CPU(cpu_id=i) for i in range(int(args.num_cores))
]
elif args.cpu_type == "TimingSimpleCPU":
root.system.cpu = [
TimingSimpleCPU(cpu_id=i) for i in range(int(args.num_cores))
SparcTimingSimpleCPU(cpu_id=i) for i in range(int(args.num_cores))
]
else:
print("ERROR: CPU Type '" + args.cpu_type + "' not supported")

View File

@@ -37,6 +37,7 @@ gem5_verify_config(
config=joinpath(getcwd(), "simple-run.py"),
config_args=[],
valid_isas=(constants.null_tag,),
length=constants.long_tag,
)
simple_mem_params = [
@@ -57,6 +58,7 @@ for name, params in simple_mem_params:
config=joinpath(getcwd(), "simple-run.py"),
config_args=args,
valid_isas=(constants.null_tag,),
length=constants.long_tag,
) # This tests for validity as well as performance
gem5_verify_config(
@@ -65,6 +67,7 @@ gem5_verify_config(
config=joinpath(getcwd(), "memtest-run.py"),
config_args=[],
valid_isas=(constants.null_tag,),
length=constants.long_tag,
)
null_tests = [
@@ -132,4 +135,5 @@ for test_name, basename_noext, args in null_tests:
config_args=args,
valid_isas=(constants.null_tag,),
valid_hosts=constants.supported_hosts,
length=constants.long_tag,
)

View File

@@ -36,15 +36,6 @@ isa_map = {
"riscv": constants.riscv_tag,
}
length_map = {
"sparc": constants.long_tag,
"mips": constants.long_tag,
"null": constants.quick_tag,
"arm": constants.quick_tag,
"x86": constants.quick_tag,
"power": constants.long_tag,
"riscv": constants.long_tag,
}
for isa in isa_map.keys():
gem5_verify_config(
@@ -57,7 +48,7 @@ for isa in isa_map.keys():
config_args=["-e", isa],
valid_isas=(isa_map[isa],),
valid_hosts=constants.supported_hosts,
length=length_map[isa],
length=constants.long_tag,
)
gem5_verify_config(
@@ -74,7 +65,7 @@ for isa in isa_map.keys():
config_args=["-e", isa],
valid_isas=(isa_map[isa],),
valid_hosts=constants.supported_hosts,
length=length_map[isa],
length=constants.long_tag,
)
if isa != "null":
@@ -94,5 +85,5 @@ for isa in isa_map.keys():
config_args=["-e", isa],
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=constants.long_tag,
length=constants.quick_tag,
)

View File

@@ -75,7 +75,7 @@ def test_parsec(
"--resource-directory",
resource_path,
],
valid_isas=(constants.x86_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=(constants.host_x86_64_tag,),
length=length,
uses_kvm=True,

View File

@@ -86,7 +86,7 @@ def test_boot(
"riscv_boot_exit_run.py",
),
config_args=config_args,
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=length,
)
@@ -133,7 +133,7 @@ test_boot(
test_boot(
cpu="minor",
num_cpus=1,
cache_type="mi_example",
cache_type="mesi_two_level",
memory_class="SingleChannelDDR3_2133",
length=constants.quick_tag,
to_tick=10000000000,
@@ -142,7 +142,7 @@ test_boot(
test_boot(
cpu="minor",
num_cpus=8,
cache_type="mi_example",
cache_type="mesi_two_level",
memory_class="SingleChannelDDR3_2133",
length=constants.quick_tag,
to_tick=10000000000,
@@ -152,7 +152,7 @@ test_boot(
test_boot(
cpu="timing",
num_cpus=1,
cache_type="mi_example",
cache_type="mesi_two_level",
memory_class="SingleChannelDDR4_2400",
length=constants.quick_tag,
to_tick=10000000000,
@@ -179,7 +179,7 @@ test_boot(
test_boot(
cpu="timing",
num_cpus=4,
cache_type="mi_example",
cache_type="mesi_two_level",
memory_class="DualChannelDDR4_2400",
length=constants.quick_tag,
to_tick=10000000000,
@@ -202,7 +202,7 @@ test_boot(
# test_boot(
# cpu="timing",
# num_cpus=1,
# cache_type="mi_example",
# cache_type="mesi_two_level",
# memory_class="SingleChannelLPDDR3_1600",
# length=constants.long_tag,
# )
@@ -210,7 +210,7 @@ test_boot(
# test_boot(
# cpu="timing",
# num_cpus=4,
# cache_type="mi_example",
# cache_type="mesi_two_level",
# memory_class="DualChannelDDR4_2400",
# length=constants.long_tag,
# )
@@ -226,7 +226,7 @@ test_boot(
# test_boot(
# cpu="o3",
# num_cpus=8,
# cache_type="mi_example",
# cache_type="mesi_two_level",
# memory_class="HBM2Stack",
# length=constants.long_tag,
# )

View File

@@ -79,17 +79,6 @@ cpu_types = {
constants.sparc_tag: ("timing", "atomic"),
}
# We only want to test x86, arm, and riscv on quick. Mips and sparc will be
# left for long.
os_length = {
constants.vega_x86_tag: constants.quick_tag,
constants.arm_tag: constants.quick_tag,
constants.mips_tag: constants.long_tag,
constants.riscv_tag: constants.quick_tag,
constants.sparc_tag: constants.long_tag,
}
if config.bin_path:
resource_path = config.bin_path
else:
@@ -117,9 +106,9 @@ def verify_config(isa, binary, cpu, hosts, verifier, input):
isa_str_map[isa],
]
+ input,
valid_isas=(isa,),
valid_isas=(constants.all_compiled_tag,),
valid_hosts=hosts,
length=os_length[isa],
length=constants.quick_tag,
)

View File

@@ -51,6 +51,6 @@ gem5_verify_config(
"--resource-directory",
resource_path,
],
valid_isas=(constants.vega_x86_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.quick_tag,
)

View File

@@ -94,5 +94,5 @@ if have_hdf5():
"arm",
],
gem5_args=["--stats-file=h5://stats.h5"],
valid_isas=(constants.arm_tag,),
valid_isas=(constants.all_compiled_tag,),
)

View File

@@ -40,7 +40,7 @@ gem5_verify_config(
config.base_dir, "tests", "gem5", "configs", "simple_binary_run.py"
),
config_args=["x86-hello64-static", "timing", "x86", "-b"],
valid_isas=(constants.vega_x86_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.quick_tag,
)
@@ -52,7 +52,7 @@ gem5_verify_config(
config.base_dir, "tests", "gem5", "configs", "simple_binary_run.py"
),
config_args=["riscv-hello", "atomic", "riscv", "-b"],
valid_isas=(constants.riscv_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.quick_tag,
)
@@ -64,6 +64,6 @@ gem5_verify_config(
config.base_dir, "tests", "gem5", "configs", "simple_binary_run.py"
),
config_args=["arm-hello64-static", "o3", "arm", "-b"],
valid_isas=(constants.arm_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.quick_tag,
)

View File

@@ -39,9 +39,9 @@ isa_map = {
length_map = {
"sparc": constants.long_tag,
"mips": constants.long_tag,
"null": constants.quick_tag,
"arm": constants.quick_tag,
"x86": constants.quick_tag,
"null": constants.long_tag,
"arm": constants.long_tag,
"x86": constants.long_tag,
"power": constants.long_tag,
"riscv": constants.long_tag,
}

View File

@@ -42,18 +42,6 @@ def test_memory(
memory: str,
*args,
) -> None:
protocol_map = {
"NoCache": None,
"PrivateL1": None,
"PrivateL1PrivateL2": None,
"MESITwoLevel": "MESI_Two_Level",
}
tag_map = {
"NoCache": constants.quick_tag,
"PrivateL1": constants.quick_tag,
"PrivateL1PrivateL2": constants.quick_tag,
"MESITwoLevel": constants.long_tag,
}
name = (
"test-memory-"
@@ -75,10 +63,9 @@ def test_memory(
),
config_args=[generator, generator_cores, cache, module, memory]
+ list(args),
valid_isas=(constants.null_tag,),
protocol=protocol_map[cache],
valid_isas=(constants.all_compiled_tag,),
valid_hosts=constants.supported_hosts,
length=tag_map[cache],
length=constants.quick_tag,
)

View File

@@ -64,13 +64,13 @@ def test_boot(
if mem_system == "mesi_two_level":
protocol_to_use = None
isa_to_use = constants.x86_tag
isa_to_use = constants.all_compiled_tag
elif mem_system == "mi_example":
protocol_to_use = "MI_example"
isa_to_use = constants.x86_tag
else:
protocol_to_use = None
isa_to_use = constants.vega_x86_tag
isa_to_use = constants.all_compiled_tag
gem5_verify_config(
name=name,

View File

@@ -43,6 +43,6 @@ gem5_verify_config(
config=os.path.join(os.getcwd(), os.pardir, "run_pyunit.py"),
verifiers=(),
config_args=[],
valid_isas=(constants.null_tag,),
valid_isas=(constants.all_compiled_tag,),
length=constants.quick_tag,
)