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