22 April 2021 at 19:21 #6450
To increase the density of polygon points in curves (cobra_p2p and nd.bend) I had made the accuracy of one of my waveguide layers very small, 0.000003 instead of 0.001. However now cobra_p2p fails in some instances when I try to export to GDS, I believe due to too many polygon corners. Plotting the layout works fine. I’ll paste the error below.
I don’t need all my waveguides to have densely spaced polygon corners, just curves in phase sensitive structures. Is there any other way to control it? One possibility might be to make several Nazca layers with different accuracy and map them to the same GDS layer. Is that the best thing to try?
File “[…]\site-packages\nazca\gds_base.py”, line 97, in pack_uint16
return struct.pack(“>H”, H)
struct.error: ‘H’ format requires 0 <= number <= 65535
22 April 2021 at 19:38 #6452XaveerModerator
- This topic was modified 2 weeks, 2 days ago by Xaveer.
It doesn’t make sense to reduce the accuracy below 0.001, because 1 nm is the accuracy of the GDS file. So in the end, your extra points will be snapped on the 1 nm grid anyway. Although this minimum grid size can be reduced, that will also reduce the maximum total size of the mask and is not a common thing to do. If you want to do this anyway, have a look at my answer to https://nazca-design.org/forums/topic/opening-gds-file-regarding-its-precision-or-accuracy/
I don’t think your proposed solution of joining structures on different layers with different accuracies will work (but I’m open to being convinced otherwise…).
The upcoming release of Nazca does properly handle the integer overflow that you now see, which is caused by too many points in the polygon, as you already mentioned.
Xaveer23 April 2021 at 19:07 #6453
Thanks for getting back to me about this. I ran some tests. I can see for instance that with 1-nm accuracy a 20 micron radius curve has vertices about every 1 degree. At this spacing, if the vertices were placed perfectly, the maximum deviation midway between two vertices from a perfect curve is <1nm. I’m still a little concerned about errors adding up over a long phase arm since the vertices themselves are snapped to a grid. For this reason I’ll probably keep using increased accuracy specifically for phase-sensitive components.
In my testing it appears I can connect two cross-sections that use different-accuracy layers in Nazca which map to the same GDS layers. So, this should be a suitable solution for my concern.
Jon24 April 2021 at 19:34 #6454XaveerModerator
It’s not obvious that more points will generate a better curve:
[sorry, pictures still disabled]
What will be better after fabrication is again a different question. And for the phase transfer, you’d have to integrate the propagation constant along curve and use the local curvature.
For a circular bend the systematic error because the line is more often inside the curve is corrected for in Nazca so the phase transfer should be more accurate, or so I like to think.
I guess an experiment testing with fewer and more points would be nice, but not easy?
26 April 2021 at 23:27 #6459
- This reply was modified 2 weeks ago by Xaveer.
That is a good point, I hadn’t even thought about the fact that if points of a curve are rounded to the closest gridpoint to the curve, the average radius will be reduced. Good that it has been accounted for.
In any case I’ll probably just stick with a tighter accuracy setting as long as it doesn’t introduce any other issues in GDS creation or mask file size. This is just easier for me than working through the details of how any inaccuracies will sum up or average out over the whole length of a Mach Zehnder arm.
- You must be logged in to reply to this topic.