The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.51k stars 525 forks source link

Speed up check_setup #5539

Open oharboe opened 1 month ago

oharboe commented 1 month ago

Description

untar https://drive.google.com/file/d/10QLY9Q1DtNGn2bnzDIhNinOuYEgDUAGh/view?usp=sharing

./run-me-BoomTile-asap7-base.sh 

Output:

OpenROAD v2.0-15103-gc7aa07725 
[deleted]
[INFO ODB-0227] LEF file: results/asap7/meta_40x240/base/meta_40x240.lef, created 1 vias, 1 library cells

==========================================================================
Floorplan check_setup
--------------------------------------------------------------------------
[4 hours so far, no progress output beyond this, 100% CPU busy, don't know if it completes...]

Suggested Solution

Speed up check_setup and also make it optional

Additional Context

No response

oharboe commented 1 month ago

@jeffng-or FYI

oharboe commented 1 month ago

Stack trace from suspend after a few mins:

std::_Rb_tree_increment(std::_Rb_tree_node_base const*) (@std::_Rb_tree_increment(std::_Rb_tree_node_base const*):10)
sta::InstanceSet::compare(sta::InstanceSet const*, sta::InstanceSet const*, sta::Network const*) (@sta::InstanceSet::compare(sta::InstanceSet const*, sta::InstanceSet const*, sta::Network const*):66)
sta::ExceptionFromTo::compare(sta::ExceptionPt*, sta::Network const*) const (@sta::ExceptionFromTo::compare(sta::ExceptionPt*, sta::Network const*) const:46)
sta::ExceptionPathLess::operator()(sta::ExceptionPath const*, sta::ExceptionPath const*) const (@sta::ExceptionPathLess::operator()(sta::ExceptionPath const*, sta::ExceptionPath const*) const:260)
sta::ExceptionStateLess::operator()(sta::ExceptionState const*, sta::ExceptionState const*) const (@sta::ExceptionStateLess::operator()(sta::ExceptionState const*, sta::ExceptionState const*) const:22)
std::pair<std::_Rb_tree_iterator<sta::ExceptionState*>, bool> std::_Rb_tree<sta::ExceptionState*, sta::ExceptionState*, std::_Identity<sta::ExceptionState*>, sta::ExceptionStateLess, std::allocator<sta::ExceptionState*>>::_M_insert_unique<sta::ExceptionState* const&>(sta::ExceptionState* const&) (@std::pair<std::_Rb_tree_iterator<sta::ExceptionState*>, bool> std::_Rb_tree<sta::ExceptionState*, sta::ExceptionState*, std::_Identity<sta::ExceptionState*>, sta::ExceptionStateLess, std::allocator<sta::ExceptionState*>>::_M_insert_unique<sta::ExceptionState* const&>(sta::ExceptionState* const&):91)
sta::Sdc::exceptionFromStates(sta::Set<sta::ExceptionPath*, std::less<sta::ExceptionPath*>> const*, sta::Pin const*, sta::RiseFall const*, sta::MinMax const*, bool, sta::Set<sta::ExceptionState*, sta::ExceptionStateLess>*&) const (@sta::Sdc::exceptionFromStates(sta::Set<sta::ExceptionPath*, std::less<sta::ExceptionPath*>> const*, sta::Pin const*, sta::RiseFall const*, sta::MinMax const*, bool, sta::Set<sta::ExceptionState*, sta::ExceptionStateLess>*&) const:74)
sta::Sdc::exceptionFromStates(sta::Pin const*, sta::RiseFall const*, sta::Clock const*, sta::RiseFall const*, sta::MinMax const*, sta::Set<sta::ExceptionState*, sta::ExceptionStateLess>*&) const (@sta::Sdc::exceptionFromStates(sta::Pin const*, sta::RiseFall const*, sta::Clock const*, sta::RiseFall const*, sta::MinMax const*, sta::Set<sta::ExceptionState*, sta::ExceptionStateLess>*&) const:213)
sta::PathVisitor::visitFromPath(sta::Pin const*, sta::Vertex*, sta::RiseFall const*, sta::PathVertex*, sta::Edge*, sta::TimingArc*, sta::Pin const*, sta::Vertex*, sta::RiseFall const*, sta::MinMax const*, sta::PathAnalysisPt const*) (@sta::PathVisitor::visitFromPath(sta::Pin const*, sta::Vertex*, sta::RiseFall const*, sta::PathVertex*, sta::Edge*, sta::TimingArc*, sta::Pin const*, sta::Vertex*, sta::RiseFall const*, sta::MinMax const*, sta::PathAnalysisPt const*):189)
sta::PathVisitor::visitEdge(sta::Pin const*, sta::Vertex*, sta::Edge*, sta::Pin const*, sta::Vertex*) (@sta::PathVisitor::visitEdge(sta::Pin const*, sta::Vertex*, sta::Edge*, sta::Pin const*, sta::Vertex*):94)
sta::PathVisitor::visitFaninPaths(sta::Vertex*) (@sta::PathVisitor::visitFaninPaths(sta::Vertex*):70)
sta::ArrivalVisitor::visit(sta::Vertex*) (@sta::ArrivalVisitor::visit(sta::Vertex*):36)
sta::BfsIterator::visit(int, sta::VertexVisitor*) (@sta::BfsIterator::visit(int, sta::VertexVisitor*):72)
sta::Search::findArrivals1(int) (@sta::Search::findArrivals1(int):32)
sta::Search::findAllArrivals(bool) (.constprop.0) (@sta::Search::findAllArrivals(bool) (.constprop.0):66)
sta::Sta::checkTiming(bool, bool, bool, bool, bool, bool, bool) (@sta::Sta::checkTiming(bool, bool, bool, bool, bool, bool, bool):26)
_wrap_check_timing_cmd (@_wrap_check_timing_cmd:121)
TclNRRunCallbacks (@TclNRRunCallbacks:37)
___lldb_unnamed_symbol1497 (@___lldb_unnamed_symbol1497:339)
Tcl_EvalEx (@Tcl_EvalEx:9)