@@ -2135,13 +2135,27 @@ drcMaskSpacing(set1, set2, pmask1, pmask2, wwidth, distance, adjacency,
2135
2135
/* reverse order due to the stack property of */
2136
2136
/* the linked list. */
2137
2137
2138
- drcAssign (dpnew , distance , dp -> drcc_next , & tmp1 , & tmp2 ,
2139
- why , distance , DRC_FORWARD , plane2 , plane );
2140
- dptrig = (DRCCookie * ) mallocMagic ((unsigned )
2141
- (sizeof (DRCCookie )));
2142
- drcAssign (dptrig , wwidth , dpnew , set1 , set1 , why ,
2143
- runlength , DRC_REVERSE | DRC_MAXWIDTH |
2144
- DRC_TRIGGER | DRC_BENDS , plane2 , plane );
2138
+ if (runlength > 0 )
2139
+ {
2140
+ drcAssign (dpnew , distance , dp -> drcc_next , & tmp1 , & tmp2 ,
2141
+ why , runlength , DRC_RUNLENGTH |
2142
+ DRC_FORWARD , plane2 , plane );
2143
+ dptrig = (DRCCookie * ) mallocMagic ((unsigned )
2144
+ (sizeof (DRCCookie )));
2145
+ drcAssign (dptrig , wwidth , dpnew , set1 , set1 , why ,
2146
+ runlength , DRC_REVERSE | DRC_MAXWIDTH |
2147
+ DRC_TRIGGER | DRC_BENDS , plane2 , plane );
2148
+ }
2149
+ else
2150
+ {
2151
+ drcAssign (dpnew , distance , dp -> drcc_next , & tmp1 , & tmp2 ,
2152
+ why , distance , DRC_FORWARD , plane2 , plane );
2153
+ dptrig = (DRCCookie * ) mallocMagic ((unsigned )
2154
+ (sizeof (DRCCookie )));
2155
+ drcAssign (dptrig , wwidth , dpnew , set1 , set1 , why ,
2156
+ distance , DRC_REVERSE | DRC_MAXWIDTH |
2157
+ DRC_TRIGGER | DRC_BENDS , plane2 , plane );
2158
+ }
2145
2159
2146
2160
dp -> drcc_next = dptrig ;
2147
2161
}
@@ -2189,14 +2203,28 @@ drcMaskSpacing(set1, set2, pmask1, pmask2, wwidth, distance, adjacency,
2189
2203
2190
2204
/* Assign two coupled rules (see above) */
2191
2205
2192
- drcAssign (dpnew , distance , dp -> drcc_next , & tmp1 ,
2193
- & tmp2 , why , distance ,
2206
+ if (runlength > 0 )
2207
+ {
2208
+ drcAssign (dpnew , distance , dp -> drcc_next , & tmp1 ,
2209
+ & tmp2 , why , runlength , DRC_RUNLENGTH |
2194
2210
DRC_REVERSE | DRC_BOTHCORNERS , plane2 , plane );
2195
- dptrig = (DRCCookie * ) mallocMagic ((unsigned )
2211
+ dptrig = (DRCCookie * ) mallocMagic ((unsigned )
2196
2212
(sizeof (DRCCookie )));
2197
- drcAssign (dptrig , wwidth , dpnew , set1 , set1 , why ,
2213
+ drcAssign (dptrig , wwidth , dpnew , set1 , set1 , why ,
2198
2214
runlength , DRC_FORWARD | DRC_MAXWIDTH |
2199
2215
DRC_TRIGGER | DRC_BENDS , plane2 , plane );
2216
+ }
2217
+ else
2218
+ {
2219
+ drcAssign (dpnew , distance , dp -> drcc_next , & tmp1 ,
2220
+ & tmp2 , why , distance ,
2221
+ DRC_REVERSE | DRC_BOTHCORNERS , plane2 , plane );
2222
+ dptrig = (DRCCookie * ) mallocMagic ((unsigned )
2223
+ (sizeof (DRCCookie )));
2224
+ drcAssign (dptrig , wwidth , dpnew , set1 , set1 , why ,
2225
+ distance , DRC_FORWARD | DRC_MAXWIDTH |
2226
+ DRC_TRIGGER | DRC_BENDS , plane2 , plane );
2227
+ }
2200
2228
dp -> drcc_next = dptrig ;
2201
2229
}
2202
2230
else if (needtrigger )
@@ -2474,7 +2502,7 @@ drcSpacing(argc, argv)
2474
2502
{
2475
2503
layers2 = argv [3 ];
2476
2504
distance = atoi (argv [4 ]);
2477
- runlength = distance ;
2505
+ runlength = -1 ;
2478
2506
adjacency = argv [5 ];
2479
2507
why = drcWhyCreate (argv [6 ]);
2480
2508
}
@@ -2488,7 +2516,7 @@ drcSpacing(argc, argv)
2488
2516
adjacency = argv [4 ];
2489
2517
wwidth = distance ;
2490
2518
why = drcWhyCreate (argv [5 ]);
2491
- runlength = distance ;
2519
+ runlength = -1 ;
2492
2520
if (argc >= 7 )
2493
2521
{
2494
2522
TechError ("Unknown argument in spacing line.\n" );
0 commit comments