Corrected error in generated vias (set top layer type on bottom,
so bottom layer went missing).
This commit is contained in:
parent
5ba84b068a
commit
0141ca8c95
|
|
@ -86,7 +86,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
bool valid = FALSE; /* is there a valid reference point? */
|
bool valid = FALSE; /* is there a valid reference point? */
|
||||||
bool initial = TRUE;
|
bool initial = TRUE;
|
||||||
Rect locarea;
|
Rect locarea;
|
||||||
int extend;
|
int extend, lextend, hextend;
|
||||||
float x, y, z, w;
|
float x, y, z, w;
|
||||||
int routeWidth, paintWidth, saveWidth;
|
int routeWidth, paintWidth, saveWidth;
|
||||||
TileType routeLayer, paintLayer;
|
TileType routeLayer, paintLayer;
|
||||||
|
|
@ -435,6 +435,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
/* Record current reference point */
|
/* Record current reference point */
|
||||||
locarea.r_xbot = refp.p_x;
|
locarea.r_xbot = refp.p_x;
|
||||||
locarea.r_ybot = refp.p_y;
|
locarea.r_ybot = refp.p_y;
|
||||||
|
lextend = extend;
|
||||||
|
|
||||||
/* Read an (X Y [extend]) point */
|
/* Read an (X Y [extend]) point */
|
||||||
token = LefNextToken(f, TRUE); /* read X */
|
token = LefNextToken(f, TRUE); /* read X */
|
||||||
|
|
@ -510,6 +511,7 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
LefError(DEF_ERROR, "Can't deal with nonmanhattan geometry in route.\n");
|
LefError(DEF_ERROR, "Can't deal with nonmanhattan geometry in route.\n");
|
||||||
locarea.r_xbot = refp.p_x;
|
locarea.r_xbot = refp.p_x;
|
||||||
locarea.r_ybot = refp.p_y;
|
locarea.r_ybot = refp.p_y;
|
||||||
|
lextend = extend;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -522,6 +524,19 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
locarea.r_xtop = refp.p_x;
|
locarea.r_xtop = refp.p_x;
|
||||||
locarea.r_ytop = refp.p_y;
|
locarea.r_ytop = refp.p_y;
|
||||||
|
|
||||||
|
/* Change route segment to a canonical rectangle. If */
|
||||||
|
/* the route is flipped relative to canonical coords, */
|
||||||
|
/* then the wire extentions have to be swapped as well. */
|
||||||
|
|
||||||
|
if ((locarea.r_xtop < locarea.r_xbot) ||
|
||||||
|
(locarea.r_ytop < locarea.r_ybot))
|
||||||
|
{
|
||||||
|
hextend = lextend;
|
||||||
|
lextend = extend;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hextend = extend;
|
||||||
|
|
||||||
GeoCanonicalRect(&locarea, &newRoute->r_r);
|
GeoCanonicalRect(&locarea, &newRoute->r_r);
|
||||||
|
|
||||||
if (newRoute->r_r.r_xbot == newRoute->r_r.r_xtop)
|
if (newRoute->r_r.r_xbot == newRoute->r_r.r_xtop)
|
||||||
|
|
@ -531,8 +546,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newRoute->r_r.r_xbot -= extend;
|
newRoute->r_r.r_xbot -= lextend;
|
||||||
newRoute->r_r.r_xtop += extend;
|
newRoute->r_r.r_xtop += hextend;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newRoute->r_r.r_ybot == newRoute->r_r.r_ytop)
|
if (newRoute->r_r.r_ybot == newRoute->r_r.r_ytop)
|
||||||
|
|
@ -542,8 +557,8 @@ DefAddRoutes(rootDef, f, oscale, special, defLayerMap)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newRoute->r_r.r_ybot -= extend;
|
newRoute->r_r.r_ybot -= lextend;
|
||||||
newRoute->r_r.r_ytop += extend;
|
newRoute->r_r.r_ytop += hextend;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we don't have integer units here, we should */
|
/* If we don't have integer units here, we should */
|
||||||
|
|
|
||||||
|
|
@ -1889,7 +1889,7 @@ LefGenViaGeometry(f, lefl, sizex, sizey, spacex, spacey,
|
||||||
viaLR = (LinkedRect *)mallocMagic(sizeof(LinkedRect));
|
viaLR = (LinkedRect *)mallocMagic(sizeof(LinkedRect));
|
||||||
viaLR->r_next = lefl->info.via.lr;
|
viaLR->r_next = lefl->info.via.lr;
|
||||||
lefl->info.via.lr = viaLR;
|
lefl->info.via.lr = viaLR;
|
||||||
viaLR->r_type = tlayer;
|
viaLR->r_type = blayer;
|
||||||
viaLR->r_r = rect;
|
viaLR->r_r = rect;
|
||||||
|
|
||||||
w = (sizex * cols) + (spacex * (cols - 1));
|
w = (sizex * cols) + (spacex * (cols - 1));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue