Extended with joined freezing software

edited January 24 in Ruby Scripting

I'm using 'extended' to dilate a series of design geometries with the join option. With some of the designs KLayout freezes at this process. If I forgo the 'join' option, it works fine, but it's not what I prefer. I have tried breaking the process apart by doing individual polygons from the layer, still some polygon is killing it. Is there something I should be watching out for in my geometry that's causing an endless loop or something?

Due to this issue, I attempted to wrap the extended command with a Timeout, but KLayout still freezes at same point.

begin
   Timeout.timeout(5) do
      buff = temp.edges.extended(0,0,fineDilation,0,true)
      print "."
    end
  rescue Timeout::Error
    buff = temp.edges.extended(0,0,fineDilation,0)
    print "|"
end

Can KLayout deal with timeouts? Or does this mean the extended process is freezing KLayout and not it's script interrupter that's watching for the timeout.

Comments

  • Problem is that the time is wasted in C++, which Ruby can't control.

    There is no way to avoid that except delegating the operation to a subprocess - i.e. writing the edges to a file, running KLayout as a subprocess in batch mode and collecting the results.

    The freezing is likely to happen because collecting a large number of edges for the join operation is simply some computational effort. This may happen for example, if you have a large number of edges whose bounding boxes overlap. Or your case is simply made from a huge (~millions) of edges.

    If you feel that is not the case and you can provide a testcase, I can try taking a look why the freeze happens.

    Matthias

  • Thanks, yeah it's not that large, but overlapping bounding boxs might be the case. I've switched to using size instead of extended, working much faster.

Sign In or Register to comment.