klayout LVS isn't set up for sky130, is it?
m
klayout LVS isn't set up for sky130, is it?
m
Filing a bug that docopt isn't installed in openlane so it cannot be run.
Perfect, thanks for the pointer to that.
a
You need to install docopt at your end.
m
I'm trying to use the openlane docker image (for my class)
Copy code
pip install -r requirements.txt
m
(and not have them rebuild the entire docker image)
a
Ah, I see
I see
@donn Could you please help with this?
m
Is there a requirement for klayout version? I'm using 0.28.2 (from OpenLane) and it gives some errors:
Copy code
ERROR: Reading /openlane/sky130_klayout_pdk/sky130_tech/tech/sky130/lvs/sky130.lylvs: XML parser error: error occurred while parsing element in line 31, column 49
ERROR: Reading /openlane/sky130_klayout_pdk/sky130_tech/tech/sky130/lvs/sky130.lylvs: XML parser error: error occurred while parsing element in line 31, column 49
a
I'm not sure why you are getting this.
m
Hm, the sky130_layout_pdk directory structure seems odd compared to other klayout technologies
a
sky130_layout_pdk is just the source. I believe that Volare version of the PDK pulls the data from it.
@donn @Tim Edwards?
m
Ah, so that is what is in openlane/pdks then
a
It's installed from volare
d
It's 8 PM here and I'm tired, I'll take a look tomorrow
a
Volare is the build platform for PDKs.
Openlane/pdk use volare pre-built pdks.
m
yeah
a
@donn Please correct me if I'm wrong.
You should have the lvs in klayout folder in the pdk
m
This is why there is /openlane/pdks/volare/sky130/*
a
sky130/tech/klayout/drc
and lvs should be there as well.
m
That is what I've been using
a
If not, then I believe @Tim Edwards needs to add that to the build process.
t
I just pull klayout files from the repository at efabless, which is the one that you (Amro) said that we should be using (in preference to the one under mabrains):
KLAYOUT_URL = <https://github.com/efabless/sky130_klayout_pdk>
m
Ah, there's some bugs in the sky130.lylvs file. There is a URL included, but it messes with the XML:
Copy code
30 # You should have received a copy of the GNU Affero General Public License
 31 # along with this program.  If not, see <<https://www.gnu.org/licenses/>>.
The error I get is on the "/" in the URL. It's thinking this is an XML tag ending...
a
Thanks @Tim Edwards for confirming.
That's correct.
Could tell the full path of the file that is causing this? @Matthew Guthaus
a
May I ask you how you are running the LVS?
m
I'm not yet. I'm just running klayout.
cd openlane make mount KLAYOUT_HOME=/openlane/pdks/sky130A/libs.tech/klayout klayout
a
This file is used for allowing to run LVS from inside klayout and it's not properly tested.
I think we could rename this file something else to avoid this issue and klayout will work
But you will have to use command line to run LVS.
m
There's also some errors referring to gdsfactory. Is that also a dependency?
Copy code
ERROR: /openlane/pdks/sky130A/libs.tech/klayout/pymacros/cells/via_generator.py:23: No module named 'gdsfactory'
  /openlane/pdks/sky130A/libs.tech/klayout/pymacros/cells/via_generator.py:23
  /openlane/pdks/sky130A/libs.tech/klayout/pymacros/cells/vias.py:21
  /openlane/pdks/sky130A/libs.tech/klayout/pymacros/cells/__init__.py:22
  /openlane/pdks/sky130A/libs.tech/klayout/pymacros/sky130.lym:9 (class ModuleNotFoundError)
m
@Matthew Guthaus before you spend too much time on klayout lvs, you might want to confirm that it can handle hierarchies with cells that do not match exactly. magic will virtually flatten mismatched cells and compare at the parent hierarchy. @Amro Tork Do you have any test results in klayout with cells that don’t match at the cell level, but will match at a higher hierarchy when virtually flattened? From the klayout web site
Copy code
Hierarchical analysis: KLayout got a hierarchical layout processing engine to support hierarchical LVS. Hierarchical processing means that boolean operations happen inside the local cell environment as far as possible. As a consequence, devices are recognized inside their layout cell and layout cells are turned into respective subcircuits in the netlist. The netlist compare will benefit as it is able follow the circuit hierarchy. This is more efficient and gives better debugging information in case of mismatches. As a positive side effect of hierarchical layout processing the runtimes for some boolean and other operations is significantly reduced in most cases.
Hierarchically stable: KLayout won't modify the layout's hierarchy nor will it introduce variants - at least for boolean and some other operations. This way, matching between layout and schematic hierarchy is maintained even after hierarchical DRC operations. Variants are introduced only for some anisotropic operations, the grid snap method and some other features which require differentiation of cells in terms of location and orientation.
m
@Mitch Bailey I'm only using this for my class so that students can learn layout, DRC, and LVS at a cell level. Then use it to view layouts and debug errors.
👍 1
The magic interface has been a large deterrent to new students, so I'm trying this instead.
As an aside, I have LVS of SRAMs working in FreePDK45 using klayout, but I haven't yet used it for sky130. The flattening issue is quite annoying and I'm all too familiar with the limitation.
a
@Mitch Bailey That specific test, we didn’t test. But we have seen both failures on flat and hierarchical levels for small and large designs. We actually demonstrated the use of KLayout usage on a fullchip LVS.
m
Ok. I assumed it was for openram.