set_max_delay -from pos_latch -to neg_latch (eagle 20250808)
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
d31e3b06e2
commit
0cd16e504a
|
|
@ -375,6 +375,8 @@ public:
|
||||||
virtual const TimingRole *checkRole(const StaState *sta) const;
|
virtual const TimingRole *checkRole(const StaState *sta) const;
|
||||||
virtual Required requiredTime(const StaState *sta) const;
|
virtual Required requiredTime(const StaState *sta) const;
|
||||||
virtual Arrival borrow(const StaState *sta) const;
|
virtual Arrival borrow(const StaState *sta) const;
|
||||||
|
virtual float targetClkTime(const StaState *sta) const;
|
||||||
|
virtual float targetClkOffset(const StaState *sta) const;
|
||||||
Arrival targetClkWidth(const StaState *sta) const;
|
Arrival targetClkWidth(const StaState *sta) const;
|
||||||
virtual int exceptPathCmp(const PathEnd *path_end,
|
virtual int exceptPathCmp(const PathEnd *path_end,
|
||||||
const StaState *sta) const;
|
const StaState *sta) const;
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ Latches::latchRequired(const Path *data_path,
|
||||||
CycleAccting *acct = sdc_->cycleAccting(data_clk_edge,
|
CycleAccting *acct = sdc_->cycleAccting(data_clk_edge,
|
||||||
enable_clk_edge);
|
enable_clk_edge);
|
||||||
// checkTgtClkTime
|
// checkTgtClkTime
|
||||||
float tgt_clk_time = acct->requiredTime(check_role);
|
float tgt_clk_time = path_delay ? 0.0 : acct->requiredTime(check_role);
|
||||||
// checkTgtClkArrival broken down into components.
|
// checkTgtClkArrival broken down into components.
|
||||||
Arrival enable_arrival = max_delay
|
Arrival enable_arrival = max_delay
|
||||||
+ tgt_clk_time
|
+ tgt_clk_time
|
||||||
|
|
|
||||||
|
|
@ -1193,6 +1193,24 @@ PathEndLatchCheck::checkRole(const StaState *sta) const
|
||||||
return TimingRole::latchSetup();
|
return TimingRole::latchSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
PathEndLatchCheck::targetClkTime(const StaState *sta) const
|
||||||
|
{
|
||||||
|
if (path_delay_)
|
||||||
|
return 0.0;
|
||||||
|
else
|
||||||
|
return PathEndClkConstrained::targetClkTime(sta);
|
||||||
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
PathEndLatchCheck::targetClkOffset(const StaState *sta) const
|
||||||
|
{
|
||||||
|
if (path_delay_)
|
||||||
|
return -targetClkEdge(sta)->time();
|
||||||
|
else
|
||||||
|
return PathEndClkConstrained::targetClkOffset(sta);
|
||||||
|
}
|
||||||
|
|
||||||
Required
|
Required
|
||||||
PathEndLatchCheck::requiredTime(const StaState *sta) const
|
PathEndLatchCheck::requiredTime(const StaState *sta) const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue