diff --git a/graph/Graph.cc b/graph/Graph.cc index ae98a281..b6665999 100644 --- a/graph/Graph.cc +++ b/graph/Graph.cc @@ -79,14 +79,10 @@ Graph::makeGraph() void Graph::makeVerticesAndEdges() { - int vertex_count; - int edge_count; - int arc_count; - vertexAndEdgeCounts(vertex_count, edge_count, arc_count); vertices_ = new VertexTable; edges_ = new EdgeTable; makeSlewTables(ap_count_); - makeArcDelayTables(arc_count, ap_count_); + makeArcDelayTables(ap_count_); LeafInstanceIterator *leaf_iter = network_->leafInstanceIterator(); while (leaf_iter->hasNext()) { @@ -98,72 +94,6 @@ Graph::makeVerticesAndEdges() makePinVertices(network_->topInstance()); } -void -Graph::vertexAndEdgeCounts(// Return values. - int &vertex_count, - int &edge_count, - int &arc_count) -{ - vertex_count = edge_count = arc_count = 0; - PinSet visited_drvrs; - LeafInstanceIterator *leaf_iter = network_->leafInstanceIterator(); - while (leaf_iter->hasNext()) { - const Instance *inst = leaf_iter->next(); - vertexAndEdgeCounts(inst, visited_drvrs, - vertex_count, edge_count, arc_count); - } - delete leaf_iter; - vertexAndEdgeCounts(network_->topInstance(), visited_drvrs, - vertex_count, edge_count, arc_count); -} - -void -Graph::vertexAndEdgeCounts(const Instance *inst, - PinSet &visited_drvrs, - // Return values. - int &vertex_count, - int &edge_count, - int &arc_count) -{ - LibertyCell *cell = network_->libertyCell(inst); - InstancePinIterator *pin_iter = network_->pinIterator(inst); - while (pin_iter->hasNext()) { - Pin *pin = pin_iter->next(); - PortDirection *dir = network_->direction(pin); - if (!dir->isPowerGround()) { - if (dir->isBidirect()) - vertex_count += 2; - else - vertex_count++; - if (cell) { - LibertyPort *port = network_->libertyPort(pin); - LibertyCellTimingArcSetIterator set_iter(cell, port, nullptr); - while (set_iter.hasNext()) { - TimingArcSet *arc_set = set_iter.next(); - LibertyPort *to_port = arc_set->to(); - if (network_->findPin(inst, to_port) - && filterEdge(arc_set)) { - if (dir->isBidirect()) { - // Internal path from bidirect output back into the instance. - edge_count += 2; - arc_count += arc_set->arcCount() * 2; - } - else { - edge_count++; - arc_count += arc_set->arcCount(); - } - } - } - } - // Count wire edges from driver pins. - if (network_->isDriver(pin)) - drvrPinEdgeCounts(pin, visited_drvrs, - edge_count, arc_count); - } - } - delete pin_iter; -} - class FindNetDrvrLoadCounts : public PinVisitor { public: @@ -217,27 +147,6 @@ FindNetDrvrLoadCounts::operator()(Pin *pin) load_count_++; } -void -Graph::drvrPinEdgeCounts(Pin *drvr_pin, - PinSet &visited_drvrs, - // Return values. - int &edge_count, - int &arc_count) -{ - if (!visited_drvrs.findKey(drvr_pin)) { - int drvr_count = 0; - int bidirect_count = 0; - int load_count = 0; - FindNetDrvrLoadCounts visitor(drvr_pin, visited_drvrs, drvr_count, - bidirect_count, load_count, network_); - network_->visitConnectedPins(drvr_pin, visitor); - int net_edge_count = drvr_count * load_count - + (bidirect_count * (load_count - 1)); - edge_count += net_edge_count; - arc_count += net_edge_count * TimingArcSet::wireArcCount(); - } -} - void Graph::makePinVertices(const Instance *inst) { @@ -727,8 +636,7 @@ Graph::deleteEdge(Edge *edge) } void -Graph::makeArcDelayTables(int arc_count, - DcalcAPIndex ap_count) +Graph::makeArcDelayTables(DcalcAPIndex ap_count) { if (have_arc_delays_) { arc_delays_.resize(ap_count); @@ -736,10 +644,6 @@ Graph::makeArcDelayTables(int arc_count, DelayTable *table = new DelayTable(); arc_delays_[i] = table; } - - // Leave some room for edits. - int annot_size = arc_count * 1.2; - arc_delay_annotated_.resize(annot_size * ap_count); } } @@ -892,7 +796,7 @@ Graph::setDelayCount(DcalcAPIndex ap_count) removeWidthCheckAnnotations(); removePeriodCheckAnnotations(); makeSlewTables(ap_count); - makeArcDelayTables(arc_count_, ap_count); + makeArcDelayTables(ap_count); ap_count_ = ap_count; removeDelays(); } diff --git a/graph/Graph.hh b/graph/Graph.hh index 4479e3d1..6f2ec6e4 100644 --- a/graph/Graph.hh +++ b/graph/Graph.hh @@ -195,21 +195,6 @@ public: protected: void makeVerticesAndEdges(); - void vertexAndEdgeCounts(// Return values. - int &vertex_count, - int &edge_count, - int &arc_count); - virtual void vertexAndEdgeCounts(const Instance *inst, - PinSet &visited_drvrs, - // Return values. - int &vertex_count, - int &edge_count, - int &arc_count); - virtual void drvrPinEdgeCounts(Pin *pin, - PinSet &visited_drvrs, - // Return values. - int &edge_count, - int &arc_count); Vertex *makeVertex(Pin *pin, bool is_bidirect_drvr, bool is_reg_clk); @@ -228,8 +213,7 @@ protected: void makeSlewTables(DcalcAPIndex count); void deleteSlewTables(); void makeVertexSlews(Vertex *vertex); - void makeArcDelayTables(int arc_count, - DcalcAPIndex ap_count); + void makeArcDelayTables(DcalcAPIndex ap_count); void deleteArcDelayTables(); void deleteInEdge(Vertex *vertex, Edge *edge);