|
Magic Mailing List |
|
From: Conrad H Ziesler (cziesler AT eecs DOT umich.edu) Date: Sat Sep 21 2002 - 19:24:26 EDT
hi again,
the router and wiring sections in the techfile are not being scaled
when magic redefines the internal grid.
i put calls to these functions in DRCtech.c/DRCTechScale()
RtrTechScale(scaled,scalen);
WireTechScale(scaled,scalen);
although its not a good place, however the calls to rescale the magic
internal units are scattered in different places, so this is convenient.
wiring/wireTech.c:
<
< Void WireTechScale(int scalen, int scaled)
< {
< int i;
< register Contact *con;
< for(i=0;i<WireNumContacts;i++)
< {
< con = WireContacts[i];
< con->con_size*=scalen;
< con->con_size/=scaled;
<
< con->con_surround_1*=scalen;
< con->con_surround_1/=scaled;
<
< con->con_surround_2*=scalen;
< con->con_surround_2/=scaled;
< }
router/rtrTech.c:
279,321d278
<
< /* RtrTechScale -> scale the router technology parameters so if the database scales, the router does the correct thing */
< Void RtrTechScale(int scalen, int scaled)
< {
< int i;
<
< RtrMetalWidth*=scalen;
< RtrPolyWidth*=scalen;
< RtrContactWidth*=scalen;
< RtrContactOffset*=scalen;
< RtrMetalSurround*=scalen;
< RtrPolySurround*=scalen;
< RtrGridSpacing*=scalen;
< RtrSubcellSepUp*=scalen;
< RtrSubcellSepDown*=scalen;
<
<
< RtrMetalWidth/=scaled;
< RtrPolyWidth/=scaled;
< RtrContactWidth/=scaled;
< RtrContactOffset/=scaled;
< RtrMetalSurround/=scaled;
< RtrPolySurround/=scaled;
< RtrGridSpacing/=scaled;
< RtrSubcellSepUp/=scaled;
< RtrSubcellSepDown/=scaled;
<
< for (i=0; i < TT_MAXTYPES; i++)
< {
< RtrPaintSepsUp[i]*=scalen;
< RtrPaintSepsDown[i]*=scalen;
< RtrMetalSeps[i]*=scalen;
< RtrPolySeps[i]*=scalen;
<
< RtrPaintSepsUp[i]/=scaled;
< RtrPaintSepsDown[i]/=scaled;
< RtrMetalSeps[i]/=scaled;
< RtrPolySeps[i]/=scaled;
< }
< }
<
<
--conrad
|
|
|
|