Yusuke Sakemi
02/29/2024, 6:50 AMMitch Bailey
02/29/2024, 9:12 AMYusuke Sakemi
02/29/2024, 11:49 PMMitch Bailey
03/01/2024, 12:49 AMSimulation
-> LVS
-> Use 'spiceprefix' attribute
is checked.Matt Venn
03/01/2024, 3:58 PMMitch Bailey
03/01/2024, 4:57 PMname=M11
L=0.8
W=16
nf=8
mult=1
ad="'int((nf+1)/2) * W/nf * 0.29'"
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
as="'int((nf+2)/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
model=pfet_g5v0d10v5
spiceprefix=X
The symbol master has the following parameters
type=pmos
lvs_format="@spiceprefix@name @pinlist sky130_fd_pr__@model L=@L W=@W nf=@nf m=@mult"
format="@spiceprefix@name @pinlist sky130_fd_pr__@model L=@L W=@W
+ nf=@nf ad=@ad as=@as pd=@pd ps=@ps
+ nrd=@nrd nrs=@nrs sa=@sa sb=@sb sd=@sd
+ mult=@mult m=@mult"
template="name=M1
L=0.5
W=1
nf=1
mult=1
ad=\"'int((nf+1)/2) * W/nf * 0.29'\"
pd=\"'2*int((nf+1)/2) * (W/nf + 0.29)'\"
as=\"'int((nf+2)/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
model=pfet_g5v0d10v5
spiceprefix=X
"
I believe the Simulation
-> LVS
-> Use 'spiceprefix' attribute
selection enables the spiceprefix substitution.
With spiceprefix
disabled, the device would be netlisted as
M2 OUT IN VDD VDD sky130_fd_pr__pfet_01v8 L=0.15 W=2 nf=1 m=5398
with spiceprefix
enabled, you get
XM2 OUT IN VDD VDD sky130_fd_pr__pfet_01v8 L=0.15 W=2 nf=1 m=5398
which will work with the current pdk simulation and LVS setups.Yusuke Sakemi
03/02/2024, 1:16 AMThe Daily Relish
03/02/2024, 10:59 PMThe Daily Relish
03/02/2024, 11:00 PMThe Daily Relish
03/02/2024, 11:00 PMThe Daily Relish
03/02/2024, 11:00 PMThe Daily Relish
03/02/2024, 11:01 PMThe Daily Relish
03/02/2024, 11:03 PMThe Daily Relish
03/02/2024, 11:03 PMThe Daily Relish
03/02/2024, 11:04 PMMitch Bailey
03/03/2024, 12:10 PMMitch Bailey
03/03/2024, 12:14 PM$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hd/spicce/sky130_fd_sc_hd.spice
Try adding this as and include statement in your schematic.Stefan Schippers
03/03/2024, 12:22 PMStefan Schippers
03/03/2024, 12:34 PMlvs_format
attribute in addition to the standard format
attribute. If such an attribute exists and LVS netlist is enabled it will be used instead of format
. If you check the symbol and edit its attributes you will probably see that lvs_format
does not have @spiceprefix
placed before @name
However this was fixed in Jan 3 2023:
commit e5e0ff5c76732ae899d2b96bf556523118a3982b
Author: stefan schippers <stefan.schippers@gmail.com>
Date: Tue Jan 3 14:27:01 2023 +0100
added @spiceprefix before @name in lvs_netlist attributes. @spicepfefix can be disabled with Simulation->Use spiceprefix attribute
The Daily Relish
03/03/2024, 4:55 PMMitch Bailey
03/04/2024, 12:55 AMcode
symbol from the device library. This may not be the best solution for a full chip integration, but it should work in your case.Stefan Schippers
03/04/2024, 1:47 PMYusuke Sakemi
03/05/2024, 5:34 AMStefan Schippers
03/05/2024, 11:12 AMosic-multitools
it looks to me that running iic-osic-setup.sh
again will do an update: see the relevant portion of the script for xschem:
# Install/update xschem
# ---------------------
if [ ! -d "$SRC_DIR/xschem" ]; then
echo ">>>> Installing xschem"
sudo apt build-dep -y xschem
git clone <https://github.com/StefanSchippers/xschem.git> "$SRC_DIR/xschem"
cd "$SRC_DIR/xschem" || exit
./configure
else
echo ">>>> Updating xschem"
cd "$SRC_DIR/xschem" || exit
git pull
fi
make -j"$(nproc)" && sudo make install
so if the src/xschem directory is already present it will update (git pull) and rebuild.Yusuke Sakemi
03/06/2024, 5:12 AMThe Daily Relish
03/06/2024, 7:43 PMThe Daily Relish
03/06/2024, 7:44 PMThe Daily Relish
03/06/2024, 7:44 PMThe Daily Relish
03/06/2024, 7:49 PMMitch Bailey
03/07/2024, 2:18 AMSimulation
-> LVS
-> LVS netlist: top level is a .subckt:
The Daily Relish
03/07/2024, 5:53 PMThe Daily Relish
03/07/2024, 5:53 PMThe Daily Relish
03/07/2024, 5:53 PMThe Daily Relish
03/07/2024, 5:59 PMThe Daily Relish
03/07/2024, 5:59 PMMitch Bailey
03/07/2024, 6:18 PMThe Daily Relish
03/07/2024, 8:15 PMThe Daily Relish
03/07/2024, 8:24 PMThe Daily Relish
03/07/2024, 8:24 PMThe Daily Relish
03/07/2024, 8:30 PMMitch Bailey
03/08/2024, 12:48 AMcomp_layout.spice
but the comp.out
results show comp_layout1.spice
.
Can you share comp_layout1.spice
?The Daily Relish
03/08/2024, 1:59 AMThe Daily Relish
03/08/2024, 1:59 AMMitch Bailey
03/08/2024, 2:02 AMThe Daily Relish
03/08/2024, 2:04 AMThe Daily Relish
03/08/2024, 2:04 AMThe Daily Relish
03/08/2024, 2:05 AMMitch Bailey
03/08/2024, 3:34 AMnetgen -batch lvs "comp_layout1.spice comp_layout" "8bitadc_comp.spice 8bitadc_comp" /home/ece393/open_pdks/share/pdk/sky130A/libs.tech/netgen/sky130A_setup.tcl
Although either order is technically ok, having the layout first matches other flows. You’ll want to specify the top cellnames if they don’t match.The Daily Relish
03/08/2024, 3:59 AMThe Daily Relish
03/08/2024, 4:01 AMThe Daily Relish
03/08/2024, 4:02 AMThe Daily Relish
03/08/2024, 4:02 AMThe Daily Relish
03/08/2024, 4:02 AMMitch Bailey
03/08/2024, 4:12 AMSubcircuit summary:
Circuit 1: comp_layout |Circuit 2: 8bitadc_comp
-------------------------------------------|-------------------------------------------
sky130_fd_pr__nfet_01v8 (5) |sky130_fd_pr__nfet_01v8 (5)
sky130_fd_pr__pfet_01v8 (6) |sky130_fd_pr__pfet_01v8 (6)
c (98) |(no matching element)
sky130_fd_sc_hd__buf_1 (1) |sky130_fd_sc_hd__buf_1 (1)
sky130_fd_sc_hd__inv_1 (1) |sky130_fd_sc_hd__inv_1 (1)
$ (1) |(no matching element)
Number of devices: 112 **Mismatch** |Number of devices: 13 **Mismatch**
Number of nets: 16 **Mismatch** |Number of nets: 14 **Mismatch**
---------------------------------------------------------------------------------------
You can see that the layout has capacitors and some other strange device that’s not in the schematic.
What commands are you using to create the extracted netlist for LVS?
I use
extract no all
extract do aliases
extract do local
extract style ngspice()
extract
ext2spice lvs
The Daily Relish
03/08/2024, 4:24 AMThe Daily Relish
03/08/2024, 4:24 AMThe Daily Relish
03/08/2024, 4:24 AMThe Daily Relish
03/08/2024, 4:25 AMThe Daily Relish
03/08/2024, 8:15 PMThe Daily Relish
03/08/2024, 8:17 PMStefan Schippers
03/08/2024, 9:23 PM~/.xschem/simulations
, unless you change the default location.Mitch Bailey
03/09/2024, 12:16 AMunfortunately that solve my problem of top level cell pins.Not sure what you mean. Could you share your extraction commands and the extracted spice file?
The Daily Relish
03/26/2024, 6:23 PMThe Daily Relish
03/26/2024, 6:24 PMThe Daily Relish
03/26/2024, 6:25 PMStefan Schippers
03/26/2024, 9:27 PM.../pdk/sky130A/libs.tech/xschem/xschemrc
in the directory from where you start xschem. Also set PDK_ROOT
and PDK
environment variables if your open_pdks installation is not in ~/share/pdk
or /usr/local/share/pdk
. For more details see this page.Mitch Bailey
03/27/2024, 12:59 AMq
to get the properties. Make sure the device path is relative and not absolute.