Hello All, I’m certain I’m being dense somewhere ...
# lvs
m
Hello All, I’m certain I’m being dense somewhere and missing a key step. I’ve created a small toy problem of a two output demuxer to make sure I can run LVS with sky130 standard cells and I’m struggling to get LVS to pass. The spice netlist extraction from Magic simulates as expected so I believe that I’ve got something in the netlist exportation wrong. Could one of you perhaps lend a hand? I would also love a quick explanation on what the “dummy_x” nets are. Thank you so much! I’ve attached the export script, netlist from Xschem, the netlist from Magic and the LVS output for convenience. I have been running netgen
lvs
with the config file
…/libs.tech/netgen/sky130A_setup.tcl
. Thanks!
m
Hi Micah, there may be several problems. First, your xschem netlist does not have a top subckt. Before you create the netlist, select
Simulation
->
LVS netlist: Top level is a .subckt
Does that make a difference? What command are you using for netgen?
m
Wow! thank you for your quick reply! Previously in netgen I had been running
lvs demux2_xschem.spice "demux2.spice demux2" sky130A_setup.tcl comp.out
*removing all of the extra pathing due to my directory structure… Now after setting a top level .subctk netgen crashes with a segmentation fault.
Here is the new xschem spice netlist
m
Try
lvs "demux2_xschem.spice demux2" "demux2.spice demux2" sky130A_setup.tcl comp.out
m
Ok, that prevents the segmentation fault and runs. the output is similar though slightly different. Here is the new comp.out.
Is it correct to interpret the output that the since the names of the subcircuit pins of the standard cells are different, netgen thinks the standard cells are different?
m
xschem needs to create a hierarchical netlist.
Do you get any error messages when you netlist?
m
Hmm…that makes sense.
I do not have the “Flat netlist” option selected. Nor do I get any errors.
Here are the current options and the schematic settings.
m
You could temporarily add these stubs to
demux2_xschem.spice
to do a quick abstract lvs.
Copy code
.subckt sky130_fd_sc_hd__and2_0 A B VGND VNB VPWR VPB X
.ends

.subckt sky130_fd_sc_hd__inv_1 A VGND VNB VPWR VPB Y
.ends
When you select an and gate and press
e
do you descend to a schematic?
m
Oh, that works!
Ah, no. I get the error:
m
That's what you need to fix, then.
m
Perfect! Thank you! I will work on that.
m
Are you sure you don't get any error (warning) messages when netlisting? There should be a pop up window displaying any problems.
m
If I intentionally make a mistake like unconnecting a label, than I get a popup window, but otherwise no.
🤔 1
Just for extra information that is likely irrelevant, I’m using Dr. Pretl’s Docker container on this machine. So, looking at the directory xschem is searching for the schematic, it’s the directory installed by openPDK that is: https://github.com/StefanSchippers/xschem_sky130/tree/main/sky130_stdcells which doesn’t include any schematics. But I also didn’t think schematics of the standard cells were needed since they are characterized in spice, right? However, the .subckt definition is needed by lvs?
Ah, Ok, I figured it out. You need to include the standard cells
.subckt
definition in the xschem schematic. So for me (being lazy and using absolute paths) adding
.include /foss/pdk/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice
in a code block did the trick.
I still can’t descend into the schematic of the standard cell, but the LVS works now….do schematics for the standard cells exist in xschem?
m
They do for me. But setting the look up path may be necessary.
m
Fascinating! What are they installed with or where are they located for your installation? (I know it will be different, but I’m just curious where they came from).
Also, Thank you so much for your help!
👍 1
m
The
xschemrc
file contains the library definitions.