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