Restore lost `Sta::arrival` variant

Signed-off-by: Martin Povišer <povik@cutebit.org>
This commit is contained in:
Martin Povišer 2026-01-21 15:59:25 +01:00
parent 0d34825700
commit f493ef0138
2 changed files with 30 additions and 0 deletions

View File

@ -1105,6 +1105,11 @@ public:
const RiseFallBoth *rf,
const SceneSeq &scenes,
const MinMax *min_max);
Arrival arrival(Vertex *vertex,
const RiseFall *rf,
const ClockEdge *clk_edge,
const SceneSeq &scenes,
const MinMax *min_max);
Required required(Vertex *vertex,
const RiseFallBoth *rf,

View File

@ -3075,6 +3075,31 @@ Sta::arrival(Vertex *vertex,
return arrival;
}
Arrival
Sta::arrival(Vertex *vertex,
const RiseFall *rf,
const ClockEdge *clk_edge,
const SceneSeq &scenes,
const MinMax *min_max)
{
searchPreamble();
search_->findArrivals(vertex->level());
const SceneSet scenes_set = Scene::sceneSet(scenes);
Arrival arrival = min_max->initValue();
VertexPathIterator path_iter(vertex, rf, min_max, this);
while (path_iter.hasNext()) {
Path *path = path_iter.next();
const Arrival &path_arrival = path->arrival();
const ClkInfo *clk_info = path->clkInfo(search_);
if (clk_info->clkEdge() == clk_edge
&& !clk_info->isGenClkSrcPath()
&& scenes_set.contains(path->scene(this))
&& delayGreater(path->arrival(), arrival, min_max, this))
arrival = path_arrival;
}
return arrival;
}
Required
Sta::required(Vertex *vertex,
const RiseFallBoth *rf,