You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here is a test case of an SRAM array: sramlvs.tar.gz
There is a run script to run the lvs on a 2X2 and a 2X4 array; in the 2X4 array the 2X2 array is a subcell.
For the 2X2 array the lvs is OK but for the 2X4 array it fails and I don't see why.
I am using klayout version 0.27.8
The LVS script has a couple of problems that prevent true hierarchical mode. I was able to modify it so I can achieve match in deep mode (I will tell you how), but the flat problem remains (BTW: "flat" is the default, so adding it does not make a difference).
I have fixed the problem: "consider net names" wasn't fully effective in that case and this created a conflict. This is going to be released in version 0.27.9.
If you use "consider_net_names(false)" the LVS matches. However I'd not recommend that as a workaround as then LVS assignes the wrong bitline polarities due to the symmetry of the latter. Using labels is much better in fact.
Another workaround is to use deep mode and hierarchical matching. As mentioned, several issues prevent the current LVS from running in deep mode and some changes are required:
The substrate does not need to be a solid plate. This will only force flat evaluation. There is "connect_global" for the purpose of generating "overall" nets. Still, "substrate__Sky130" is required as a receiver for the device terminals. It can be empty however:
substrate__Sky130 = polygon_layer
Using the substrate in booleans is not required and forces flat evaluation, so these booleans can be rewritten:
Activity
FatsieFS commentedon Mar 9, 2022
Also tried now without the
flatline but it gives the same result: 2X2 OK, 2X4 fails.klayoutmatthias commentedon Mar 10, 2022
I had a brief look an reproduce the problem.
The LVS script has a couple of problems that prevent true hierarchical mode. I was able to modify it so I can achieve match in deep mode (I will tell you how), but the flat problem remains (BTW: "flat" is the default, so adding it does not make a difference).
I need to debug the issue.
Matthias
klayoutmatthias commentedon Mar 12, 2022
I have fixed the problem: "consider net names" wasn't fully effective in that case and this created a conflict. This is going to be released in version 0.27.9.
If you use "consider_net_names(false)" the LVS matches. However I'd not recommend that as a workaround as then LVS assignes the wrong bitline polarities due to the symmetry of the latter. Using labels is much better in fact.
Another workaround is to use deep mode and hierarchical matching. As mentioned, several issues prevent the current LVS from running in deep mode and some changes are required:
From:
To:
into:
and
into:
(without a cell, "connect_implicit" is only effective at top level)
and
This is the full version of LVS which works for me in hierarchical mode:
Matthias
klayoutmatthias commentedon Apr 24, 2022
Solution released with 0.27.9