Fillet interior corners where polygons with many vertices meet

Hi, is there an elegant way to fillet the interior corners where these two polygons meet? For example, say I have these 6 micron diameter circles intersecting with traces (see image, upper row). The curvature of the trace changes with each row, so I can't just manually fillet once and array the result. The result I'm after is what you see in the lower row, but it would take too long to do this manually for each trace-circle intersection.

If I select both the circle and trace and round interior corners, the rounding only applies to the vertices nearest the intersection -- so my 3 micron specified inner corner radius is more like 0.02 to 0.1 microns, as shown here:

Is there a better way to accomplish what I'm after?

Thanks in advance for the help.


  • In the pcb realm these are known as 'teardrops', which are added to avoid off-center drilling from breaking the connection of the trace to the pad
    Perhaps the simplest way would be to add a circle that is 50% of the pad diameter at the pad/trace intersection, which are known as 'snowman' teardrops

  • @davidnhutch That's right, "round_corners' will limit itself to adjacent edges. The VLSI world does not have a traditional operation of "softening" features, although lithography simulators often produce contours which have soft features. In that case, that is the effect of low-pass filtering the aerial image.

    But there is no such feature built into KLayout yet ...


  • Thank you both for the comments. The function is to avoid stress concentrations at interior corners in a flexible (polymer thin film) MEMS structure -- a second reason for teardrops in the flex PCB world. The right solution for this particular case was to revise the geometry to something that could be easily arrayed (no change in curvature from one row to the next).

Sign In or Register to comment.