Hi, I'm working with <@U0506JWMLA1> to do LVS on o...
# ieee-sscs-dc-23
a
Hi, I'm working with @Gabriel Maranhão to do LVS on our padframes, but we are unable to do it on individual pads. Gabriel is using klayout gui and I am using klayout and magic/netgen with scripts, but neither of us have managed to get lvs clean. Has anyone gotten a clean lvs on the pads?
j
Maybe @Ashbir Aviat Fadila can give some hints?
m
@aquiles viza Looks like a couple of the diodes are not being extracted correctly.
Copy code
.subckt np_6p0_CDNS_406619531451 MINUS
D0 VSUBS MINUS diode_nd2ps_06v0 pj=82u area=40p
.ends

.subckt pn_6p0_CDNS_4066195314552 w_n120_n120# PLUS
D0 PLUS w_n120_n120# diode_pd2nw_06v0 pj=0.106m area=0.15n
.ends

.subckt np_6p0_CDNS_4066195314553 MINUS
D0 VSUBS MINUS diode_nd2ps_06v0 pj=0.106m area=0.15n
.ends
np_6p0_CDNS_406619531451
and
np_6p0_CDNS_4066195314553
are extracted with only 1 terminal. Try `flatglob`ing the diodes before extracting. Klayout is extracting the mos capacitor as a
C
device instead of the expected
X
device. netgen will work with the netlists in either order, but openlane is setup to use the layout extracted netlist first and the source netlist second.
👍 1
a
It worked, thanks David. I will perform lvs on all pads, if something happens I will ask for help
👏 2
Klayout requires netlists without x prefix, so I think we should avoid the mix between klayout and netgen for now
👍 2
Before a lot of tests, I've found that the only pad that match uniquely is asig_5p0. A bit unfortunate. Some of the pads don't write the top subckt, I'm not sure how to force netgen to write it. In general, all reports indicates the
Device classes ... are equivalent
, one of them writes
Top level cell failed pin matching
but the rest
Netlist do not match
This are the flatglob rules I'm using
Copy code
gds flatglob pmos*
gds flatglob via*
gds flatglob compass*
gds flatglob rectangle*
gds flatglob np_*_*
gds flatglob pn_*_*
gds flatglob nmoscap_*
gds flatglob *nmos_*_*[A-Z]*
gds flatglob *pmos_*_*[A-Z]*
gds flatglob *mim_*_*[A-Z]*
gds flatglob *ppolyf_*_*[A-Z]*
gds flatglob comp018green_*
gds flatglob *diode_nd2ps_*
gds flatglob *diode_pd2nw_*
gds flatglob *cap_nmos_*
gds flatglob *nfet_*
gds flatglob *pfet_*
m
@aquiles viza nice work.
flatglob
only works on leaf cells - cells with no subcells. If cells with unflattened subcells are `flatglob`ed, you may get strange results. You can check the extracted netlists to see which subcircuits are being extracted. I recommend flattening subcircuits that have no explicit ports. In the extracted netlists, these are the subcircuits that only have hierarchical nets as ports (contain
/
) or automatically generated node names (contain
#
).
t
@aquiles viza: This script works for me to run LVS on the
bi_t
I/O cell:
(To my annoyance, I found two separate issues; the PAD label will not connect to the metal unless I annotate the cell with LEF to create a metal area under the label; but reading the LEF will cause port numbers to collide unless I also annotate the layout from SPICE. Now I will have to go track down those bugs. . . )
a
Hi @Tim Edwards, I've modified the routine that loads the GDS, adding the reading of a LEF file and a spice extracted from xschem. Now the LVS works for almost all the devices.
Copy code
# asig_5p0  Final result: Circuits match uniquely.
# cor       Final result: Circuits match uniquely.
# dvdd      Final result: Circuits match uniquely.
# dvss      Final result: Circuits match uniquely.
# fill5     Final result: Circuits match uniquely.
# fill10    Final result: Circuits match uniquely.
# bi_24t    Final result: Circuits match uniquely. Property errors were found.
# bi_t      Final result: Circuits match uniquely. Property errors were found.
# in_c      Final result: Circuits match uniquely. Property errors were found.
# in_s      Final result: Circuits match uniquely. Property errors were found.
# brk2      Final result: Verify:  cell has no elements and/or nodes.  Not checked.
# brk5      Final result: Verify:  cell has no elements and/or nodes.  Not checked.
# fill1     Final result: Verify:  cell has no elements and/or nodes.  Not checked.
# fillnc    Final result: Verify:  cell has no elements and/or nodes.  Not checked.
The problems you mentioned on the last comment can be solved by simply specifying the LEF file and a spice as reference for the port order? The attached files contains the reports and extracted netlists for pads with property errors
👍 1
m
@aquiles viza Nice work! Can you share your lvs script? There seem to be some irrelevant parameters on the devices. The setup file should remove those.