* nero/src/ :
- New Feature : to allow routing reuse, NeRo is now able to build the abstract of a mega-cell. That is, adds the relevant CALUx and TALUx describing the interface at top-level. - Bug : in the abstract generation, the intermediates TALUx metals of a stacked VIA where forgotten. For example, when there is a VIA34 on top of a VIA23 you must have obstacles in TALU4 and TALU2 but also a "dot" obstacle in TALU3. "Dot" obstacle are added only when we process a layer in the preferred routing direction, otherwise we would create a dot at each routing grid point...
This commit is contained in:
parent
be25914da2
commit
6ea06dbf32
|
@ -1,7 +1,7 @@
|
|||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// $Id: RMBK.cpp,v 1.8 2005/04/07 14:56:18 jpc Exp $
|
||||
// $Id: RMBK.cpp,v 1.9 2005/04/08 10:15:45 jpc Exp $
|
||||
//
|
||||
// /----------------------------------------------------------------\
|
||||
// | |
|
||||
|
@ -472,6 +472,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
|||
if (seg.X1 < seg.X2) {
|
||||
// This is not a "dot" segment (i.e a VIA).
|
||||
fig->addphseg (seg,pNet->external);
|
||||
} else if (z % 2) {
|
||||
char layer = seg.LAYER;
|
||||
seg.LAYER = MBK::layer2TALU (seg.LAYER);
|
||||
fig->addphseg (seg,false);
|
||||
seg.LAYER = layer;
|
||||
}
|
||||
|
||||
// Force segment restarting.
|
||||
|
@ -503,6 +508,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
|||
if (seg.X1 < seg.X2) {
|
||||
// This is not a "dot" segment (i.e a VIA).
|
||||
fig->addphseg (seg,pNet->external);
|
||||
} else if (z % 2) {
|
||||
char layer = seg.LAYER;
|
||||
seg.LAYER = MBK::layer2TALU (seg.LAYER);
|
||||
fig->addphseg (seg,false);
|
||||
seg.LAYER = layer;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -516,6 +526,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
|||
if (seg.X1 < seg.X2) {
|
||||
// This is not a "dot" segment (i.e a VIA).
|
||||
fig->addphseg (seg,pNet->external);
|
||||
} else if (z % 2 ) {
|
||||
char layer = seg.LAYER;
|
||||
seg.LAYER = MBK::layer2TALU (seg.LAYER);
|
||||
fig->addphseg (seg,false);
|
||||
seg.LAYER = layer;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -537,6 +552,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
|||
if (seg.Y1 < seg.Y2) {
|
||||
// This is not a "dot" segment (i.e a VIA).
|
||||
fig->addphseg (seg,pNet->external);
|
||||
} else if (! (z % 2)) {
|
||||
char layer = seg.LAYER;
|
||||
seg.LAYER = MBK::layer2TALU (seg.LAYER);
|
||||
fig->addphseg (seg,false);
|
||||
seg.LAYER = layer;
|
||||
}
|
||||
|
||||
// Force segment restarting.
|
||||
|
@ -569,6 +589,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
|||
if (seg.Y1 < seg.Y2) {
|
||||
// This is not a "dot" segment (i.e a VIA).
|
||||
fig->addphseg (seg,pNet->external);
|
||||
} else if (! (z % 2)) {
|
||||
char layer = seg.LAYER;
|
||||
seg.LAYER = MBK::layer2TALU (seg.LAYER);
|
||||
fig->addphseg (seg,false);
|
||||
seg.LAYER = layer;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -582,6 +607,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
|||
if (seg.Y1 < seg.Y2) {
|
||||
// This is not a "dot" segment (i.e a VIA).
|
||||
fig->addphseg (seg,pNet->external);
|
||||
} else if (! (z % 2)) {
|
||||
char layer = seg.LAYER;
|
||||
seg.LAYER = MBK::layer2TALU (seg.LAYER);
|
||||
fig->addphseg (seg,false);
|
||||
seg.LAYER = layer;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue