Ellen Wood
10/20/2023, 1:34 PMvccd1_uq3
has appeared in the user_project_wrapper.gds.spice
netlist. It also appears in the user_project_wrapper.gds.nowell.spice
netlist, along with another strange one called vssd1_uq2
. However, we have no idea where these have come from: We have extracted both our hand drawn TOP_mixed.gds (before it was hardened into user_project_wrapper) and the final user_project_wrapper.gds from Openlane, and neither of these netlists contain that pin (nor can we see it in the layout etc). Any suggestions?Tim Edwards
10/20/2023, 6:45 PM_uqX
suffixes come from running extract unique
in magic. The whole idea of unique net names gets rather problematic. If you label a net, that becomes its name in extraction, but if you label two different nets with the same name, then they both get extracted to the same name and therefore become the same net whether or not they are connected. extract unique
goes and finds any unconnected nets with the same name and then changes the names so that each one is unique. There are two problems with this: (1) The extract unique
method is too aggressive; it does not consider the expansion of any subcells, so that if you have a wire in two pieces that are bridged across by the contents of a subcell, then the two pieces will get two unique names, even though it should be obvious that the net is continuous. (2) The top level cell has pins, and the pin names are probably meaningful in other cell views (like those coming from the schematic), and renaming pins with unique extensions will just cause LVS mismatches.
The sky130 I/O power and ground pads have metal extending into the chip core from both sides of the pad, so they come out as two wires, with a gap in the middle (plus there are some power and ground nets that have multiple pins). So every VDD and VSS net has multiple unconnected pins in the wrapper. If you run extract unique
on this, those pins will get the unwanted extensions that will cause LVS errors. That should be solvable by using extract unique nottopports
instead of extract unique
. You could also probably solve the issue by wiring the pins together in the wrapper cell, although that would be quite a nuisance.Ellen Wood
10/20/2023, 9:10 PMextract unique
. I'll have a look in the layout, and see if I can wire the vdd nets together in any obvious places next week!Tim Edwards
10/21/2023, 1:05 AMextract unique
which is for me to fix it and make a pull request and then get the website maintainers to make the same change to the server.Ellen Wood
10/21/2023, 11:29 AMextract unique
method used (as opposed to the "standard" extraction) because you need to be quite aggressive for the pre tape out checks?Tim Edwards
10/23/2023, 2:14 PMEllen Wood
10/24/2023, 1:38 PMvccd1
and vssd1
power ports from the pre-hardened digital .mag file, plus drawing new vertical vccd1
lines ourselves over on the analog side, to power those devices. Different nets, same names! That pre-check job was for a test structure, but I imagine we will run into the same problem with our real chip, which should be going through the tape out pre-check in a few days.Mitch Bailey
10/27/2023, 1:37 PMcaravel_analog_project_wrapper
) and digitial (default for caravel_project_wrapper
). The analog extraction type uses extract unique nottopports
, while the digital type will give unique names to multiple texts not on the same net.
In your lvs/user_project_wrapper/lvs_config.json
file, you can force top net virtual shorts with
"EXTRACT_TYPE": "analog",