replaceEquivCellBefore non-liberty port
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
fc3143609d
commit
c787060a9a
|
|
@ -4080,30 +4080,32 @@ Sta::replaceEquivCellBefore(Instance *inst,
|
||||||
while (pin_iter->hasNext()) {
|
while (pin_iter->hasNext()) {
|
||||||
Pin *pin = pin_iter->next();
|
Pin *pin = pin_iter->next();
|
||||||
LibertyPort *port = network_->libertyPort(pin);
|
LibertyPort *port = network_->libertyPort(pin);
|
||||||
if (port->direction()->isAnyInput()) {
|
if (port) {
|
||||||
Vertex *vertex = graph_->pinLoadVertex(pin);
|
if (port->direction()->isAnyInput()) {
|
||||||
replaceCellPinInvalidate(port, vertex, to_cell);
|
Vertex *vertex = graph_->pinLoadVertex(pin);
|
||||||
|
replaceCellPinInvalidate(port, vertex, to_cell);
|
||||||
|
|
||||||
// Replace the timing arc sets in the graph edges.
|
// Replace the timing arc sets in the graph edges.
|
||||||
VertexOutEdgeIterator edge_iter(vertex, graph_);
|
VertexOutEdgeIterator edge_iter(vertex, graph_);
|
||||||
while (edge_iter.hasNext()) {
|
while (edge_iter.hasNext()) {
|
||||||
Edge *edge = edge_iter.next();
|
Edge *edge = edge_iter.next();
|
||||||
Vertex *to_vertex = edge->to(graph_);
|
Vertex *to_vertex = edge->to(graph_);
|
||||||
if (network_->instance(to_vertex->pin()) == inst) {
|
if (network_->instance(to_vertex->pin()) == inst) {
|
||||||
TimingArcSet *from_set = edge->timingArcSet();
|
TimingArcSet *from_set = edge->timingArcSet();
|
||||||
// Find corresponding timing arc set.
|
// Find corresponding timing arc set.
|
||||||
TimingArcSet *to_set = to_cell->findTimingArcSet(from_set);
|
TimingArcSet *to_set = to_cell->findTimingArcSet(from_set);
|
||||||
if (to_set)
|
if (to_set)
|
||||||
edge->setTimingArcSet(to_set);
|
edge->setTimingArcSet(to_set);
|
||||||
else
|
else
|
||||||
report_->critical(264, "corresponding timing arc set not found in equiv cells");
|
report_->critical(264, "corresponding timing arc set not found in equiv cells");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Force delay calculation on output pins.
|
// Force delay calculation on output pins.
|
||||||
Vertex *vertex = graph_->pinDrvrVertex(pin);
|
Vertex *vertex = graph_->pinDrvrVertex(pin);
|
||||||
graph_delay_calc_->delayInvalid(vertex);
|
graph_delay_calc_->delayInvalid(vertex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete pin_iter;
|
delete pin_iter;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue