https://open-source-silicon.dev logo
#analog-design
Title
# analog-design
s

Stefan Schippers

02/18/2022, 3:14 PM
@User the Simulation -> LVS netlist option will retain the .subckt / .ends lines in the netlist as usually LVS is performed comparing netlists with these lines included. For simulation the top level netlist will have the .subckt / .ends lines commented out otherwise spice simulators will see an empty netlist (kinda like a C program with no main() function). So as far as i know when doing LVS you should enable the Simulation-> LVS netlist option in xschem. What is the error you get? may be the port order is different between xschem/magic or the Magic layout does not have ports in the top level?
j

Jorge Marin

02/18/2022, 3:38 PM
Thanks for the reply @User The terminal displays the following messages:
Copy code
Netgen 1.5.219 compiled on jue 17 feb 2022 16:19:58 -04
Warning: netgen command 'format' use fully-qualified name '::netgen::format'
Warning: netgen command 'global' use fully-qualified name '::netgen::global'
Reading netlist file INV_v1p1.spice
Call to undefined subcircuit sky130_fd_pr__nfet_01v8
Creating placeholder cell definition.
Call to undefined subcircuit sky130_fd_pr__pfet_01v8
Creating placeholder cell definition.
Reading netlist file INV_v1p1_xschem.spice
Call to undefined subcircuit sky130_fd_pr__nfet_01v8
Creating placeholder cell definition.
Call to undefined subcircuit sky130_fd_pr__pfet_01v8
Creating placeholder cell definition.
Reading setup file /usr/local/share/pdk/sky130A/libs.tech/netgen/sky130A_setup.tcl
Model sky130_fd_pr__nfet_01v8 pin 1 == 3
No property mult found for device sky130_fd_pr__nfet_01v8
No property sa found for device sky130_fd_pr__nfet_01v8
No property sb found for device sky130_fd_pr__nfet_01v8
No property sd found for device sky130_fd_pr__nfet_01v8
No property nf found for device sky130_fd_pr__nfet_01v8
No property nrd found for device sky130_fd_pr__nfet_01v8
No property nrs found for device sky130_fd_pr__nfet_01v8
No property area found for device sky130_fd_pr__nfet_01v8
No property perim found for device sky130_fd_pr__nfet_01v8
No property topography found for device sky130_fd_pr__nfet_01v8
Model sky130_fd_pr__nfet_01v8 pin 1 == 3
No property area found for device sky130_fd_pr__nfet_01v8
No property perim found for device sky130_fd_pr__nfet_01v8
No property topography found for device sky130_fd_pr__nfet_01v8
Model sky130_fd_pr__pfet_01v8 pin 1 == 3
No property mult found for device sky130_fd_pr__pfet_01v8
No property sa found for device sky130_fd_pr__pfet_01v8
No property sb found for device sky130_fd_pr__pfet_01v8
No property sd found for device sky130_fd_pr__pfet_01v8
No property nf found for device sky130_fd_pr__pfet_01v8
No property nrd found for device sky130_fd_pr__pfet_01v8
No property nrs found for device sky130_fd_pr__pfet_01v8
No property area found for device sky130_fd_pr__pfet_01v8
No property perim found for device sky130_fd_pr__pfet_01v8
No property topography found for device sky130_fd_pr__pfet_01v8
Model sky130_fd_pr__pfet_01v8 pin 1 == 3
No property area found for device sky130_fd_pr__pfet_01v8
No property perim found for device sky130_fd_pr__pfet_01v8
No property topography found for device sky130_fd_pr__pfet_01v8
Model sky130_fd_pr__nfet_01v8 pin 1 == 3
No property as found for device sky130_fd_pr__nfet_01v8
No property ad found for device sky130_fd_pr__nfet_01v8
No property ps found for device sky130_fd_pr__nfet_01v8
No property pd found for device sky130_fd_pr__nfet_01v8
No property mult found for device sky130_fd_pr__nfet_01v8
No property sa found for device sky130_fd_pr__nfet_01v8
No property sb found for device sky130_fd_pr__nfet_01v8
No property sd found for device sky130_fd_pr__nfet_01v8
No property nf found for device sky130_fd_pr__nfet_01v8
No property nrd found for device sky130_fd_pr__nfet_01v8
No property nrs found for device sky130_fd_pr__nfet_01v8
No property area found for device sky130_fd_pr__nfet_01v8
No property perim found for device sky130_fd_pr__nfet_01v8
No property topography found for device sky130_fd_pr__nfet_01v8
Model sky130_fd_pr__nfet_01v8 pin 1 == 3
No property as found for device sky130_fd_pr__nfet_01v8
No property ad found for device sky130_fd_pr__nfet_01v8
No property ps found for device sky130_fd_pr__nfet_01v8
No property pd found for device sky130_fd_pr__nfet_01v8
No property mult found for device sky130_fd_pr__nfet_01v8
No property sa found for device sky130_fd_pr__nfet_01v8
No property sb found for device sky130_fd_pr__nfet_01v8
No property sd found for device sky130_fd_pr__nfet_01v8
No property nf found for device sky130_fd_pr__nfet_01v8
No property nrd found for device sky130_fd_pr__nfet_01v8
No property nrs found for device sky130_fd_pr__nfet_01v8
No property area found for device sky130_fd_pr__nfet_01v8
No property perim found for device sky130_fd_pr__nfet_01v8
No property topography found for device sky130_fd_pr__nfet_01v8
Model sky130_fd_pr__pfet_01v8 pin 1 == 3
No property as found for device sky130_fd_pr__pfet_01v8
No property ad found for device sky130_fd_pr__pfet_01v8
No property ps found for device sky130_fd_pr__pfet_01v8
No property pd found for device sky130_fd_pr__pfet_01v8
No property mult found for device sky130_fd_pr__pfet_01v8
No property sa found for device sky130_fd_pr__pfet_01v8
No property sb found for device sky130_fd_pr__pfet_01v8
No property sd found for device sky130_fd_pr__pfet_01v8
No property nf found for device sky130_fd_pr__pfet_01v8
No property nrd found for device sky130_fd_pr__pfet_01v8
No property nrs found for device sky130_fd_pr__pfet_01v8
No property area found for device sky130_fd_pr__pfet_01v8
No property perim found for device sky130_fd_pr__pfet_01v8
No property topography found for device sky130_fd_pr__pfet_01v8
Model sky130_fd_pr__pfet_01v8 pin 1 == 3
No property as found for device sky130_fd_pr__pfet_01v8
No property ad found for device sky130_fd_pr__pfet_01v8
No property ps found for device sky130_fd_pr__pfet_01v8
No property pd found for device sky130_fd_pr__pfet_01v8
No property mult found for device sky130_fd_pr__pfet_01v8
No property sa found for device sky130_fd_pr__pfet_01v8
No property sb found for device sky130_fd_pr__pfet_01v8
No property sd found for device sky130_fd_pr__pfet_01v8
No property nf found for device sky130_fd_pr__pfet_01v8
No property nrd found for device sky130_fd_pr__pfet_01v8
No property nrs found for device sky130_fd_pr__pfet_01v8
No property area found for device sky130_fd_pr__pfet_01v8
No property perim found for device sky130_fd_pr__pfet_01v8
No property topography found for device sky130_fd_pr__pfet_01v8
Comparison output logged to file comp.out
Logging to file "comp.out" enabled
Circuit INV_v1p1.spice contains no devices.
Result: Verify:  cell INV_v1p1_xschem.spice has no elements and/or nodes.  Not checked.
Logging to file "comp.out" disabled
LVS Done.
and the comp.out is the following:
Copy code
Equate pins:  cell INV_v1p1.spice and/or INV_v1p1_xschem.spice has no elements.
Cells have no pins;  pin matching not needed.
Device classes INV_v1p1.spice and INV_v1p1_xschem.spice are equivalent.
Verify:  cell INV_v1p1_xschem.spice has no elements and/or nodes.  Not checked.
this is for a simple inverter, the generated spice files are the following:
Copy code
* NGSPICE file created from INV_v1p1.ext - technology: sky130A

.subckt INV_v1p1 VIN VOUT VDD VSS
X0 VOUT VIN VSS VSS sky130_fd_pr__nfet_01v8 ad=6.2e+11p pd=5.24e+06u as=3.3e+11p ps=2.66e+06u w=1e+06u l=150000u
X1 VOUT VIN VDD VDD sky130_fd_pr__pfet_01v8 ad=1.28e+12p pd=1.056e+07u as=9.9e+11p ps=7.98e+06u w=1e+06u l=150000u
X2 VSS VIN VOUT VSS sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=1e+06u l=150000u
X3 VDD VIN VOUT VDD sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=1e+06u l=150000u
X4 VOUT VIN VDD VDD sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=1e+06u l=150000u
X5 VOUT VIN VDD VDD sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=1e+06u l=150000u
X6 VDD VIN VOUT VDD sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=1e+06u l=150000u
X7 VDD VIN VOUT VDD sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=1e+06u l=150000u
.ends
Copy code
** sch_path: /home/jmarin/Documents/SKY130/SDC_SKY130_MPW5/xschem/INV_v1p1.sch
.subckt INV_v1p1 VIN VDD VSS VOUT
*.PININFO VIN:I VDD:B VSS:B VOUT:O
XM1 VOUT VIN VSS VSS sky130_fd_pr__nfet_01v8 L=0.15 W=2 nf=2 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
+ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
+ sa=0 sb=0 sd=0 mult=1 m=1
XM2 VOUT VIN VDD VDD sky130_fd_pr__pfet_01v8 L=0.15 W=6 nf=6 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
+ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
+ sa=0 sb=0 sd=0 mult=1 m=1
.ends
.end
s

Stefan Schippers

02/18/2022, 3:56 PM
@User for what i can see there is a port order mismatch between xschem and magic. You can fix this in the xschem inverter symbol, select the pin that should be netlisted first (VIN) (the small red square symbol), press 'Shift-S' and set its index number to 0 (first pin), then go to the second pin (VDD) and by using Shift-S you set its index to '1' and so on in order to match Magic pin order.
j

Jorge Marin

02/18/2022, 5:41 PM
@User, thanks for the feedback I fixed the pin order but I get a similar mismatch report
s

Stefan Schippers

02/18/2022, 9:42 PM
Jorge, I think the point is netgen does not have access to the spice subcircuit definitions. according to the log:
Copy code
Call to undefined subcircuit sky130_fd_pr__nfet_01v8
Call to undefined subcircuit sky130_fd_pr__pfet_01v8
These errors are printed for both xschem and magic netlists. Try these options, just for investigation: 1. rename the leading 'X' on each device line to 'M' (for xschem netlist you can simply remove the 'X') and re-run netgen. 2. If above fails ask someone what is the standard procedure for comparing layout vs schematic, may be some needed file (with the definitions of the mos subcircuits) is missing.
r

Ryan R

05/13/2022, 9:05 AM
hi . facing the same thing...which solution worked
2 Views