Travis Jakl
02/16/2025, 10:23 PMMitch Bailey
02/17/2025, 1:05 AMTravis Jakl
02/17/2025, 3:03 AMMitch Bailey
02/17/2025, 4:31 AMnetgen -batch source lvs.script
Here is a sample lvs.script
that might work for your case.
puts "Reading layout mag/dec24/Priority_Encoder_16t4.spice ..."
set layout [readnet spice mag/dec24/Priority_Encoder_16t4.spice]
set source [readnet spice /dev/null]
puts "Reading source $env(PDK_ROOT)/$env(PDK)/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice..."
readnet spice $env(PDK_ROOT)/$env(PDK)/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice $source
puts "Reading source $env(PDK_ROOT)/$env(PDK)/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice..."
readnet spice $env(PDK_ROOT)/$env(PDK)/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice $source
puts "Reading source xschem/StandardCells/dec24/Priority_Encoder_16t4.spice..."
readnet spice xschem/StandardCells/dec24/Priority_Encoder_16t4.spice $source
lvs "$layout Priority_Encoder_16t4" "$source Priority_Encoder_16t4" $env(PDK_ROOT)/$env(PDK)/libs.tech/netgen/$env(PDK)_setup.tcl
Travis Jakl
02/17/2025, 4:06 PMMitch Bailey
02/17/2025, 5:35 PMXdecap1[5:0]
if there were 6 instances.
You can also modify the setup file to ignore decap cells (but this may cause problems with precheck because precheck checks them).Travis Jakl
02/17/2025, 7:21 PMMitch Bailey
02/17/2025, 11:56 PMFlattening unmatched subcell sky130_fd_sc_hd__decap_12 in circuit Priority_Encoder_16t4 (1)(4 instances)
Flattening instances of sky130_ef_sc_hd__decap_12 in cell Priority_Encoder_16t4 (0) makes a better match
In the schematic, try changing the prefix for the decap_12
cell to sky130_ef_sc_hd__
.
2. The bulk and nwell connections for the decap cells in the schematic should probably be VPWR
and VGND
. Currently the pins appear to be VNB
and VPB
.
(no matching net) |Net: VNB
| sky130_fd_sc_hd__decap_8/VNB = 1
| sky130_fd_sc_hd__decap_3/VNB = 1
| sky130_fd_sc_hd__decap_6/VNB = 1
| sky130_fd_pr__nfet_01v8/4 = 1
|
(no matching net) |Net: VPB
| sky130_fd_sc_hd__decap_8/VPB = 1
| sky130_fd_sc_hd__decap_3/VPB = 1
| sky130_fd_sc_hd__decap_6/VPB = 1
| sky130_fd_pr__pfet_01v8_hvt/4 = 1
Just edit the symbol properties to VPB=VPWR VNB=VGND
.
Let me know if that cleans things up.Travis Jakl
02/18/2025, 5:07 AMTravis Jakl
02/18/2025, 5:09 AMMitch Bailey
02/18/2025, 5:13 AM(no matching net) |Net: VNB
| sky130_fd_sc_hd__decap_8/VNB = 1
|
(no matching net) |Net: VPB
| sky130_fd_sc_hd__decap_8/VPB = 1
Travis Jakl
02/18/2025, 5:34 AMMitch Bailey
02/18/2025, 6:04 AMdecap_12
cell has reversed connections in the schematic.
Net: VPWR |Net: VPWR
...
sky130_ef_sc_hd__decap_12/VPWR = 1 | sky130_ef_sc_hd__decap_12/VNB = 1
|
Net: VGND |Net: VGND
...
sky130_ef_sc_hd__decap_12/VNB = 1 | sky130_ef_sc_hd__decap_12/VPWR = 1
Travis Jakl
02/18/2025, 10:54 PMMitch Bailey
02/18/2025, 11:19 PM.subckt sky130_fd_sc_hd__decap_12 VGND VNB VPB VPWR
vs
.subckt sky130_ef_sc_hd__decap_12 VGND VPWR VPB VNB
The quick and dirty fix is to change the property on the schematic instance from sky130_ef_sc_hd__
(back) to sky130_ef_sc_hd__
. This will cause an unmatch on the cell names and flatten the cells so that LVS should pass.
The other way would be to modify the lvs_format
property on decap_12
symbol to match the spice order. However, this is a pdk file, so anytime the pdk gets updated, you’d have to fix it again. You could make a local copy of the symbol, but I think it should be fixed in the by the pdk owners. I’ll log an issue. Thanks for reporting.Mitch Bailey
02/18/2025, 11:47 PMlibs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice
to match libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice
Can you try that and see if it works?Travis Jakl
02/19/2025, 5:30 AMlibs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice
lead to a successful LVS. Thank you very much for your help!