nextpnr/rust/example_printnets/src/lib.rs

28 lines
985 B
Rust

use nextpnr::Context;
#[no_mangle]
pub extern "C" fn rust_example_printnets(ctx: &mut Context) {
println!("Nets in design:");
for (name, net) in &ctx.nets() {
let net = unsafe { &*net };
let driver = net.driver();
println!(" {}:", ctx.name_of(name).to_str().unwrap());
if let Some(driver) = driver {
let cell = driver.cell().map_or("(no cell)", |cell| {
ctx.name_of(cell.name()).to_str().unwrap()
});
let port = ctx.name_of(driver.port()).to_str().unwrap();
println!(" driver: {cell}.{port}");
} else {
println!(" driver: (no driver)");
}
println!(" sinks:");
for (user, port) in net.users() {
let user = unsafe { &*user };
let user = ctx.name_of(user.name()).to_str().unwrap();
let port = ctx.name_of(port).to_str().unwrap();
println!(" {user}.{port}");
}
}
}