mirror of https://codeberg.org/topola/topola.git
tests: move common code to new common module
This commit is contained in:
parent
a02bf1541e
commit
e574043c2f
|
|
@ -183,7 +183,7 @@ impl<R: RulesTrait> Board<R> {
|
|||
self.net_to_netname.get(&net)
|
||||
}
|
||||
|
||||
pub fn band_between_pins(&self, pinname1: &String, pinname2: &String) -> Option<BandIndex> {
|
||||
pub fn band_between_pins(&self, pinname1: &str, pinname2: &str) -> Option<BandIndex> {
|
||||
if let Some(band) = self
|
||||
.pinname_pair_to_band
|
||||
.get(&(pinname1.to_string(), pinname2.to_string()))
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ use topola::{
|
|||
triangulation::GetTrianvertexIndex,
|
||||
};
|
||||
|
||||
mod common;
|
||||
|
||||
#[test]
|
||||
fn test() {
|
||||
let design = DsnDesign::load_from_file(
|
||||
|
|
@ -26,65 +28,5 @@ fn test() {
|
|||
|
||||
let (mut autorouter, ..) = invoker.destruct();
|
||||
|
||||
for ratline in autorouter.ratsnest().graph().edge_indices() {
|
||||
// Accessing endpoints may create new dots because apex construction is lazy, so we access
|
||||
// tem all before starting unionfind, as it requires a constant index bound.
|
||||
let _ = autorouter.ratline_endpoints(ratline);
|
||||
}
|
||||
|
||||
let mut unionfind = UnionFind::new(
|
||||
autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.geometry()
|
||||
.graph()
|
||||
.node_bound(),
|
||||
);
|
||||
|
||||
for primitive in autorouter.board().layout().drawing().primitive_nodes() {
|
||||
dbg!(primitive);
|
||||
for joined in autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.geometry()
|
||||
.joineds(primitive)
|
||||
{
|
||||
dbg!(joined);
|
||||
unionfind.union(primitive.node_index(), joined.node_index());
|
||||
}
|
||||
}
|
||||
|
||||
for ratline in autorouter.ratsnest().graph().edge_indices() {
|
||||
let (source_dot, target_dot) = autorouter.ratline_endpoints(ratline);
|
||||
let source_net = autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.primitive(source_dot)
|
||||
.maybe_net();
|
||||
let target_net = autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.primitive(target_dot)
|
||||
.maybe_net();
|
||||
|
||||
assert_eq!(source_net, target_net);
|
||||
let net = source_net.unwrap();
|
||||
|
||||
if let Some(netname) = autorouter.board().netname(net) {
|
||||
dbg!(netname);
|
||||
|
||||
// We don't route GND.
|
||||
if netname != "GND" {
|
||||
dbg!(source_dot, target_dot);
|
||||
assert_eq!(
|
||||
unionfind.find(source_dot.node_index()),
|
||||
unionfind.find(target_dot.node_index())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ use topola::{
|
|||
triangulation::GetTrianvertexIndex,
|
||||
};
|
||||
|
||||
mod common;
|
||||
|
||||
#[test]
|
||||
fn test() {
|
||||
let design = DsnDesign::load_from_file(
|
||||
|
|
@ -30,103 +32,6 @@ fn test() {
|
|||
|
||||
let (mut autorouter, ..) = invoker.destruct();
|
||||
|
||||
for ratline in autorouter.ratsnest().graph().edge_indices() {
|
||||
// Accessing endpoints may create new dots because apex construction is lazy, so we access
|
||||
// tem all before starting unionfind, as it requires a constant index bound.
|
||||
let _ = autorouter.ratline_endpoints(ratline);
|
||||
}
|
||||
|
||||
let mut unionfind = UnionFind::new(
|
||||
autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.geometry()
|
||||
.graph()
|
||||
.node_bound(),
|
||||
);
|
||||
|
||||
for primitive in autorouter.board().layout().drawing().primitive_nodes() {
|
||||
dbg!(primitive);
|
||||
for joined in autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.geometry()
|
||||
.joineds(primitive)
|
||||
{
|
||||
dbg!(joined);
|
||||
unionfind.union(primitive.node_index(), joined.node_index());
|
||||
}
|
||||
}
|
||||
|
||||
for ratline in autorouter.ratsnest().graph().edge_indices() {
|
||||
let (source_dot, target_dot) = autorouter.ratline_endpoints(ratline);
|
||||
|
||||
let source_layer = autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.primitive(source_dot)
|
||||
.layer();
|
||||
let target_layer = autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.primitive(target_dot)
|
||||
.layer();
|
||||
|
||||
let Some(source_layername) = autorouter.board().layername(source_layer) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let Some(target_layername) = autorouter.board().layername(target_layer) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
if source_layername != "F.Cu" || target_layername != "F.Cu" {
|
||||
continue;
|
||||
}
|
||||
|
||||
let source_net = autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.primitive(source_dot)
|
||||
.maybe_net();
|
||||
let target_net = autorouter
|
||||
.board()
|
||||
.layout()
|
||||
.drawing()
|
||||
.primitive(target_dot)
|
||||
.maybe_net();
|
||||
|
||||
assert_eq!(source_net, target_net);
|
||||
let net = source_net.unwrap();
|
||||
|
||||
if let Some(netname) = autorouter.board().netname(net) {
|
||||
dbg!(netname);
|
||||
dbg!(source_dot, target_dot);
|
||||
assert_eq!(
|
||||
unionfind.find(source_dot.node_index()),
|
||||
unionfind.find(target_dot.node_index())
|
||||
);
|
||||
}
|
||||
|
||||
let source_pinname = autorouter
|
||||
.board()
|
||||
.node_pinname(NodeIndex::Primitive(source_dot.into()))
|
||||
.unwrap();
|
||||
let target_pinname = autorouter
|
||||
.board()
|
||||
.node_pinname(NodeIndex::Primitive(target_dot.into()))
|
||||
.unwrap();
|
||||
dbg!(source_pinname, target_pinname);
|
||||
|
||||
let band = autorouter
|
||||
.board()
|
||||
.band_between_pins(source_pinname, target_pinname)
|
||||
.unwrap();
|
||||
dbg!(autorouter.board().layout().band_length(band));
|
||||
}
|
||||
common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu");
|
||||
common::assert_band_length(autorouter.board(), "J2-2", "D4-2", 15511.0, 0.5);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue