merge OpenSTA 3.0 upstream/master into silimate/main#56
Conversation
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>
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#427) Signed-off-by: Drew Lewis <cannada@google.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>
| deleteTagsPrev(); | ||
| arrivals_exist_ = true; | ||
| stats.report("Find clk arrivals"); | ||
| findAllArrivals(false, true); |
There was a problem hiding this comment.
This logic appears to have been replaced with findAllArrivals, but I'm unsure if I successfully propagated all the changes here.
| @@ -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()) { | |||
| 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"); |
There was a problem hiding this comment.
Generated clock parsing with the new API
| } | ||
|
|
||
| void | ||
| LibertyReader::visitFanoutLength(LibertyAttr *attr) | ||
| LibertyReader::makeTimingArcs(LibertyCell *cell, |
There was a problem hiding this comment.
This is another function I would appreciate a review on.
|
Hi @donn, I'll review the stuff that I implemented, which is around the generated clocks and clock gating. |
|
@stanminlee Would be immensely appreciated. |
| 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"); |
| Sta::clockGatedRegisters() | ||
| { | ||
| InstanceSeq Sta::clockGatedRegisters(const Mode *mode) { | ||
| Network* network = this->network(); |
There was a problem hiding this comment.
Why is this added? it is not used anywhere
There was a problem hiding this comment.
I am referring to network here in this comment
| InstanceSeq | ||
| Sta::clockGatedRegisters() | ||
| { | ||
| InstanceSeq Sta::clockGatedRegisters(const Mode *mode) { |
There was a problem hiding this comment.
Mode is also not used anywhere, why was it added?
| while (end_iter.hasNext()) { | ||
| auto end = end_iter.next(); | ||
| std::set<Delay> found_delays; | ||
| while (end_iter != end_iter_end) { |
There was a problem hiding this comment.
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.
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:
…to the new system. This really should be reviewed by someone with more familiarity with these.