From 007e7f9c0fbc71c789d5a551012c2f6724e25e6b Mon Sep 17 00:00:00 2001 From: David Li Date: Sat, 16 Jan 2016 10:05:46 -0700 Subject: Stop game once score reached --- src/main.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index ce1f336..f4ef2cc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -138,12 +138,30 @@ fn main() { let mut simulator = simulator::Simulator::new( cores, memory_ref.clone(), steppable_caches, system); - // let cycles = 0x1000000; - let cycles = 0x50000; + let cycles = 0x1000000; + // let cycles = 0x50000; let start = time::precise_time_s(); - simulator.run_max(cycles); + match simulator.run_max(cycles) { + simulator::HaltReason::OutOfCycles => { + println!("Out of cycles, halting..."); + }, + simulator::HaltReason::SystemHalt => { + println!("Team has reached payload goal, halting..."); + }, + simulator::HaltReason::CoresHalted => { + println!("All cores have stopped, halting..."); + }, + } let end = time::precise_time_s(); + for (core_id, cycles_stalled, total_cycles) in simulator.report().iter().cloned() { + println!("Core {}: stalled {:08} of {:08} cycles ({:.2}%)", + core_id, + cycles_stalled, + total_cycles, + 100.0 * (cycles_stalled as f32) / (total_cycles as f32)); + } + println!("{} cycles in {:04} seconds ({} cycles/sec)", cycles, end - start, (cycles as f64) / (end - start)); let (p1, p2) = memory_ref.borrow().score(); -- cgit v1.2.3