Skip to content

Merge from upstream#64

Merged
akashlevy merged 1 commit into
mainfrom
merge1
Jul 21, 2026
Merged

Merge from upstream#64
akashlevy merged 1 commit into
mainfrom
merge1

Conversation

@akashlevy

Copy link
Copy Markdown

No description provided.

@greptile-apps

greptile-apps Bot commented Jul 21, 2026

Copy link
Copy Markdown

Greptile Summary

This PR merges upstream timing, property, and build changes. The main changes are:

  • Refactored incremental graph-delay propagation and traversal.
  • Added scene and mode properties, filters, and Tcl commands.
  • Updated graph mutation, cell replacement, and CRPR handling.
  • Consolidated Linux and macOS CI coverage.

Confidence Score: 4/5

Incremental timing invalidation and scene-property lifecycle handling need fixes before merging.

  • Load-slew-only updates can leave downstream timing arrivals stale.
  • Deleted scenes can leave property values that attach to newly allocated scenes.
  • The remaining graph, Tcl, and CI changes have no identified blocking issue.

dcalc/GraphDelayCalc.cc and include/sta/Property.hh

Important Files Changed

Filename Overview
dcalc/GraphDelayCalc.cc Refactors incremental propagation but can miss search invalidation for load-slew-only changes.
include/sta/Property.hh Adds mutable per-object properties keyed by raw object addresses without lifecycle cleanup.
search/Property.cc Implements scene and mode property registration, coercion, storage, and lookup.
graph/Graph.cc Corrects fanin traversal, initializes vertex outputs, and adds load and BFS state helpers.
search/Sta.cc Updates endpoint invalidation and cell-replacement handling for non-wire edges.
tcl/Sta.tcl Adds filtering and wildcard defaults for scene and mode queries.
.github/workflows/ci.yml Consolidates native Ubuntu, CentOS 7 container, and macOS build coverage.

Reviews (1): Last reviewed commit: "Merge from upstream" | Re-trigger Greptile

Comment thread dcalc/GraphDelayCalc.cc
Comment on lines +1187 to +1190
annotateLoadDelays(drvr_vertex, arc->toEdge()->asRiseFall(),
dcalc_result,
load_pin_index_map, delay_zero, true,
scene, min_max);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Load Slew Changes Skip Invalidation

When recalculation changes only a load slew, annotateLoadDelays() no longer contributes that change to delay_changed. The driver-level observer is therefore not notified, while the new local notification covers only wire-delay updates, so incremental timing can retain stale downstream arrivals.

Comment thread include/sta/Property.hh
Comment on lines +325 to +326
// User-defined property values.
std::map<PropertyKey, PropertyValue> prop_values_;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Deleted Scenes Retain Properties

Property values are stored under raw object addresses, but scene deletion has no matching cleanup for this map. If a later scene reuses a deleted scene's address, it inherits values that were never set on it, causing get_property and scene filters to return incorrect results.

@akashlevy
akashlevy merged commit deec2ea into main Jul 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant