Hi,
I was trying to modify the xs file to get different thicknesses. However, whatever I specify, the result is 0.1 less.
For example, I did
metal1 = mask(metal1).grow(0.4, :taper => 50)
stop = grow(0.4)
But the result was 0.3 for both metal1 and stop.
I could just specify 0.1 more than what I want to compensate for this, but is this a bug?
Thanks for your help.
Jack
Comments
Hi Jack,
that is related to the "delta" attribute: the heights are only accurate to this value currently. That's a systematic problem implied by the geometrical production rules. You can make the delta value much smaller, but I'd not go below a few database units (typically one DBU is 1 nm - so 5 nm may be acceptable). So that observation is correct and although I'd not consider that a bug, it's at least a "bad feature".
But there is a new implementation which will avoid this issue: You can try to check out the "v2" branch: http://sourceforge.net/p/xsectionklayout/code/HEAD/tree/branches/v2/src/. This version requires KLayout 0.23 at least and avoids this problem by using edge sets which are infinitely small. The implementation is a bit experimental but I used it already to create all the pictures from the doc. So I'm fairly sure it works correctly :-)
Regards,
Matthias
Thank you for your advice. It worked very well.
However, I've noticed that the v2 version produces less smooth "round" profile when using "round" option in "grow".
There are simply less points than the original version. seems like the points snap to somewhere, so the round edge is not so round.
Can you advise on this point?
Thank you.
Jack
I found that I could increase the points in the following line.
# approximate round corners by 64 points for "round" and 8 for "octagon"
n = (mode == :round ? 64 : 8)
However, the points in the cross section still snaps to the closest 0.01 um grid points.
Is it possible to keep the cross section profile from snapping?
Thanks.
Jack
Hi Jack,
maybe I should make the number of points a variable. To be frank I thought that 64 points for a circle are pretty smooth already.
That snapping I can't explain. Maybe your input layout uses a 10nm database unit? The input's layout database unit is used for the cross section too currently, so that may explain the snapping. You can change the database unit by saving the layout with a new and smaller one. 1nm is a typical database unit.
Regards,
Matthias
Thank you very much. It was indeed the database unit that was set to 10 nm.
64 points was sufficiently smooth. The snapping was the main cause of the jagged edges.
Thank you for your help.
Regards,
Jack