Skip to content

merge OpenSTA 3.0 upstream/master into silimate/main#56

Open
donn wants to merge 191 commits into
Silimate:mainfrom
donn:merge_upstream
Open

merge OpenSTA 3.0 upstream/master into silimate/main#56
donn wants to merge 191 commits into
Silimate:mainfrom
donn:merge_upstream

Conversation

@donn
Copy link
Copy Markdown

@donn donn commented May 21, 2026

Most of this was just rote merge work, but some of it was more complex. Specifically, the LibertyReader was pretty much completely rewritten. That required a backport of Silimate's additions to all of:

  • Clock gating
  • Generated clocks
  • Power information parsing

…to the new system. This really should be reviewed by someone with more familiarity with these.

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>
…arallaxsw#370

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: 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>
jjcherry56 and others added 22 commits April 16, 2026 18:42
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>
…f fallback (parallaxsw#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>
@donn donn marked this pull request as ready for review May 22, 2026 17:19
Comment thread search/Search.cc
deleteTagsPrev();
arrivals_exist_ = true;
stats.report("Find clk arrivals");
findAllArrivals(false, true);
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This logic appears to have been replaced with findAllArrivals, but I'm unsure if I successfully propagated all the changes here.

Comment thread search/Search.cc
@@ -1229,7 +1167,8 @@ Search::computeClkGates()
VertexIterator vertex_iter(graph_);
while (vertex_iter.hasNext()) {
Vertex *vertex = vertex_iter.next();
if (isClock(vertex)) {
TagGroup *tg = tagGroup(vertex);
if (tg && tg->hasClkTag()) {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

isClock was removed.

Comment thread liberty/LibertyReader.cc
libWarn(1199, line, "%s %s bus width mismatch.", type, "preset");
preset_expr->deleteSubexprs();
preset_expr = nullptr;
auto &gen_clk_groups = cell_group->findSubgroups("generated_clock");
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Generated clock parsing with the new API

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Looks good on the parsing side

Comment thread liberty/LibertyReader.cc
}

void
LibertyReader::visitFanoutLength(LibertyAttr *attr)
LibertyReader::makeTimingArcs(LibertyCell *cell,
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This is another function I would appreciate a review on.

@stanminlee
Copy link
Copy Markdown

stanminlee commented May 22, 2026

Hi @donn, I'll review the stuff that I implemented, which is around the generated clocks and clock gating.

@donn
Copy link
Copy Markdown
Author

donn commented May 22, 2026

@stanminlee Would be immensely appreciated.

Comment thread liberty/LibertyReader.cc
libWarn(1199, line, "%s %s bus width mismatch.", type, "preset");
preset_expr->deleteSubexprs();
preset_expr = nullptr;
auto &gen_clk_groups = cell_group->findSubgroups("generated_clock");
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Looks good on the parsing side

Comment thread search/Sta.cc
Sta::clockGatedRegisters()
{
InstanceSeq Sta::clockGatedRegisters(const Mode *mode) {
Network* network = this->network();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Why is this added? it is not used anywhere

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I am referring to network here in this comment

Comment thread search/Sta.cc
InstanceSeq
Sta::clockGatedRegisters()
{
InstanceSeq Sta::clockGatedRegisters(const Mode *mode) {
Copy link
Copy Markdown

@stanminlee stanminlee May 22, 2026

Choose a reason for hiding this comment

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

Mode is also not used anywhere, why was it added?

Comment thread search/ReportPath.cc
while (end_iter.hasNext()) {
auto end = end_iter.next();
std::set<Delay> found_delays;
while (end_iter != end_iter_end) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I have been running some tests, and there seems to be a bug here.

In the JSON output for the results, it sometimes prints a stray comma at the end of the checks like so:

[
{ ... }
{
last entry
},
]

which is invalid for JSON.

I think it has something to do with the end_iter == end_iter_end check, it may have some edge case with path endpoint deduplication.

I can look at this myself, but just letting you know since you may have more context around this.

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.

9 participants