* 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++ -*-
|
// -*- 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) {
|
if (seg.X1 < seg.X2) {
|
||||||
// This is not a "dot" segment (i.e a VIA).
|
// This is not a "dot" segment (i.e a VIA).
|
||||||
fig->addphseg (seg,pNet->external);
|
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.
|
// Force segment restarting.
|
||||||
|
@ -503,6 +508,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
||||||
if (seg.X1 < seg.X2) {
|
if (seg.X1 < seg.X2) {
|
||||||
// This is not a "dot" segment (i.e a VIA).
|
// This is not a "dot" segment (i.e a VIA).
|
||||||
fig->addphseg (seg,pNet->external);
|
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) {
|
if (seg.X1 < seg.X2) {
|
||||||
// This is not a "dot" segment (i.e a VIA).
|
// This is not a "dot" segment (i.e a VIA).
|
||||||
fig->addphseg (seg,pNet->external);
|
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) {
|
if (seg.Y1 < seg.Y2) {
|
||||||
// This is not a "dot" segment (i.e a VIA).
|
// This is not a "dot" segment (i.e a VIA).
|
||||||
fig->addphseg (seg,pNet->external);
|
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.
|
// Force segment restarting.
|
||||||
|
@ -569,6 +589,11 @@ void CRBox::mbkload (MBK::CFig *mbkfig, int z, int zup, int rtype)
|
||||||
if (seg.Y1 < seg.Y2) {
|
if (seg.Y1 < seg.Y2) {
|
||||||
// This is not a "dot" segment (i.e a VIA).
|
// This is not a "dot" segment (i.e a VIA).
|
||||||
fig->addphseg (seg,pNet->external);
|
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) {
|
if (seg.Y1 < seg.Y2) {
|
||||||
// This is not a "dot" segment (i.e a VIA).
|
// This is not a "dot" segment (i.e a VIA).
|
||||||
fig->addphseg (seg,pNet->external);
|
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