Merge branch 'parallaxsw:master' into master
This commit is contained in:
commit
908daabfc9
|
|
@ -388,6 +388,7 @@ public:
|
||||||
Crpr &crpr_diff,
|
Crpr &crpr_diff,
|
||||||
Delay &max_borrow,
|
Delay &max_borrow,
|
||||||
bool &borrow_limit_exists) const;
|
bool &borrow_limit_exists) const;
|
||||||
|
virtual bool ignoreClkLatency(const StaState *sta) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
PathEndLatchCheck(Path *path,
|
PathEndLatchCheck(Path *path,
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,18 @@ public:
|
||||||
|
|
||||||
PathGroup *pathGroup(const PathEnd *path_end) const;
|
PathGroup *pathGroup(const PathEnd *path_end) const;
|
||||||
void deletePathGroups();
|
void deletePathGroups();
|
||||||
|
void makePathGroups(int group_count,
|
||||||
|
int endpoint_count,
|
||||||
|
bool unique_pins,
|
||||||
|
float min_slack,
|
||||||
|
float max_slack,
|
||||||
|
PathGroupNameSet *group_names,
|
||||||
|
bool setup,
|
||||||
|
bool hold,
|
||||||
|
bool recovery,
|
||||||
|
bool removal,
|
||||||
|
bool clk_gating_setup,
|
||||||
|
bool clk_gating_hold);
|
||||||
virtual ExceptionPath *exceptionTo(ExceptionPathType type,
|
virtual ExceptionPath *exceptionTo(ExceptionPathType type,
|
||||||
const Path *path,
|
const Path *path,
|
||||||
const Pin *pin,
|
const Pin *pin,
|
||||||
|
|
@ -511,18 +523,6 @@ protected:
|
||||||
void tnsDecr(Vertex *vertex,
|
void tnsDecr(Vertex *vertex,
|
||||||
PathAPIndex path_ap_index);
|
PathAPIndex path_ap_index);
|
||||||
void tnsNotifyBefore(Vertex *vertex);
|
void tnsNotifyBefore(Vertex *vertex);
|
||||||
PathGroups *makePathGroups(int group_count,
|
|
||||||
int endpoint_count,
|
|
||||||
bool unique_pins,
|
|
||||||
float min_slack,
|
|
||||||
float max_slack,
|
|
||||||
PathGroupNameSet *group_names,
|
|
||||||
bool setup,
|
|
||||||
bool hold,
|
|
||||||
bool recovery,
|
|
||||||
bool removal,
|
|
||||||
bool clk_gating_setup,
|
|
||||||
bool clk_gating_hold);
|
|
||||||
bool matchesFilterTo(Path *path,
|
bool matchesFilterTo(Path *path,
|
||||||
const ClockEdge *to_clk_edge) const;
|
const ClockEdge *to_clk_edge) const;
|
||||||
PathRef pathClkPathArrival1(const Path *path) const;
|
PathRef pathClkPathArrival1(const Path *path) const;
|
||||||
|
|
|
||||||
|
|
@ -4371,7 +4371,8 @@ Sdc::findMatchingExceptionsFirstThru(ExceptionPath *exception,
|
||||||
findMatchingExceptionsInsts(exception, thru->instances(),
|
findMatchingExceptionsInsts(exception, thru->instances(),
|
||||||
first_thru_inst_exceptions_,
|
first_thru_inst_exceptions_,
|
||||||
matches);
|
matches);
|
||||||
if (!first_thru_net_exceptions_.empty()) {
|
if (!first_thru_net_exceptions_.empty()
|
||||||
|
&& thru->nets()) {
|
||||||
for (const Net *net : *thru->nets()) {
|
for (const Net *net : *thru->nets()) {
|
||||||
// Potential matches includes exceptions that match net that are not
|
// Potential matches includes exceptions that match net that are not
|
||||||
// the first exception point.
|
// the first exception point.
|
||||||
|
|
|
||||||
|
|
@ -308,7 +308,7 @@ BfsIterator::remove(Vertex *vertex)
|
||||||
Level level = vertex->level();
|
Level level = vertex->level();
|
||||||
if (vertex->bfsInQueue(bfs_index_)
|
if (vertex->bfsInQueue(bfs_index_)
|
||||||
&& static_cast<Level>(queue_.size()) > level) {
|
&& static_cast<Level>(queue_.size()) > level) {
|
||||||
for (Vertex *v : queue_[level]) {
|
for (Vertex *&v : queue_[level]) {
|
||||||
if (v == vertex) {
|
if (v == vertex) {
|
||||||
v = nullptr;
|
v = nullptr;
|
||||||
vertex->setBfsInQueue(bfs_index_, false);
|
vertex->setBfsInQueue(bfs_index_, false);
|
||||||
|
|
|
||||||
|
|
@ -1269,6 +1269,12 @@ PathEndLatchCheck::exceptPathCmp(const PathEnd *path_end,
|
||||||
return cmp;
|
return cmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PathEndLatchCheck::ignoreClkLatency(const StaState *sta) const
|
||||||
|
{
|
||||||
|
return PathEnd::ignoreClkLatency(path_, path_delay_, sta);
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
PathEndOutputDelay::PathEndOutputDelay(OutputDelay *output_delay,
|
PathEndOutputDelay::PathEndOutputDelay(OutputDelay *output_delay,
|
||||||
|
|
|
||||||
|
|
@ -452,11 +452,11 @@ Search::findPathEnds(ExceptionFrom *from,
|
||||||
recovery = removal = false;
|
recovery = removal = false;
|
||||||
if (!sdc_->gatedClkChecksEnabled())
|
if (!sdc_->gatedClkChecksEnabled())
|
||||||
clk_gating_setup = clk_gating_hold = false;
|
clk_gating_setup = clk_gating_hold = false;
|
||||||
path_groups_ = makePathGroups(group_count, endpoint_count, unique_pins,
|
makePathGroups(group_count, endpoint_count, unique_pins,
|
||||||
slack_min, slack_max,
|
slack_min, slack_max,
|
||||||
group_names, setup, hold,
|
group_names, setup, hold,
|
||||||
recovery, removal,
|
recovery, removal,
|
||||||
clk_gating_setup, clk_gating_hold);
|
clk_gating_setup, clk_gating_hold);
|
||||||
ensureDownstreamClkPins();
|
ensureDownstreamClkPins();
|
||||||
PathEndSeq path_ends = path_groups_->makePathEnds(to, unconstrained_paths_,
|
PathEndSeq path_ends = path_groups_->makePathEnds(to, unconstrained_paths_,
|
||||||
corner, min_max,
|
corner, min_max,
|
||||||
|
|
@ -3973,7 +3973,7 @@ Search::wnsSlack(Vertex *vertex,
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
PathGroups *
|
void
|
||||||
Search::makePathGroups(int group_count,
|
Search::makePathGroups(int group_count,
|
||||||
int endpoint_count,
|
int endpoint_count,
|
||||||
bool unique_pins,
|
bool unique_pins,
|
||||||
|
|
@ -3987,14 +3987,14 @@ Search::makePathGroups(int group_count,
|
||||||
bool clk_gating_setup,
|
bool clk_gating_setup,
|
||||||
bool clk_gating_hold)
|
bool clk_gating_hold)
|
||||||
{
|
{
|
||||||
return new PathGroups(group_count, endpoint_count, unique_pins,
|
path_groups_ = new PathGroups(group_count, endpoint_count, unique_pins,
|
||||||
slack_min, slack_max,
|
slack_min, slack_max,
|
||||||
group_names,
|
group_names,
|
||||||
setup, hold,
|
setup, hold,
|
||||||
recovery, removal,
|
recovery, removal,
|
||||||
clk_gating_setup, clk_gating_hold,
|
clk_gating_setup, clk_gating_hold,
|
||||||
unconstrained_paths_,
|
unconstrained_paths_,
|
||||||
this);
|
this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue