It looks like you're new here. If you want to get involved, click one of these buttons!

Hi,

How to write a DRC check for contact/via with a minimum enclosure on at least 2 opposite side ?

For instance, a via has to be enclosed by metal by 0.01µm on 2 opposite sides and can be 0 or whatever positive value on the2 other sides.

Best regards,

Laurent

## Comments

Hi Laurent,

there is no out-of-the-box function yet, but there are several solutions based on the available features.

I hope this code explains two of them:

Best regards,

Matthias

Hi all,

I see 4 ways to satisfy contact / via enclosure rule (as shown below). I am trying to write a DRC check for contact / via with enclosure but I have not thought of a way to check these 4 cases. Can you help me ?

Thank you so much

Have you tried to options mentioned in my first reply?

Matthias

Hi Matthias,

I tried to options mentioned in your first reply. But it does not cover 2 case that I circle below.

Best regards,

Nam

Hi,

Maybe you need to explain what's the expected outcome.

I rebuilt your sample (file attached) and with the script above I get this result:

which looks perfectly fine to me. According to your description only the rightmost one violates the rule because it's the one where only one side encloses the via more than 10nm.

Matthias

Hi sir,

Sorry for my ambiguity. According to rules file, I can draw metal enclose via by 2 ways: (enclosure 4 edge >= 0.02 um) or (2 opposite sides> = 0.025um, other 2 edges> = 0.005um)

I have created the wrong case in the attachment.

Thanks sir

Nam

Hi Nam,

Here is the way I have encoded it and used for some time in an other process, so I have adjusted the sizes to your process :

I cannot remember exactly the layout case that push me to add "with_area" during the debug, but I guess it was to find the opposite edges.

Maybe, our master Matthias has a more efficient way to code it ?

Laurent

I wish I had ...

I am considering the code a special option inside the enclosure check. I think that is basically the most efficient way. I'm just wondering how much variations there are and how flexible such an option has to be.

Best regards,

Matthias