no crpr for ideal clocks
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
02740e56af
commit
fb5d87bd23
|
|
@ -58,7 +58,7 @@ ClkInfo::ClkInfo(const ClockEdge *clk_edge,
|
|||
clk_edge_(clk_edge),
|
||||
clk_src_(clk_src),
|
||||
gen_clk_src_(gen_clk_src),
|
||||
crpr_clk_path_(crpr_clk_path),
|
||||
crpr_clk_path_(is_propagated ? crpr_clk_path : PathVertexPtr()),
|
||||
uncertainties_(uncertainties),
|
||||
insertion_(insertion),
|
||||
latency_(latency),
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ CheckCrpr::checkCrpr1(const Path *src_path,
|
|||
// For path from latches that are borrowing the enable path
|
||||
// is from the opposite min/max of the data.
|
||||
&& src_clk_min_max != tgt_clk_path->minMax(this)
|
||||
&& (src_clk_path != nullptr
|
||||
&& (src_clk_path
|
||||
|| src_clk->isGenerated())) {
|
||||
// Src path from input port clk path can only be from generated clk path.
|
||||
PathVertex port_clk_path;
|
||||
|
|
|
|||
|
|
@ -1144,6 +1144,8 @@ ArrivalVisitor::visit(Vertex *vertex)
|
|||
if (crpr_active_
|
||||
&& search_->crprPathPruningEnabled()
|
||||
&& !vertex->crprPathPruningDisabled()
|
||||
// No crpr for ideal clocks.
|
||||
&& tag_bldr_->hasPropagatedClk()
|
||||
&& !has_fanin_one_)
|
||||
pruneCrprArrivals();
|
||||
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ TagGroupBldr::TagGroupBldr(bool match_crpr_clk_pin,
|
|||
has_genclk_src_tag_(false),
|
||||
has_filter_tag_(false),
|
||||
has_loop_tag_(false),
|
||||
has_propagated_clk_(false),
|
||||
sta_(sta)
|
||||
{
|
||||
}
|
||||
|
|
@ -245,6 +246,8 @@ TagGroupBldr::setMatchArrival(Tag *tag,
|
|||
has_filter_tag_ = true;
|
||||
if (tag->isLoop())
|
||||
has_loop_tag_ = true;
|
||||
if (tag->clkInfo()->isPropagated())
|
||||
has_propagated_clk_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ public:
|
|||
bool hasGenClkSrcTag() const { return has_genclk_src_tag_; }
|
||||
bool hasFilterTag() const { return has_filter_tag_; }
|
||||
bool hasLoopTag() const { return has_loop_tag_; }
|
||||
bool hasPropagatedClk() const { return has_propagated_clk_; }
|
||||
void tagMatchArrival(Tag *tag,
|
||||
// Return values.
|
||||
Tag *&tag_match,
|
||||
|
|
@ -140,9 +141,10 @@ protected:
|
|||
ArrivalSeq arrivals_;
|
||||
PathPrevSeq prev_paths_;
|
||||
bool has_clk_tag_;
|
||||
bool has_genclk_src_tag_:1;
|
||||
bool has_genclk_src_tag_;
|
||||
bool has_filter_tag_;
|
||||
bool has_loop_tag_;
|
||||
bool has_propagated_clk_;
|
||||
const StaState *sta_;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue