Skip to content

GRT/STA hit "G matrix is singular" for two asap7 designs #4355

Description

@jeffng-or

Subject

[Stage]: Global Router.

Describe the bug

When running the RC correlation flow on ASAP7 with MAX_ROUTING_LAYER=M9, two designs (gcd-ccs and swerv-wrapper) run into the following STA error in GRT:

[ERROR STA-1752] G matrix is singular.

In the case of swerv-wrapper, you get a stack:

[ERROR STA-1752] G matrix is singular.
terminate called after throwing an instance of 'std::runtime_error'
  what():  STA-1752
Signal 6 received
Stack trace:
 0# 0x0000000000EFA697 in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
 1# 0x0000000000042520 in /lib/x86_64-linux-gnu/libc.so.6
 2# pthread_kill in /lib/x86_64-linux-gnu/libc.so.6
 3# raise in /lib/x86_64-linux-gnu/libc.so.6
 4# abort in /lib/x86_64-linux-gnu/libc.so.6
 5# 0x00000000000A2B9E in /lib/x86_64-linux-gnu/libstdc++.so.6
 6# 0x00000000000AE20C in /lib/x86_64-linux-gnu/libstdc++.so.6
 7# 0x00000000000AE277 in /lib/x86_64-linux-gnu/libstdc++.so.6
 8# 0x00000000000AE4D8 in /lib/x86_64-linux-gnu/libstdc++.so.6
 9# 0x000000000096C30A in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
10# sta::dbStaReport::errorMsg(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
11# 0x00000000010D6BBB in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
12# sta::PrimaDelayCalc::primaReduce() in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
13# sta::PrimaDelayCalc::simulate() in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
14# sta::PrimaDelayCalc::gateDelays(std::vector<sta::ArcDcalcArg, std::allocator<sta::ArcDcalcArg> >&, std::map<sta::Pin const*, unsigned long, sta::PinIdLess, std::allocator<std::pair<sta::Pin const* const, unsigned long> > > const&, sta::Scene const*, sta::MinMax const*) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
15# sta::PrimaDelayCalc::gateDelay(sta::Pin const*, sta::TimingArc const*, sta::Delay const&, float, sta::Parasitic const*, std::map<sta::Pin const*, unsigned long, sta::PinIdLess, std::allocator<std::pair<sta::Pin const* const, unsigned long> > > const&, sta::Scene const*, sta::MinMax const*) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
16# sta::GraphDelayCalc::findDriverArcDelays(sta::Vertex*, sta::MultiDrvrNet const*, sta::Edge*, sta::TimingArc const*, sta::Scene const*, sta::MinMax const*, sta::ArcDelayCalc*, std::map<sta::Pin const*, unsigned long, sta::PinIdLess, std::allocator<std::pair<sta::Pin const* const, unsigned long> > >&) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
17# sta::GraphDelayCalc::findDriverEdgeDelays(sta::Vertex*, sta::MultiDrvrNet const*, sta::Edge*, sta::ArcDelayCalc*, std::map<sta::Pin const*, unsigned long, sta::PinIdLess, std::allocator<std::pair<sta::Pin const* const, unsigned long> > >&, std::array<bool, 2ul>&) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
18# sta::GraphDelayCalc::findDriverDelays1(sta::Vertex*, sta::MultiDrvrNet*, sta::ArcDelayCalc*, std::map<sta::Pin const*, unsigned long, sta::PinIdLess, std::allocator<std::pair<sta::Pin const* const, unsigned long> > >&) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
19# sta::GraphDelayCalc::findDriverDelays(sta::Vertex*, sta::ArcDelayCalc*, std::map<sta::Pin const*, unsigned long, sta::PinIdLess, std::allocator<std::pair<sta::Pin const* const, unsigned long> > >&) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
20# sta::GraphDelayCalc::findVertexDelay(sta::Vertex*, sta::ArcDelayCalc*, bool) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
21# 0x00000000011D03E4 in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
22# sta::DispatchQueue::dispatch_thread_handler(unsigned long) in /OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
23# 0x00000000000DC253 in /lib/x86_64-linux-gnu/libstdc++.so.6
24# 0x0000000000094AC3 in /lib/x86_64-linux-gnu/libc.so.6
25# clone in /lib/x86_64-linux-gnu/libc.so.6
Elapsed time: 1:23.68[h:]min:sec. CPU time: user 1083.66 sys 10.34 (1307%). Peak memory: 3967536KB.

The default runs with MAX_ROUTING_LAYER=M7 don't encounter the errors.

Expected Behavior

Successful GRT run

Environment

orfs git commit tag: afad87da8d1ebd6ef1bc94288b4204420975a549

To Reproduce

gcd-ccs tarball: https://drive.google.com/file/d/1wlIEAq_B1YAkglm5aoEqLNkg2DUus21E/view?usp=drive_link
swerv_wrapper tarball: https://drive.google.com/file/d/1Tg5pAKO_2JtV8BfP0E4IH39YGhaKP2Uk/view?usp=drive_link

Relevant log output

Screenshots

No response

Additional Context

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions