get_fanin net seg fault resolves #263

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-06-26 10:47:41 -07:00
parent 624d3680b3
commit aa1e53738c
3 changed files with 21 additions and 4 deletions

View File

@ -563,6 +563,20 @@ net_load_pins(Net *net)
return pins;
}
PinSet
net_pins(Net *net)
{
Network *network = Sta::sta()->ensureLinked();
PinSet pins(network);
NetConnectedPinIterator *pin_iter = network->connectedPinIterator(net);
while (pin_iter->hasNext()) {
const Pin *pin = pin_iter->next();
pins.insert(pin);
}
delete pin_iter;
return pins;
}
const char *
pin_location(const Pin *pin)
{

View File

@ -4960,9 +4960,7 @@ Sta::findFaninPins(PinSeq *to,
ensureLevelized();
PinSet fanin(network_);
FaninSrchPred pred(thru_disabled, thru_constants, this);
PinSeq::Iterator to_iter(to);
while (to_iter.hasNext()) {
const Pin *pin = to_iter.next();
for (const Pin *pin : *to) {
if (network_->isHierarchical(pin)) {
EdgesThruHierPinIterator edge_iter(pin, network_, graph_);
while (edge_iter.hasNext()) {

View File

@ -47,7 +47,12 @@ proc get_fanin { args } {
}
parse_port_pin_net_arg $keys(-to) pins nets
foreach net $nets {
lappend pins [net_driver_pins $net]
set net_pins [net_pins $net]
if { $net_pins != {} } {
lappend pins $net_pins
} else {
sta_warn 541 "No load pins connected to net [get_full_name $net]."
}
}
set flat [info exists flags(-flat)]
set only_insts [info exists flags(-only_cells)]