It looks like you're new here. If you want to get involved, click one of these buttons!
I would like to generate contact with size up 0.02.um and add 0.02 spacing between contact-to-contact (keep the same hierarchy of original GDS), my code as below:
The problem is the output is in flatten mode. How can I get the output with the same hierarchy of original GDS. Thanks.
=begin
origin:
contact size: 0.14 um
contact space: 0.16 um
new:
contact size: 0.16 um
contact space: 0.18 um
=end
deep
source ("ori.gds", "TOP")
target ("out.gds")
cont = input(1,0)
diffusion = input(2,0)
cont_size = 0.16
cont_space = 0.18
cont_size_half = cont_size/2
cheat ("*") {
cont_marged = cont.sized(cont_size_half ).clean # size and marge all contact
cont_find_mid = cont_marged .middle(as_dots) # find the mid point of layer
cont_find_mid_ex = cont_find_mid .extents(cont_size_half ) # layer sizing
cont_2_cont_space = cont_find_mid_ex .sized(cont_space +cont_size_half )
cont_gen_lc = cont_2_cont_space.extent_refs(:left_center).sized(cont_size_half -1.dbu).inside(cont_marged)
cont_find_mid_ex .output(1,0)
cont_gen_lc .output(1,0)
}
Comments
Hi,
Please format your code using Markdown ... a line with three backticks before and after your code.
By "marged" you mean "merged"?
The "extents" for computing "cont_find_mid_ex" from a dot-like layer (edge layer) isn't deep-enabled yet, hence this problem (I created a ticket for this: https://github.com/KLayout/klayout/issues/558).
You can use this code instead:
Note that by declaring the layer variable before the cheat-block makes it possible to export it from there. Don't put "output" inside "cheat".
But I don't get how the code creates spaced contacts. There must be something I don't know about your layout.
Matthias
Many thanks Matthias. You're always give me a hand.
The contact space created here:
cont_2_cont_space = cont_find_mid_ex.sized(cont_space+ cont_size_half) <-- cont_space