aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorDavid Li <li.davidm96@gmail.com>2016-01-16 10:05:46 -0700
committerDavid Li <li.davidm96@gmail.com>2016-01-16 10:05:46 -0700
commit007e7f9c0fbc71c789d5a551012c2f6724e25e6b (patch)
treeb52de4f301a50e17527955a07824683686fd64bd /src/main.rs
parenta2947b0108ac0196078d2365adfdb7090643284d (diff)
Stop game once score reached
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs24
1 files changed, 21 insertions, 3 deletions
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();