It looks like you're new here. If you want to get involved, click one of these buttons!
So I'm calling something like M4Fil.fill(pattern_m4s, hstep(width_m4s + distance_m4s), vstep(height_m4s + distance_m4s), multiorigin)
to generate a fill pattern.
But how can I ensure that the selected origin matches the manufacturing grid of 5 nm ? Where do I set that ?
Comments
The multiorigin feature will align the fill pattern to existing features - either original ones or residuals which are left from previous fill steps. Provided the original features are on-grid and the fill pattern is too (pattern dimensions and step vectors), the fill function should always generate on-grid pattern.
Matthias
We are currently trying both the auto_origin and multi_origin options. They are giving very good fill density results, yet parts of the pattern are off-grid. Most of them are off by 2nm. We are using KLayout 0.30.2 with IHP's 130nm open PDK and the following Ruby script:
https://github.com/IHP-GmbH/IHP-Open-PDK/blob/main/ihp-sg13g2/libs.tech/klayout/tech/macros/sg13g2_filler_Metal.lym
We added the options only to metal1-3 on the second fill iteration (using the small pattern).
Is the enhanced option of the GUI tool the same as multi_origin? How can we enable this enhanced version from a Ruby script?
Hi @tbenz,
Could you provide some sample layout?
The fill itself does not imply a grid, but it takes original layout vertexes as reference points. If all of them are on-grid, the fill should be on-grid as well.
The fill script you are using is not ideal. There is some room for improvement. You should wait for 0.30.4 and rewrite the script.
Matthias
This is our current chip before filling: https://iis-people.ee.ethz.ch/~tbenz/hati/hati_chip_sealring.gds.gz
And after M1-M5 filling with the following script: https://iis-people.ee.ethz.ch/~tbenz/hati/sg13g2_filler_Metal.lym
Resulting in: https://iis-people.ee.ethz.ch/~tbenz/hati/hati_chip_sealring_filled.gds.gz with many off-grid violations on Metal1 and Metal3.
We are using the default filling scripts from IHP. Do you know if they are planning to adapt their flow to 0.30.4?
Hi Thomas,
I am not quite sure how the actual fill rules need to look like. The Magic-based fill uses a threefold fill pattern, which I have tried to replicate. Here is my script for Metal 1 which I tested on Greyhound and which uses 0.30.4 features and tiled mode parallel on 4 cores:
I am not happy with multi_origin and auto_origin. Both are pretty dumb implementations and in tiled mode, they create visible tile border artefacts. Instead I am using two origins for each fill pattern. That gives a pretty decent homogeneous fill, but also increases your capacitive coupling. Also, with a fixed origin, offgrids should not be an issue. Here is a screenshot:
The script runs a few minutes with your design and greyhound. It's an interactive script (run it after loading the layout) and can be easily extended to cover the other metals and diffusion or poly.
Matthias