Modified "lef write -hide" behavior to fix problems that occur
when a label has no area and magic has to go searching for the label area. The resulting behavior is better but is not really a substitute for adding ports on the proper layers in the proper locations for routing connections.
This commit is contained in:
parent
d624b76712
commit
a8cc403e4b
|
|
@ -1501,9 +1501,30 @@ lefWriteMacro(def, f, scale, setback, pinonly, toplayer, domaster)
|
||||||
carea = labr;
|
carea = labr;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
scx.scx_area = labr;
|
||||||
SelectChunk(&scx, lab->lab_type, 0, &carea, FALSE);
|
SelectChunk(&scx, lab->lab_type, 0, &carea, FALSE);
|
||||||
if (GEO_RECTNULL(&carea)) carea = labr;
|
if (GEO_RECTNULL(&carea))
|
||||||
else if (pinonly > 0)
|
{
|
||||||
|
/* In the flattened cell, any connected layer
|
||||||
|
* could be underneath the label.
|
||||||
|
*/
|
||||||
|
TileType tt;
|
||||||
|
for (tt = TT_TECHDEPBASE; tt < DBNumTypes; tt++)
|
||||||
|
{
|
||||||
|
if (tt == lab->lab_type) continue;
|
||||||
|
if (DBConnectsTo(tt, lab->lab_type))
|
||||||
|
{
|
||||||
|
scx.scx_area = labr;
|
||||||
|
SelectChunk(&scx, tt, 0, &carea, FALSE);
|
||||||
|
if (!GEO_RECTNULL(&carea))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tt == DBNumTypes)
|
||||||
|
carea = labr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pinonly > 0) && (!GEO_RECTNULL(&carea)))
|
||||||
{
|
{
|
||||||
Rect psetback;
|
Rect psetback;
|
||||||
GEO_EXPAND(&boundary, -pinonly, &psetback);
|
GEO_EXPAND(&boundary, -pinonly, &psetback);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue