Merge branch 'parallaxsw:master' into master

This commit is contained in:
Akash Levy 2024-08-09 09:28:31 -07:00 committed by GitHub
commit 908daabfc9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 36 additions and 28 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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.

View File

@ -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);

View File

@ -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,

View File

@ -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