set_max_delay -from pos_latch -to neg_latch (eagle 20250808)

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-08-12 18:08:01 -07:00
parent d31e3b06e2
commit 0cd16e504a
3 changed files with 21 additions and 1 deletions

View File

@ -375,6 +375,8 @@ public:
virtual const TimingRole *checkRole(const StaState *sta) const;
virtual Required requiredTime(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;
virtual int exceptPathCmp(const PathEnd *path_end,
const StaState *sta) const;

View File

@ -93,7 +93,7 @@ Latches::latchRequired(const Path *data_path,
CycleAccting *acct = sdc_->cycleAccting(data_clk_edge,
enable_clk_edge);
// 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.
Arrival enable_arrival = max_delay
+ tgt_clk_time

View File

@ -1193,6 +1193,24 @@ PathEndLatchCheck::checkRole(const StaState *sta) const
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
PathEndLatchCheck::requiredTime(const StaState *sta) const
{