Exemple #1
0
    def _instantiate(self) -> None:
        """
        This method will instantiate the board and carry out necessary
        boilerplate code before the instantiation such as setting up root and
        setting the sim_quantum (if running in KVM mode).
        """

        if not self._instantiated:
            root = Root(full_system=self._full_system, board=self._board)

            # We take a copy of the Root in case it's required elsewhere
            # (for example, in `get_stats()`).
            self._root = root

            if CPUTypes.KVM in [
                    core.get_type()
                    for core in self._board.get_processor().get_cores()
            ]:
                m5.ticks.fixGlobalFrequency()
                root.sim_quantum = m5.ticks.fromSeconds(0.001)

            m5.instantiate()
            self._instantiated = True
# Authors: Gabe Black

from __future__ import print_function

import argparse
import m5
import os
import re
import sys

from m5.objects import SystemC_Kernel, Root

# pylint:disable=unused-variable

kernel = SystemC_Kernel()
root = Root(full_system=True, systemc_kernel=kernel)

parser = argparse.ArgumentParser()
parser.add_argument('--working-dir')

args = parser.parse_args()
if args.working_dir:
    os.chdir(args.working_dir)

kernel.sc_main()

m5.instantiate(None)

cause = m5.simulate(m5.MaxTick).getCause()

result = kernel.sc_main_result()
Exemple #3
0
    # `~/.cache/gem5` directory if not already present.
    # SPEC CPU2006 benchamarks were tested with kernel version 4.19.83 and
    # 5.4.49
    kernel=Resource("x86-linux-kernel-4.19.83", ),
    # The location of the x86 SPEC CPU 2017 image
    disk_image=CustomDiskImageResource(
        args.image,
        disk_root_partition=args.partition,
    ),
    readfile_contents=command,
)

# We need this for long running processes.
m5.disableAllListeners()

root = Root(full_system=True, system=board)

# sim_quantum must be set when KVM cores are used.

root.sim_quantum = int(1e9)

m5.instantiate()

# We maintain the wall clock time.

globalStart = time.time()

print("Running the simulation")
print("Using KVM cpu")

start_tick = m5.curTick()
Exemple #4
0
processor = SimpleProcessor(cpu_type=CPUTypes.ATOMIC, num_cores=1)

motherboard = SimpleBoard(
    clk_freq="3GHz",
    processor=processor,
    memory=memory,
    cache_hierarchy=cache_hierarchy,
)

motherboard.connect_things()

# Set the workload
thispath = os.path.dirname(os.path.realpath(__file__))
binary = os.path.join(thispath,
                      "../../../tests/test-progs/hello/bin/x86/linux/hello")
motherboard.set_workload(binary)

# Run the simulation.
print("Running with ISA: {}.".format(get_runtime_isa().name))
print("Running with protocol: {}.".format(
    get_runtime_coherence_protocol().name))
print()

root = Root(full_system=False, system=motherboard)

m5.instantiate()

exit_event = m5.simulate()
print("Exiting @ tick {} because {}.".format(m5.curTick(),
                                             exit_event.getCause()))
Exemple #5
0
parser = argparse.ArgumentParser()
parser.add_argument('cpu', choices=valid_cpus.keys())
parser.add_argument('memory_model', choices=valid_memories.keys())
parser.add_argument('binary', type=str, help="Path to binary to run")
#parser.add_argument('binary_input', type = str, help = "Inputs to the binary")
args = parser.parse_args()


class MySystem(BaseTestSystem):
    _CPUModel = valid_cpus[args.cpu]
    _MemoryModel = valid_memories[args.memory_model]


system = MySystem()
system.setTestBinary(args.binary)
root = Root(full_system=False, system=system)
m5.instantiate()

exit_event = m5.simulate()

if exit_event.getCause() != 'exiting with last active thread context':
    print("Benchmark failed with bad exit cause.")
    print(exit_event.getCause())
    exit(1)
if exit_event.getCode() != 0:
    print("Benchmark failed with bad exit code.")
    print("Exit code {}".format(exit_event.getCode()))
    exit(1)

print("{} ms".format(m5.curTick()))
Exemple #6
0
boot_img_url = (
    "http://dist.gem5.org/dist/v21-0/images/x86/ubuntu-18-04/boot-exit.img.gz")
boot_img_path_gz = os.path.join(thispath, "boot-exit.img.gz")
boot_img_path = os.path.join(thispath, "boot-exit.img")

if not os.path.exists(boot_img_path):
    subprocess.run(["wget", "-P", thispath, boot_img_url])
    with gzip.open(boot_img_path_gz, "rb") as f:
        with open(boot_img_path, "wb") as o:
            shutil.copyfileobj(f, o)

# Set the Full System workload.
motherboard.set_workload(kernel=kernel_path,
                         disk_image=boot_img_path,
                         command="m5 exit \n")

# Begin running of the simulation. This will exit once the Linux system boot
# is complete.
print("Running with ISA: " + get_runtime_isa().name)
print("Running with protocol: " + get_runtime_coherence_protocol().name)
print()

root = Root(full_system=True, system=motherboard)

m5.instantiate()

print("Beginning simulation!")
exit_event = m5.simulate()
print("Exiting @ tick {} because {}.".format(m5.curTick(),
                                             exit_event.getCause()))