Anabatic transient commit 17. Ripup long wires only.
This commit is contained in:
parent
d29cbe976a
commit
248704c61c
|
@ -223,6 +223,25 @@ namespace Anabatic {
|
|||
}
|
||||
|
||||
|
||||
size_t Edge::ripup ()
|
||||
{
|
||||
AnabaticEngine* anabatic = getAnabatic();
|
||||
DbU::Unit globalThreshold = Session::getSliceHeight()*3;
|
||||
size_t netCount = 0;
|
||||
|
||||
for ( size_t i=0 ; i<_segments.size(); ) {
|
||||
if (_segments[i]->getLength() >= globalThreshold) {
|
||||
NetData* netData = anabatic->getNetData( _segments[i]->getNet() );
|
||||
if (netData->isGlobalRouted()) ++netCount;
|
||||
|
||||
anabatic->ripup( _segments[i], Flags::Propagate );
|
||||
} else
|
||||
++i;
|
||||
}
|
||||
return netCount;
|
||||
}
|
||||
|
||||
|
||||
void Edge::_setSource ( GCell* source )
|
||||
{
|
||||
if (source == _target)
|
||||
|
|
|
@ -191,15 +191,17 @@ namespace Anabatic {
|
|||
for ( Edge* edge : ovEdges ) computeNextHCost( edge, edgeHInc );
|
||||
|
||||
netCount = 0;
|
||||
while ( not ovEdges.empty() ) {
|
||||
Edge* ovEdge = ovEdges[0];
|
||||
size_t iEdge = 0;
|
||||
while ( iEdge < ovEdges.size() ) {
|
||||
Edge* edge = ovEdges[iEdge];
|
||||
netCount += edge->ripup();
|
||||
|
||||
vector<Segment*> segments = ovEdge->getSegments();
|
||||
for ( Segment* segment : segments ) {
|
||||
NetData* netData = getNetData( segment->getNet() );
|
||||
if (netData->isGlobalRouted()) ++netCount;
|
||||
|
||||
ripup( segment, Flags::Propagate );
|
||||
if (ovEdges[iEdge] == edge) {
|
||||
cerr << Error( "AnabaticEngine::globalRoute(): Unable to ripup enough segments of edge:\n"
|
||||
" %s"
|
||||
, getString(edge).c_str()
|
||||
) << endl;
|
||||
++iEdge;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -79,6 +79,7 @@ namespace Anabatic {
|
|||
void add ( Segment* );
|
||||
void remove ( Segment* );
|
||||
void replace ( Segment* orig, Segment* repl );
|
||||
size_t ripup ();
|
||||
inline const Flags& flags () const;
|
||||
inline Flags& flags ();
|
||||
inline void revalidate () const;
|
||||
|
|
Loading…
Reference in New Issue