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