Skip to content

Sta update latest 0427#355

Merged
maliberty merged 16 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:sta_update_latest_0427
Apr 29, 2026
Merged

Sta update latest 0427#355
maliberty merged 16 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:sta_update_latest_0427

Conversation

@openroad-ci
Copy link
Copy Markdown
Collaborator

Merge latest upstream OSTA, update test infrastructure

jjcherry56 and others added 16 commits April 20, 2026 15:02
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
…427)

Signed-off-by: Drew Lewis <cannada@google.com>
…f fallback (#426)

Signed-off-by: Drew Lewis <cannada@google.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 3 committers have signed the CLA.

✅ dsengupta0628
❌ jjcherry56
❌ calewis
You have signed the CLA already but the status is still pending? Let us recheck it.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces several refactorings and improvements to the OpenSTA codebase, including transitioning clock uncertainties from pointers to member objects, updating .clang-tidy configurations, and centralizing delay reporting within the Search class. It also adds a validation check for POCV/LVF models and refines SPEF lexing for identifiers. The review feedback points out critical compilation issues in Sta.hh due to missing includes and type aliases, identifies a recurring typo in the checkLibraryPocv function name, and suggests a logic improvement to avoid false-positive warnings when no libraries are loaded.

Comment thread include/sta/Sta.hh
#pragma once

#include <functional>
#include <map>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The header Sta.hh still uses PathDelayFunc (which is a std::function) in its member function declarations (e.g., line 1531), so the <functional> include is required. Additionally, DelaysWrtClks is now used in this header, so the <map> include is necessary.

#include <functional>
#include <map>

Comment thread include/sta/Sta.hh
using ParasiticsNameMap = std::map<std::string, Parasitics*, std::less<>>;
// Path::slack/arrival/required function.
using PathDelayFunc = std::function<Delay (const Path *path)>;
using GraphLoopSeq = std::vector<GraphLoop*>;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The PathDelayFunc and DelaysWrtClks type aliases are used in this header but are no longer defined here. They should be restored or the header that defines them must be included to ensure Sta.hh remains self-contained and compilable.

// Path::slack/arrival/required function.
using PathDelayFunc = std::function<Delay (const Path *path)>;
using DelaysWrtClks = std::map<const ClockEdge*, RiseFallMinMaxDelay>;
using GraphLoopSeq = std::vector<GraphLoop*>;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This header is in src/sta/, an upstream submodule, and we don't modify upstream files unless necessary

Comment thread include/sta/Sta.hh
Mode *mode,
Parasitics *parasitics);
void deleteScenes();
void checkLibrarayPocv();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Typo in function name: checkLibrarayPocv should be checkLibraryPocv.

  void checkLibraryPocv();

Comment thread search/Sta.cc
delay_ops_ = new DelayOpsScalar();
break;
case PocvMode::normal:
checkLibrarayPocv();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Typo in function call: checkLibrarayPocv should be checkLibraryPocv.

      checkLibraryPocv();

Comment thread search/Sta.cc
delay_ops_ = new DelayOpsNormal();
break;
case PocvMode::skew_normal:
checkLibrarayPocv();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Typo in function call: checkLibrarayPocv should be checkLibraryPocv.

      checkLibraryPocv();

Comment thread search/Sta.cc
Comment on lines +2299 to +2323
Sta::checkLibrarayPocv()
{
LibertyLibraryIterator *lib_iter = network_->libertyLibraryIterator();
while (lib_iter->hasNext()) {
LibertyLibrary *lib = lib_iter->next();
LibertyCellIterator cell_iter(lib);
while (cell_iter.hasNext()) {
LibertyCell *cell = cell_iter.next();
for (const TimingArcSet *arc_set : cell->timingArcSets()) {
for (const TimingArc *arc : arc_set->arcs()) {
GateTableModel *gate_model = arc->gateTableModel();
if (gate_model) {
const TableModels *models = gate_model->delayModels();
if (models->sigma(EarlyLate::early()) != nullptr) {
delete lib_iter;
return;
}
}
}
}
}
}
delete lib_iter;
report_->warn(1578, "No liberty POCV/LVF models found.");
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

There is a typo in the function name (checkLibrarayPocv -> checkLibraryPocv). Additionally, the warning logic should be updated to avoid reporting 'No liberty POCV/LVF models found' when no libraries have been loaded yet, as this leads to false positives if the mode is set early in a script.

void
Sta::checkLibraryPocv()
{
  bool any_lib = false;
  LibertyLibraryIterator *lib_iter = network_->libertyLibraryIterator();
  while (lib_iter->hasNext()) {
    any_lib = true;
    LibertyLibrary *lib = lib_iter->next();
    LibertyCellIterator cell_iter(lib);
    while (cell_iter.hasNext()) {
      LibertyCell *cell = cell_iter.next();
      for (const TimingArcSet *arc_set : cell->timingArcSets()) {
        for (const TimingArc *arc : arc_set->arcs()) {
          GateTableModel *gate_model = arc->gateTableModel();
          if (gate_model) {
            const TableModels *models = gate_model->delayModels();
            if (models->sigma(EarlyLate::early()) != nullptr) {
              delete lib_iter;
              return;
            }
          }
        }
      }
    }
  }
  delete lib_iter;
  if (any_lib)
    report_->warn(1578, "No liberty POCV/LVF models found.");
}

@maliberty maliberty merged commit 35e778a into The-OpenROAD-Project:master Apr 29, 2026
6 of 7 checks passed
@openroad-ci openroad-ci deleted the sta_update_latest_0427 branch April 29, 2026 20:42
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.

6 participants