Hello,

I see that this is an old issue, but I get the same results when try to 
export Cell in CIF format.
I'm using Electric 9.03 and rcmos technology to generate a pcb with rounded 
corners of the traces.
I see when exporting to CIF format that the pins are not scaled, while the 
arcs are scaled according to Technology scale.

I'm not a programmer, but I found the function in Electric source code ( 
/com/sun/electric/tool/io/output/CIF.java ),
which gets the PolyBase object and checks if it is Round, Box or Poly.
It looks like the scaling of the Poly.Type.DISC object is done to the 
radius of the DISC, while it should be done
to the diameter. At the end I'm attaching the method that generates the 
.CIF file and I have one questions:

What is the workflow that I should follow in order to get Electric to work 
with the new version of CIF.java file ?
Should I compile everything from source or when Electric runs it compiles 
automatically the CIF java class.
I'm not familiar with the java workflow and actually I don't know how to 
update the file correctly, so that next time I run Electric,
to use the file with the corrected radius in the scale() function.

Regards,
Radoslav

method:

private void writePoly(PolyBase poly, Cell cell, Geometric geom)
>     {
>         Point2D [] points = poly.getPoints();
>
>         if (poly.getStyle() == Poly.Type.DISC)
>         {
>             checkResolution(poly, cell, geom);
>             double r = points[0].distance(points[1]);
>             if (r <= 0) return;            // ignore zero size geometry
>             *int radius = scale(r);*     // HERE SHOULD BE SCALED 
> DIAMETER (I THINK) 
>             int x = scale(points[0].getX());
>             int y = scale(points[0].getY());
>             String line = " R " + radius + " " + x + " " + y + ";";
>             writeLine(line);
>         } else
>         {
>             // ignore zero size geometry
>             Rectangle2D bounds = poly.getBounds2D();
>             if (bounds.getHeight() <= 0 || bounds.getWidth() <= 0) return;
>
>             // simple case if poly is a box
>             Rectangle2D box = poly.getBox();
>             if (box != null)
>             {
>                 checkPointResolution(box.getWidth(), box.getHeight(), 
> cell, geom, poly.getLayer(), poly);
>                 checkPointResolution(box.getCenterX(), box.getCenterY(), 
> cell, geom, poly.getLayer(), poly);
>                 int width = scale(box.getWidth());
>                 int height = scale(box.getHeight());
>                 int x = scale(box.getCenterX());
>                 int y = scale(box.getCenterY());
>                 String line = " B " + width + " " + height + " " + x + " " 
> + y + ";";
>                 writeLine(line);
>                 return;
>             }
>
>             // not a box
>             checkResolution(poly, cell, geom);
>             StringBuffer line = new StringBuffer(" P");
>             for (int i=0; i<points.length; i++)
>             {
>                 int x = scale(points[i].getX());
>                 int y = scale(points[i].getY());
>                 line.append(" " + x + " " + y);
>             }
>             line.append(";");
>             writeLine(line.toString());
>         }
>     }
>

-- 
You received this message because you are subscribed to the Google Groups 
"Electric VLSI Editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to