def create_system(linux_kernel_path, disk_image_path, detailed_cpu_model): # create the system we are going to simulate system = MySystem( kernel=linux_kernel_path, disk=disk_image_path, num_cpus=1, # run the benchmark in a single thread no_kvm=False, TimingCPUModel=detailed_cpu_model) # For workitems to work correctly # This will cause the simulator to exit simulation when the first work # item is reached and when the first work item is finished. system.work_begin_exit_count = 1 system.work_end_exit_count = 1 # set up the root SimObject and start the simulation root = Root(full_system=True, system=system) if system.getHostParallel(): # Required for running kvm on multiple host cores. # Uses gem5's parallel event queue feature # Note: The simulator is quite picky about this number! root.sim_quantum = int(1e9) # 1 ms return root, system
from system import MySystem SimpleOpts.add_option("--script", default='', help="Script to execute in the simulated system") if __name__ == "__m5_main__": (opts, args) = SimpleOpts.parse_args() # create the system we are going to simulate system = MySystem(opts) # For workitems to work correctly # This will cause the simulator to exit simulation when the first work # item is reached and when the first work item is finished. system.work_begin_exit_count = 1 system.work_end_exit_count = 1 # Read in the script file passed in via an option. # This file gets read and executed by the simulated system after boot. # Note: The disk image needs to be configured to do this. system.readfile = opts.script # set up the root SimObject and start the simulation root = Root(full_system = True, system = system) if system.getHostParallel(): # Required for running kvm on multiple host cores. # Uses gem5's parallel event queue feature # Note: The simulator is quite picky about this number! root.sim_quantum = int(1e9) # 1 ms