Can anyone let me know what can be the reason for ...
# xschem
s
Can anyone let me know what can be the reason for the below issue, I downloaded the schematic from somewhere.
t
The schematic probably has hardwired absolute path in it.
You'll need to edit it to fix those ...
s
How to change the path?
t
I usually open it with a text editor and use the replace function to fix them all at once ...
s
You mean .sch file ?
t
yes
s
v {xschem version=3.4.5 file_version=1.2
}
G {}
K {}
V {}
S {}
E {}
N -900 -490 -880 -490 {
lab=#net1}
N -900 -490 -900 -360 {
lab=#net1}
N -840 -460 -840 -440 {
lab=#net1}
N -900 -440 -840 -440 {
lab=#net1}
N -800 -340 -770 -340 {
lab=vinn}
N -840 -550 -840 -520 {
lab=vdd}
N -840 -550 -200 -550 {
lab=vdd}
N -200 -550 -200 -520 {
lab=vdd}
N -840 -490 -680 -490 {
lab=vdd}
N -640 -550 -640 -520 {
lab=vdd}
N -640 -520 -640 -490 {
lab=vdd}
N -840 -520 -840 -490 {
lab=vdd}
N -640 -490 -400 -490 {
lab=vdd}
N -360 -550 -360 -520 {
lab=vdd}
N -360 -520 -360 -490 {
lab=vdd}
N -360 -490 -240 -490 {
lab=vdd}
N -200 -520 -200 -490 {
lab=vdd}
N -730 -390 -730 -370 {
lab=#net2}
N -730 -390 -530 -390 {
lab=#net2}
N -530 -390 -530 -370 {
lab=#net2}
N -640 -460 -640 -390 {
lab=#net2}
N -730 -310 -730 -250 {
lab=#net3}
N -690 -220 -570 -220 {
lab=#net3}
N -730 -280 -680 -280 {
lab=#net3}
N -680 -280 -680 -220 {
lab=#net3}
N -730 -190 -730 -160 {
lab=vss}
N -730 -160 -530 -160 {
lab=vss}
N -530 -190 -530 -160 {
lab=vss}
N -530 -310 -530 -250 {
lab=#net4}
N -730 -220 -730 -190 {
lab=vss}
N -530 -220 -530 -190 {
lab=vss}
N -530 -280 -400 -280 {
lab=#net4}
N -360 -460 -360 -310 {
lab=#net5}
N -360 -280 -360 -250 {
lab=vss}
N -360 -250 -360 -160 {
lab=vss}
N -530 -160 -360 -160 {
lab=vss}
N -360 -340 -240 -340 {
lab=#net5}
N -200 -460 -200 -370 {
lab=vout}
N -200 -370 -200 -340 {
lab=vout}
N -200 -310 -200 -160 {
lab=vss}
N -360 -160 -200 -160 {
lab=vss}
N -900 -300 -900 -160 {
lab=vss}
N -900 -160 -730 -160 {
lab=vss}
N -930 -160 -900 -160 {
lab=vss}
N -930 -550 -840 -550 {
lab=vdd}
N -610 -340 -570 -340 {
lab=vinp}
N -380 -340 -360 -340 {
lab=#net5}
N -440 -340 -440 -280 {
lab=#net4}
N -530 -370 -530 -340 {
lab=#net2}
N -730 -370 -730 -340 {
lab=#net2}
N -200 -410 -180 -410 {
lab=vout}
C {sky130_fd_pr/pfet_01v8.sym} -750 -340 0 0 {name=M1
W=1.08u
L=0.36u
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_01v8
spiceprefix=X
l}
C {sky130_fd_pr/pfet_01v8.sym} -550 -340 0 0 {name=M2
W=1.08u
L=0.36u
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_01v8
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8.sym} -710 -220 0 1 {name=M3
W=0.36u
L=0.36u
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=nfet_01v8
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8.sym} -550 -220 0 0 {name=M4
W=0.36u
L=0.36u
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=nfet_01v8
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8.sym} -660 -490 0 0 {name=M5
W=4.5432u
L=0.36u
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_01v8
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8.sym} -380 -280 0 0 {name=M6
W=1.08u
L=0.36u
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=nfet_01v8
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8.sym} -380 -490 0 0 {name=M7
W=6.5412u
L=0.36u
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_01v8
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8.sym} -220 -340 0 0 {name=M8
W=12.4848u
L=0.36u
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_01v8
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8.sym} -220 -490 0 0 {name=M9
W=27.27u
L=0.36u
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_01v8
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8.sym} -860 -490 0 0 {name=M10
W=27.27u
L=0.36u
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_01v8
spiceprefix=X
}
C {res.sym} -900 -330 0 0 {name=R1
value=34k
footprint=1206
device=resistor
m=1}
C {capa.sym} -410 -340 1 0 {name=C1
m=1
value=0.1p
footprint=1206
device="ceramic capacitor"}
C {lab_pin.sym} -930 -550 0 0 {name=p1 sig_type=std_logic lab=vdd}
C {lab_pin.sym} -930 -160 0 0 {name=p2 sig_type=std_logic lab=vss}
C {lab_pin.sym} -800 -340 0 0 {name=p3 sig_type=std_logic lab=vinn}
C {lab_pin.sym} -610 -340 0 0 {name=p4 sig_type=std_logic lab=vinp}
C {lab_pin.sym} -180 -410 2 0 {name=p5 sig_type=std_logic lab=vout}
C {ipin.sym} -1090 -520 0 0 {name=p6 lab=vdd}
C {ipin.sym} -1090 -480 0 0 {name=p7 lab=vss}
C {ipin.sym} -1090 -440 0 0 {name=p8 lab=vinn
}
C {ipin.sym} -1090 -410 0 0 {name=p9 lab=vinp
}
C {opin.sym} -1140 -370 0 0 {name=p10 lab=vout}
this is my .sch file but I can't see any paths here !!!
t
Ah no, nm, it's not the issue.
For me all the
ipin
/
opin
and stuff like that is under
devices/
in my library ... for whoever saved the design it's at the root which is a bit weird ...
👍 2
s
@Stefan Schippers
s
@Sudeep Gopavaram @tnt 2 solutions (use one or the other, not both) 1. add this line at the end of your xschemrc file
append XSCHEM_LIBRARY_PATH :${XSCHEM_SHAREDIR}/xschem_library/devices
then start xschem and open the schematic. 2. in the xschem terminal do this command after loading the schematic with the missing symbols:
fix_symbols 1
then save the schematic.
The second solution transforms symbol references with no directory into references with one level directory, like:
capa.sym
-->
devices/capa.sym
.
l
The latest xschemrc already contains this path: https://github.com/StefanSchippers/xschem_sky130/blob/cdb5dba83695057cbf2da63b6c41a2570d68d4af/xschemrc#L31 It was added so that schematics created with the sky130 PDK use the same references to the standard symbols as when you create a schematic without the PDK loaded. This means that you can, for example, open testbenches that do not contain PDK-specific devices with a standard xschem setup and still see all the standard symbols. @Sudeep Gopavaram If you can, you should update your PDK and the problem will resolve itself.
s
@Leo Moser even though the method given by stefan worked out but I want to know how can I update my pdk, do I need to install it from scratch or is there some other workaround?
l
It depends on how you have installed the PDK. Did you install it via open_pdks? Then you need to build it from scratch. I like to use volare (https://github.com/efabless/volare) as it simply downloads pre-built versions of the PDK.
👍 1