mod hierarchy_reference_access;
mod l2n_reference_access;
mod layout_reference_access;
mod netlist_reference_access;
pub use hierarchy_reference_access::*;
pub use layout_reference_access::*;
pub use netlist_reference_access::*;
#[test]
fn test_chip_reference_access() {
use crate::chip::Chip;
use crate::prelude::*;
let mut chip = Chip::new();
let top = chip.create_cell("TOP".into());
chip.create_pin(&top, "A".into(), Direction::Input);
let sub = chip.create_cell("SUB".into());
chip.create_pin(&sub, "B".into(), Direction::Input);
let sub_inst1 = chip.create_cell_instance(&top, &sub, Some("inst1".into()));
let top_ref = chip.cell_ref(&top);
assert_eq!(&top_ref.id(), &top);
let sub_inst1_ref = chip.cell_instance_ref(&sub_inst1);
assert_eq!(&sub_inst1_ref.id(), &sub_inst1);
assert_eq!(sub_inst1_ref.parent().id(), top_ref.id());
assert_eq!(&sub_inst1_ref.template().id(), &sub);
assert_eq!(
top_ref.each_net().count(),
2,
"LOW and HIGH nets should be there."
);
assert_eq!(top_ref.each_pin().count(), 1);
assert_eq!(sub_inst1_ref.each_pin_instance().count(), 1);
}