<@U01819B63HP> <@U016EM8L91B> <@U017X0NM2E7> Is there a way to generate CDL netlist from xschem sche...
p
@Stefan Schippers @Tim Edwards @Mitch Bailey Is there a way to generate CDL netlist from xschem schematic/spice file which can be used later in LVS?
m
Are you referring to magic/netgen LVS or some other tool? For magic/netgen, Under the simulation menu, be sure the
LVS netlist: Top level is a .subckt
is checked before pressing the
Netlist
button on the top right.
👍 1
p
Yes I will be using magic/netgen LVS
s
@Pranav Lulu xschem generates a netlist suitable for LVS if the option
Simulation->LVS netlist: top level is a subckt
is checked. This modifies slightly the netlist format for schematic vs layout (LVS) comparison. If some components need a special netlist format for LVS a dedicated netlist rule can be given in the symbol with the
lvs_format
attribute. You can copy this attribute from the format attribute used for spice netlisting and make the required changes.
👍 2
1.png
p
@Mitch Bailey @Stefan Schippers Thanks!!
@Stefan Schippers Right now I am getting a netlist but the (ad as pd ps) values are in the equation form. How can we get the direct values so they are only present in netlist.
@Stefan Schippers Happy New Year!! 🎇 How can I achieve the above mentioned thing??
s
@Pranav Lulu After Nov.24th xschem and the xschem_sky130 symbols have been modified by adding a '`lvs_format`' attribute (in addition to
format
that sets the spice netlisting rule) that defines the netlisting rule if
Simulation->LVS netlist: top level is a subckt
is selected. In LVS mode the netlist for a mos transistor looks like:
XM1 net1 G1v8 S B sky130_fd_pr__nfet_01v8_lvt L=0.15 W=1 nf=1 m=1
instead of:
XM1 net1 G1v8 S B sky130_fd_pr__nfet_01v8_lvt L=0.15 W=1 nf=1 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
so area / perimeter params are not generated. The device line contains
L, W, nf and m
which should be enough for checking vs layout. @Tim Edwards if netgen needs also area and perimeter for S/D regions let me know, if it does do i need to present the calculated values in the LVS netlist (or does netgen understand equations?)
@Pranav Lulu if you set explicit values for ad, as, pd, ps. nrd, nrs in the mos instance (by editing its attributes as shown) you get the user specified values and no guessed equations in the SPICE netlist (
LVS netlist: top level is a subckt
not checked)
XM1 net1 G1v8 S B sky130_fd_pr__nfet_01v8_lvt L=0.15 W=1 nf=1 ad=0.5 as=0.5 pd=1.5 ps=1.5 nrd=0.1
+ nrs=0.1 sa=0 sb=0 sd=0 mult=1 m=1
p
@Stefan Schippers Thanks! I guess I need to update Xschem. What else do I need to update?
s
you get updated xschem_sky130 models by updating
open_pdks
. If you don't want to go through the rather long
open_pdks
update then you might want to clone the xschem_sky130 repository and copy the
sky130_fd_pr/
directory replacing the one in the pdk installation
/..../share/pdk/sky130A/libs.tech/xschem/sky130_fd_pr
p
@Stefan Schippers Okay got it.