no segmentation for path delays

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-08-10 21:45:54 -07:00
parent 8401a27857
commit de39ab34b8
1 changed files with 3 additions and 5 deletions

View File

@ -1103,7 +1103,7 @@ ArrivalVisitor::visit(Vertex *vertex)
search->seedInputSegmentArrival(pin, vertex, tag_bldr_); search->seedInputSegmentArrival(pin, vertex, tag_bldr_);
if (sdc->isPathDelayInternalStartpoint(pin)) if (sdc->isPathDelayInternalStartpoint(pin))
// set_min/max_delay -from internal pin. // set_min/max_delay -from internal pin.
search->makeUnclkedPaths(vertex, true, true, tag_bldr_); search->makeUnclkedPaths(vertex, false, true, tag_bldr_);
if (sdc->isLeafPinClock(pin)) if (sdc->isLeafPinClock(pin))
// set_min/max_delay -to internal pin also a clock src. Bizzaroland. // set_min/max_delay -to internal pin also a clock src. Bizzaroland.
// Re-seed the clock arrivals on top of the propagated paths. // Re-seed the clock arrivals on top of the propagated paths.
@ -1642,8 +1642,7 @@ Search::findInputDrvrVertices(VertexSet &vertices)
bool bool
Search::isSegmentStart(const Pin *pin) Search::isSegmentStart(const Pin *pin)
{ {
return (sdc_->isPathDelayInternalStartpoint(pin) return sdc_->isInputDelayInternal(pin)
|| sdc_->isInputDelayInternal(pin))
&& !sdc_->isLeafPinClock(pin); && !sdc_->isLeafPinClock(pin);
} }
@ -2078,8 +2077,7 @@ Search::pathPropagatedToClkSrc(const Pin *pin,
const Tag *tag = path->tag(this); const Tag *tag = path->tag(this);
if (!tag->isGenClkSrcPath() if (!tag->isGenClkSrcPath()
// Clock source can have input arrivals from unrelated clock. // Clock source can have input arrivals from unrelated clock.
&& tag->inputDelay() == nullptr && tag->inputDelay() == nullptr) {
&& sdc_->isPathDelayInternalEndpoint(pin)) {
ClockSet *clks = sdc_->findLeafPinClocks(pin); ClockSet *clks = sdc_->findLeafPinClocks(pin);
return clks return clks
&& !clks->hasKey(tag->clock()); && !clks->hasKey(tag->clock());