How to find floating metals (metals that are not connected to diffusion or poly or pins) in layout using SVRF?

How to find floating metals (metals that are not connected to diffusion or poly or pins) in layout using SVRF?

Hi,

I assume what you mean is M1 and M2 that mutually intersect a VIA1 shape do not touch diffusion or are not on the same net as diffusion.

If we are talking purely geometric connectivity (not electrical), you could do something like this:

// get metals outside of diffusion

m1_outside_diff = M1 OUTSIDE DIFFm2_outside_diff = M2 OUTSIDE DIFF

// get vias inside both metals and outside diffusion

v1_in_m2_m1 = (VIA1 INSIDE m2_outside_diff) INSIDE m1_outside_diff

// get metals outside diffusion that enclose appropriate vias

m2_enc = m2_outside_diff ENCLOSE v1_in_m2_m1

m1_enc = m1_outside_diff ENCLOSE v1_in_m2_m1

// desired metals on the same layer

m1_m2_not_diff = m1_enc OR m2_enc

If we are talking shapes on the same net, then let's assume this is specified:

CONNECT M1 M2 BY VIA1

and that is the only way M1 and M2 are connected electrically. Then you could do something like this:

// the following also finds M1 shapes not intersecting M2

m1_not_diff = NET AREA RATIO M1 DIFF == 0

// ensure m1_not_diff intersects M2

m1_not_diff_with_m2 = m1_not_diff NOT OUTSIDE M2

// the following finds M2 on the same net as m1_not_diff

m2_not_diff = NET AREA RATIO M2 m1_not_diff > 0

// metals not on the same node as diffusion

m2_m1_not_diff = m2_not_diff OR m1_not_diff_with_m2

dan

Hi Sharu,

The answer to this depends on what you mean by "not connected." If it simply means to find something like metal1 that doesn't touch diffusion or poly, then you could do this:

metal1_nodiff = metal1 NOT INTERACT diffusion

metal1_iso = metal1_nodiff NOT INTERACT poly

If it means to find something like metal1 that has no diffusion or poly on the same net, then you could do this:

metal1_iso = NET AREA RATIO metal1 OVER diffusion poly == 0

As for pins, it would depend on what the pin layers are, but these could be added to the operations above.

dan