updating
This commit is contained in:
58
scripts/ultra_simple.py
Normal file
58
scripts/ultra_simple.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Ultra-simple gem5 configuration for SmartEdgeAI
|
||||||
|
import argparse, m5
|
||||||
|
from m5.objects import *
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
ap = argparse.ArgumentParser()
|
||||||
|
ap.add_argument("--cmd", required=True)
|
||||||
|
ap.add_argument("--mem", default="16GB")
|
||||||
|
ap.add_argument("--l2", default="1MB")
|
||||||
|
ap.add_argument("--dvfs", choices=["high","low"], default="high")
|
||||||
|
ap.add_argument("--drowsy", type=int, choices=[0,1], default=0)
|
||||||
|
ap.add_argument("--core", choices=["big","little","hybrid"], default="big")
|
||||||
|
ap.add_argument("--outdir", default="m5out")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
# Create system
|
||||||
|
system = System()
|
||||||
|
system.clk_domain = SrcClockDomain(clock="2GHz" if args.dvfs == "high" else "1GHz",
|
||||||
|
voltage_domain=VoltageDomain(voltage="1.0V" if args.dvfs == "high" else "0.8V"))
|
||||||
|
system.mem_mode = "timing"
|
||||||
|
system.mem_ranges = [AddrRange(args.mem)]
|
||||||
|
|
||||||
|
# Create CPU based on core type
|
||||||
|
if args.core == "big":
|
||||||
|
system.cpu = O3CPU()
|
||||||
|
elif args.core == "little":
|
||||||
|
system.cpu = TimingSimpleCPU()
|
||||||
|
else: # hybrid
|
||||||
|
system.cpu = O3CPU()
|
||||||
|
|
||||||
|
# Create memory bus
|
||||||
|
system.membus = SystemXBar()
|
||||||
|
|
||||||
|
# Connect CPU to memory bus directly (no caches for simplicity)
|
||||||
|
system.cpu.icache_port = system.membus.cpu_side_ports
|
||||||
|
system.cpu.dcache_port = system.membus.cpu_side_ports
|
||||||
|
|
||||||
|
# Create memory controller
|
||||||
|
system.mem_ctrl = SimpleMemory()
|
||||||
|
system.mem_ctrl.range = system.mem_ranges[0]
|
||||||
|
system.mem_ctrl.port = system.membus.mem_side_ports
|
||||||
|
|
||||||
|
# Connect system port
|
||||||
|
system.system_port = system.membus.cpu_side_ports
|
||||||
|
|
||||||
|
# Create workload using the simplest approach
|
||||||
|
system.cpu.workload = SEWorkload.init_compatible("hello")
|
||||||
|
system.cpu.workload.executable = args.cmd
|
||||||
|
system.cpu.createThreads()
|
||||||
|
|
||||||
|
# Create root and run simulation
|
||||||
|
root = Root(full_system=False, system=system)
|
||||||
|
m5.instantiate()
|
||||||
|
|
||||||
|
print("[SmartEdgeAI] Starting simulation...")
|
||||||
|
exit_event = m5.simulate()
|
||||||
|
print(f"[SmartEdgeAI] Exiting @ tick {m5.curTick()} because {exit_event.getCause()}")
|
||||||
Reference in New Issue
Block a user