diff --git a/common/route/awooter/rust/src/lib.rs b/common/route/awooter/rust/src/lib.rs index 982533c6..a7d32c29 100644 --- a/common/route/awooter/rust/src/lib.rs +++ b/common/route/awooter/rust/src/lib.rs @@ -169,20 +169,25 @@ fn route(ctx: &mut npnr::Context) -> bool { ); let time = Instant::now() - start; - log_info!("Partitioning took {:.2}s\n", time.as_secs_f32()); + let start = Instant::now(); + let mut router = route::Router::new(Coord::new(0, 0), Coord::new(x_part, y_part)); - log_info!("Routing northeast arcs"); + log_info!("Routing northeast arcs\n"); router.route(ctx, &nets, &ne); - log_info!("Routing southeast arcs"); + log_info!("Routing southeast arcs\n"); router.route(ctx, &nets, &se); - log_info!("Routing southwest arcs"); + log_info!("Routing southwest arcs\n"); router.route(ctx, &nets, &sw); - log_info!("Routing northwest arcs"); + log_info!("Routing northwest arcs\n"); router.route(ctx, &nets, &nw); - log_info!("Routing miscellaneous arcs"); + log_info!("Routing miscellaneous arcs\n"); router.route(ctx, &nets, &misc); + + let time = Instant::now() - start; + log_info!("Routing took {:.2}s\n", time.as_secs_f32()); + //let mut router = route::Router::new(Coord::new(0, 0), Coord::new(x_part, y_part)); /*log_info!("=== level 2 NE:\n"); diff --git a/common/route/awooter/rust/src/npnr.rs b/common/route/awooter/rust/src/npnr.rs index 9bf88711..8f1d2104 100644 --- a/common/route/awooter/rust/src/npnr.rs +++ b/common/route/awooter/rust/src/npnr.rs @@ -1,5 +1,5 @@ use core::slice; -use std::{collections::HashMap, ffi::CStr, marker::PhantomData}; +use std::{collections::HashMap, ffi::CStr, marker::PhantomData, sync::Mutex}; use libc::c_char; @@ -283,6 +283,8 @@ impl Context { } pub fn name_of_wire(&self, wire: WireId) -> &CStr { + static MUTEX: Mutex<()> = Mutex::new(()); + let lock = MUTEX.lock().unwrap(); unsafe { CStr::from_ptr(npnr_context_name_of_wire(self, wire)) } } diff --git a/common/route/awooter/rust/src/partition.rs b/common/route/awooter/rust/src/partition.rs index 903a5a51..077803a9 100644 --- a/common/route/awooter/rust/src/partition.rs +++ b/common/route/awooter/rust/src/partition.rs @@ -360,9 +360,9 @@ fn partition>( let is_special_case = |arc: &Arc| { let src_wire = arc.get_source_wire(); - let dst_wire = arc.get_sink_wire(); + //let dst_wire = arc.get_sink_wire(); let src_name = ctx.name_of_wire(arc.get_source_wire()).to_str().unwrap(); - let dst_name = ctx.name_of_wire(arc.get_sink_wire()).to_str().unwrap(); + //let dst_name = ctx.name_of_wire(arc.get_sink_wire()).to_str().unwrap(); if src_name.contains("FCO_SLICE") { return true;