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.