search save/delete enumbed paths
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
14893099ed
commit
c9d78679a6
|
|
@ -69,7 +69,7 @@ public:
|
|||
};
|
||||
|
||||
virtual PathEnd *copy() const = 0;
|
||||
virtual ~PathEnd();
|
||||
virtual ~PathEnd() {}
|
||||
void deletePath();
|
||||
Path *path() { return path_; }
|
||||
const Path *path() const { return path_; }
|
||||
|
|
|
|||
|
|
@ -419,6 +419,7 @@ public:
|
|||
void deletePaths(Vertex *vertex);
|
||||
void deleteTagGroup(TagGroup *group);
|
||||
bool postponeLatchOutputs() const { return postpone_latch_outputs_; }
|
||||
void saveEnumPath(Path *path);
|
||||
|
||||
protected:
|
||||
void init(StaState *sta);
|
||||
|
|
@ -674,6 +675,7 @@ protected:
|
|||
bool postpone_latch_outputs_;
|
||||
PathGroups *path_groups_;
|
||||
VisitPathEnds *visit_path_ends_;
|
||||
std::vector<Path*> enum_paths_;
|
||||
GatedClk *gated_clk_;
|
||||
CheckCrpr *check_crpr_;
|
||||
Genclks *genclks_;
|
||||
|
|
|
|||
|
|
@ -54,12 +54,6 @@ PathEnd::PathEnd(Path *path) :
|
|||
{
|
||||
}
|
||||
|
||||
PathEnd::~PathEnd()
|
||||
{
|
||||
if (path_->isEnum())
|
||||
delete path_;
|
||||
}
|
||||
|
||||
void
|
||||
PathEnd::setPath(Path *path)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -97,7 +97,11 @@ DiversionGreater::operator()(Diversion *div1,
|
|||
static void
|
||||
deleteDiversionPathEnd(Diversion *div)
|
||||
{
|
||||
delete div->pathEnd();
|
||||
PathEnd *div_end = div->pathEnd();
|
||||
Path *div_path = div_end->path();
|
||||
if (div_path->isEnum())
|
||||
delete div_path;
|
||||
delete div_end;
|
||||
delete div;
|
||||
}
|
||||
|
||||
|
|
@ -197,6 +201,7 @@ PathEnum::findNext()
|
|||
makeDiversions(path_end, div->divPath());
|
||||
// Caller owns the path end now, so don't delete it.
|
||||
next_ = path_end;
|
||||
//search_->saveEnumPath(path_end->path());
|
||||
delete div;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -409,11 +409,22 @@ Search::deletePaths()
|
|||
Vertex *vertex = vertex_iter.next();
|
||||
deletePaths(vertex);
|
||||
}
|
||||
|
||||
for (Path *path : enum_paths_)
|
||||
delete path;
|
||||
enum_paths_.clear();
|
||||
|
||||
filtered_arrivals_->clear();
|
||||
arrivals_exist_ = false;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Search::saveEnumPath(Path *path)
|
||||
{
|
||||
enum_paths_.push_back(path);
|
||||
}
|
||||
|
||||
// Delete with incremental tns/wns update.
|
||||
void
|
||||
Search::deletePathsIncr(Vertex *vertex)
|
||||
|
|
|
|||
Loading…
Reference in New Issue