separate array tables for arrivals and requireds
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
2e89d12078
commit
d25f6878a2
|
|
@ -540,8 +540,8 @@ Graph::makeRequireds(Vertex *vertex,
|
|||
Required *requireds;
|
||||
ArrivalId id;
|
||||
{
|
||||
UniqueLock lock(arrivals_lock_);
|
||||
arrivals_.make(count, requireds, id);
|
||||
UniqueLock lock(requireds_lock_);
|
||||
requireds_.make(count, requireds, id);
|
||||
}
|
||||
vertex->setRequireds(id);
|
||||
return requireds;
|
||||
|
|
@ -550,14 +550,14 @@ Graph::makeRequireds(Vertex *vertex,
|
|||
Required *
|
||||
Graph::requireds(Vertex *vertex)
|
||||
{
|
||||
return arrivals_.pointer(vertex->requireds());
|
||||
return requireds_.pointer(vertex->requireds());
|
||||
}
|
||||
|
||||
void
|
||||
Graph::deleteRequireds(Vertex *vertex,
|
||||
uint32_t count)
|
||||
{
|
||||
arrivals_.destroy(vertex->requireds(), count);
|
||||
requireds_.destroy(vertex->requireds(), count);
|
||||
vertex->setRequireds(arrival_null);
|
||||
}
|
||||
|
||||
|
|
@ -565,6 +565,7 @@ void
|
|||
Graph::clearArrivals()
|
||||
{
|
||||
arrivals_.clear();
|
||||
requireds_.clear();
|
||||
}
|
||||
|
||||
PathVertexRep *
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ typedef ArrayTable<Delay> DelayTable;
|
|||
typedef ObjectTable<Vertex> VertexTable;
|
||||
typedef ObjectTable<Edge> EdgeTable;
|
||||
typedef ArrayTable<Arrival> ArrivalsTable;
|
||||
typedef ArrayTable<Required> RequiredsTable;
|
||||
typedef ArrayTable<PathVertexRep> PrevPathsTable;
|
||||
typedef Map<const Pin*, Vertex*> PinVertexMap;
|
||||
typedef Iterator<Edge*> VertexEdgeIterator;
|
||||
|
|
@ -110,6 +111,7 @@ public:
|
|||
uint32_t count);
|
||||
void clearArrivals();
|
||||
size_t arrivalCount() const { return arrivals_.size(); }
|
||||
size_t requiredCount() const { return requireds_.size(); }
|
||||
PathVertexRep *makePrevPaths(Vertex *vertex,
|
||||
uint32_t count);
|
||||
PathVertexRep *prevPaths(Vertex *vertex) const;
|
||||
|
|
@ -244,6 +246,8 @@ protected:
|
|||
int arc_count_;
|
||||
ArrivalsTable arrivals_;
|
||||
std::mutex arrivals_lock_;
|
||||
RequiredsTable requireds_;
|
||||
std::mutex requireds_lock_;
|
||||
PrevPathsTable prev_paths_;
|
||||
std::mutex prev_paths_lock_;
|
||||
Vector<bool> arc_delay_annotated_;
|
||||
|
|
|
|||
|
|
@ -1045,6 +1045,7 @@ public:
|
|||
TagGroupIndex tagGroupCount() const;
|
||||
int clkInfoCount() const;
|
||||
int arrivalCount() const;
|
||||
int requiredCount() const;
|
||||
int vertexArrivalCount(Vertex *vertex) const;
|
||||
Vertex *maxArrivalCountVertex() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -3356,6 +3356,19 @@ Sta::arrivalCount() const
|
|||
return count;
|
||||
}
|
||||
|
||||
int
|
||||
Sta::requiredCount() const
|
||||
{
|
||||
int count = 0;
|
||||
VertexIterator vertex_iter(graph_);
|
||||
while (vertex_iter.hasNext()) {
|
||||
Vertex *vertex = vertex_iter.next();
|
||||
if (vertex->hasRequireds())
|
||||
count += vertexArrivalCount(vertex);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
TagIndex
|
||||
Sta::tagCount() const
|
||||
{
|
||||
|
|
|
|||
12
tcl/StaTcl.i
12
tcl/StaTcl.i
|
|
@ -5301,12 +5301,24 @@ arrival_count()
|
|||
return Sta::sta()->arrivalCount();
|
||||
}
|
||||
|
||||
int
|
||||
required_count()
|
||||
{
|
||||
return Sta::sta()->requiredCount();
|
||||
}
|
||||
|
||||
int
|
||||
graph_arrival_count()
|
||||
{
|
||||
return Sta::sta()->graph()->arrivalCount();
|
||||
}
|
||||
|
||||
int
|
||||
graph_required_count()
|
||||
{
|
||||
return Sta::sta()->graph()->requiredCount();
|
||||
}
|
||||
|
||||
void
|
||||
delete_all_memory()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue