Tiling (Fill Tool) Issue

Hello there,
I am a regular K-layout learner and have been learning this tool all by myself with the materials, forum answers and you all's guidance since last 15 months. So, please don't consider my questions as flooding as every week I am posting some issue.
Currently, I am trying to fill my designed chip with some dummy patterns. In this case, I am using a square of 2 um X 2 um.
When I use the fill tool, my K-layout freezes with Memory usage > 12 GB. I am trying to fill a chip having multiple sections having area of 5 mm X 7 mm each. In one section, the tiling is successful. But, now when I am trying to fill another section I am getting this error.

I have used the offset from exclude layers as 15 um. If possible I would like to increase it more.
My configuration is:

A similar setup was used in another section, where it worked. I only changed the box coordinates. I am looking forward to finding some errorless way that uses less memory (if available) and with more offset (gap) from the exclude layer.

Thanks in advance.

Best Regards,


  • edited June 2019

    Hi Bishal,

    Maybe it is the complexity of the background pattern that you want to exclude. The problem is basically that the tiling algorithm will flatten this layout and compute the available area as a NOT between the boundary and the background layout. This will create a huge memory demand if that background layout is complex.

    A workaround may be to use a script which runs the tiling code over small rectangular areas in a loop. The corresponding function is Cell#fill_region.


  • Thank you @Mathhias.
    After seeing your reply I searched for script-based filling and I referred to this link. This one worked.

    But I noticed some issues with gaps. Which I am really concerned about.
    The pink layer is my waveguide and blue one are the dummy pattern. You can see the tiling is not uniform. Somewhere the gap is 25 um somewhere it is 10 also. In some case, even touched.

    I am curious if we can solve this or not.

    Thanks in advance. :) :)

  • Very good! I vaguely remembered this solution, but wasn't sure anymore.

    I think the problem is because you are using a distance, right? The tiling approach has to consider this by taking enough from the neighbour tiles to catch everything that could potentially block.

    The code from the post does not consider this problem yet. But it should be easy to implement using the "tile_border" feature of the TilingProcessor:

    tp.tile_size(tile_size, tile_size)
    # new:
    tp.tile_border(distance, distance)

    If this works, I'm going to update the other post.



  • edited June 2019

    @Mathhias Thanks a lot. This worked perfectly.
    Also, I would like to add one issue.
    The distance was perfect but there was an extra gap between tile (block of dummy pattern used as small area).

    I wish to know some solution for this too.
    *All the units are in um.


  • Hi,

    I think those are the tile boundaries. Fill cells will not cross the tile boundaries. Maybe the problem goes away if you chose a tile size which is an integer multiple of the fill cell's dimension.


  • Hello @Matthias, I just encountered a big issue while running the script above.
    It was working perfectly until yesterday, but today when I try to run that script, nothing happens. A unit cell"DIFF_FILL" is created and nothing more. Neither I get some error response. What causes the script to run partially without any error message or any prompt ups.
    Looking forward to find a solution as soon as possible.


    Best Regards,

  • UPDATE: The issue has been solved
    I deleted the previous one rewrote the script and it worked.

Sign In or Register to comment.