set_max_delay -ignore_clock_latency w/clk data, prop clk
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
cb38bad061
commit
8bf1ad1afb
|
|
@ -1812,6 +1812,9 @@ PathEndPathDelay::findSrcClkArrival(const StaState *sta)
|
|||
Search *search = sta->search();
|
||||
src_clk_arrival_ = search->pathClkPathArrival(&path_);
|
||||
}
|
||||
else
|
||||
src_clk_arrival_ = 0.0;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1941,11 +1944,10 @@ Required
|
|||
PathEndPathDelay::requiredTime(const StaState *sta) const
|
||||
{
|
||||
float delay = path_delay_->delay();
|
||||
if (ignoreClkLatency(sta)) {
|
||||
if (minMax(sta) == MinMax::max())
|
||||
return src_clk_arrival_ + delay - margin(sta);
|
||||
else
|
||||
return src_clk_arrival_ + delay + margin(sta);
|
||||
if (path_delay_->ignoreClkLatency()) {
|
||||
float src_offset = path_.isClock(sta) ? path_.clkEdge(sta)->time() : src_clk_arrival_;
|
||||
return src_offset + delay
|
||||
+ ((minMax(sta) == MinMax::max()) ? -margin(sta) : margin(sta));
|
||||
}
|
||||
else {
|
||||
Arrival tgt_clk_arrival = targetClkArrival(sta);
|
||||
|
|
|
|||
|
|
@ -713,7 +713,7 @@ ReportPath::reportFull(const PathEndPathDelay *end)
|
|||
const Path *tgt_clk_path = end->targetClkPath();
|
||||
if (reportClkPath()
|
||||
&& isPropagated(tgt_clk_path, tgt_clk))
|
||||
reportTgtClk(end, delay);
|
||||
reportTgtClk(end, delay, 0.0, true);
|
||||
else {
|
||||
Arrival tgt_clk_delay = end->targetClkDelay(this);
|
||||
Arrival tgt_clk_arrival = delay + tgt_clk_delay;
|
||||
|
|
@ -2130,6 +2130,15 @@ ReportPath::reportTgtClk(const PathEnd *end,
|
|||
bool is_prop)
|
||||
{
|
||||
float src_offset = end->sourceClkOffset(this);
|
||||
reportTgtClk(end, prev_time, src_offset, is_prop);
|
||||
}
|
||||
|
||||
void
|
||||
ReportPath::reportTgtClk(const PathEnd *end,
|
||||
float prev_time,
|
||||
float src_offset,
|
||||
bool is_prop)
|
||||
{
|
||||
const ClockEdge *clk_edge = end->targetClkEdge(this);
|
||||
Clock *clk = clk_edge->clock();
|
||||
const RiseFall *clk_rf = clk_edge->transition();
|
||||
|
|
|
|||
|
|
@ -213,6 +213,10 @@ protected:
|
|||
void reportTgtClk(const PathEnd *end,
|
||||
float prev_time,
|
||||
bool is_prop);
|
||||
void reportTgtClk(const PathEnd *end,
|
||||
float prev_time,
|
||||
float src_offset,
|
||||
bool is_prop);
|
||||
bool pathFromGenPropClk(const Path *clk_path,
|
||||
const EarlyLate *early_late);
|
||||
bool isGenPropClk(const Clock *clk,
|
||||
|
|
|
|||
Loading…
Reference in New Issue