It looks like you're new here. If you want to get involved, click one of these buttons!
Hi,
I tried this syntax, but it does not work.
Here I want to check the rule : "Space if at least one metal1 line width is > 10.0 um"
How to write it ?
Thanks, Regards,
Laurent
M1.space(0.23,euclidian).output("M1_space", "Min. Metal1 spacing : 0.23um")
Mbig = M1.interacting(M1.sized(-5.0).sized(5.0))
# Mbig.output("Mbig", "Mbig")
Mbig.separation(M1,0.6,euclidian).output("M1_big_space", "Space if at least one metal1 line width is > 10.0 um : 0.60")
Comments
Hi Laurent,
The separation won't work because of shielding. "Shielding" means that the measurement functions won't look through objects in the path of the distance measurement. Shielding is only effective for polygon layers and in your case it's the small M1 below the big M1 which shields the interaction between big and small.
An obvious solution is to separate M1 into big and small. But then you'll need two checks since there can be big vs. small and big vs. big:
Another way so solve that is to use edge input for which shielding is not enabled:
The disadvantage of this approach is that big-big-interactions are counted twice since there is are left-big to right-small and right-big to left-small interactions.
Allow me another note: I would not use "interact", since that way a big Pad with a think wire would make the thin wire "big" too. I guess this will work too:
Matthias
Thanks Matthias, the error was as usual a silly mistake.
I tried your last method without interact as you are right, it should not take in account the whole wire.
But, it highlights the edge Mbig-Msmall.
So I modified it as follows, and now I got the same errors as Calibre :
Note that I need to code the 'space' check on Mbig_interact and not on Mbig to get the same errors as Calibre ... a bug of Calibre or at least of its foundry implementation
Laurent
Hi Laurent,
you're right - my mistake.
You could also apply the idea of using the edge versions without the shielding and without the interacting:
I have only tried for a simple case and for that it was working.
Regards,
Matthias