stefanschippers / xschem_sky130 Goto Github PK
View Code? Open in Web Editor NEWXSCHEM symbol libraries for the Google-Skywater 130nm process design kit.
License: Apache License 2.0
XSCHEM symbol libraries for the Google-Skywater 130nm process design kit.
License: Apache License 2.0
i have an issue when try to simulate the Reram-tb utilizing xscehm and ngspice. i encounter the following error when trying to simulate the reram and check the waveform uisng ngspice: % l_s_d(): Symbol not found: /home/schippes/share/xschem/xschem_library/devices/vsource.sym
l_s_d(): Symbol not found: /home/schippes/share/xschem/xschem_library/devices/vsource.sym
Hoever, the library for the reram is installed with other sky130 libraries in my local directory not the path given in the error message.
when I press on the voltage source and edit the path for vsource to be my local directory for vsource I got the following error:
Circuit: ** sch_path: /home/eda_work/eman/hassan/open_pdks/sources/xschem_sky130/sky130_tests/tb_reram.sch
Error on line 3 or its substitute:
n1 top 0 sky130_fd_pr_reram__reram_model
unknown device type - error
The simulation interrupted due to an error!
Also, when cant get the Netlist for the design when I press the Create Netlist button?!.
I am totally new to this technology and I would appreciate your help.
Thank you.
If I try to run it this happens.
NGSPICE Log:
ngspice -r "serdes/resisor_issue.raw" serdes/resisor_issue.spice
******
** ngspice-34 : Circuit level simulation program
** The U. C. Berkeley CAD Group
** Copyright 1985-1994, Regents of the University of California.
** Copyright 2001-2020, The ngspice team.
** Please get your ngspice manual from http://ngspice.sourceforge.net/docs.html
** Please file your bug-reports at http://ngspice.sourceforge.net/bugrep.html
** Creation Date: Sat Mar 6 03:53:35 UTC 2021
******
Compatibility modes selected: hs a
Circuit: **.subckt resisor_issue
Error: unknown subckt: xr1 0 net1 sky130_fd_pr__res_generic_m1 w=1 l=1 mult=1 m=1
Simulation interrupted due to error!
ngspice 1 ->
Netlist (my install path is /opt/pdk_root, other models like transistors work):
**.subckt resisor_issue
V2 net1 GND vdd_volts
XR1 GND net1 sky130_fd_pr__res_generic_m1 W=1 L=1 mult=1 m=1
**** begin user architecture code
.temp 125
.param vdd_volts=1.65
.param vddio_volts=3.0
.control
tran 0.01ns 20ns
write
.endc
.param mc_mm_switch=0
.lib "/opt/pdk_root/sky130A/libs.tech/ngspice/sky130.lib.spice" ss
**** end user architecture code
**.ends
.GLOBAL GND
** flattened .save nodes
.end
diff res_generic_m1.sym /opt/pdk_root/open_pdks/sources/xschem_sky130/sky130_fd_pr/res_generic_m1.sym
20c20
< format="@spiceprefix@name @pinlist sky130_fd_pr__@model W=@W L=@L m=@mult"
---
> format="@spiceprefix@name @pinlist sky130_fd_pr__@model W=@W L=@L mult=@mult m=@mult"
25c25
< spiceprefix=R
---
> spiceprefix=X
UPD: I verified that m= parameter works.
Hi @StefanSchippers ,
Regarding the xschem symbols provided for the sky130_fd_sc_hd
standard cell library, is there a means by which someone can see a symbol's underlying transistor-based schematic?
Thank you!
in the top.sch are links to a few examples. but i think the only one that had some ESD-protection was the buck-converter, and that didnt had any bonding-pads and also no ESD-protection-diodes, only MOSFETs.
is there some example available using some analog and some digital IOs with all the necessary protection and bonding pads?
Hi, I was trying to run the patch command but getting this below error .
I already have openalne install in my system , so i was using this patch command in my openlane directory where pdks are install.
Can you please let me know how to solve this issue ?
File to patch:
Hi Stefan ,
Based on your video tutorial , i have installed xschem and ngspice with sky 130.
Also applied the patch as shown in the video.
patching file cells/pfet_01v8_mvt/sky130_fd_pr__pfet_01v8_mvt.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__ff.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__fs.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__leak.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__sf.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__ss.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt_leak.pm3.spice
patching file cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt.pm3.spice
patching file cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0.pm3.spice
patching file cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0__subcircuit.pm3.spice
patching file models/r+c.mrp1monte.spice
But still getting error while running ngspice :
sky130_fd_pr__nfet_g5v0d10v5__kvth0_diff} lkvth0={0+sky130_fd_pr__nfet_g5v0d10v5__lkvth0_diff} wkvth0={0+sky130_fd_pr__nfet_g5v0d10v5__wkvth0_diff} pkvth0=0.0 llodvth=0.0 wlodvth=1.0 stk2=0.0 lodk2=1.0 lodeta0=1.0 ku0={0+sky130_fd_pr__nfet_g5v0d10v5__ku0_diff} lku0={0+sky130_fd_pr__nfet_g5v0d10v5__lku0_diff} wku0={0+sky130_fd_pr__nfet_g5v0d10v5__wku0_diff} pku0=0.0 llodku0=0.0 wlodku0=1.0 kvsat={0+sky130_fd_pr__nfet_g5v0d10v5__kvsat_diff} steta0=0.0 tku0=0.0
Original line no.: 0, new internal line no.: 16543:
Cannot compute substitute
Original line no.: 0, new internal line no.: 16544:
Undefined number [w]
Original line no.: 0, new internal line no.: 16544:
Expression err: lwmult)))} dtox=0.0 ndep=1.7000000000000000e+17 nsd=1.0e+20 rshg=0.1 rsh=1.0 vth0={0.789731232828288+sky130_fd_pr__nfet_g5v0d10v5__vth0_slope_spectre*(sky130_fd_pr__nfet_g5v0d10v5__vth0_slope/sqrt(lwmult))} lvth0=2.9729
Thanks
For some reason, the variable here errors out. Version: e34045b
Code:
xschem_sky130/sky130_tests/test_inv.sch
Line 117 in e34045b
I was watching your video to install magic and skywater pdk, but the links were not the same in open_pdks
I installed magic and then skywater pdk as described withe ./configure and make
Got this error with make install. Can you please help with this
cp: cannot create regular file '/usr/local/bin/magic': Permission denied
make[2]: *** [Makefile:87: /usr/local/bin/magic.sh] Error 1
make[2]: Leaving directory '/home/prabha/projects/foundry/skywater-pdk/magic/tcltk'
make[1]: *** [Makefile:94: install-tcl-real] Error 2
make[1]: Leaving directory '/home/prabha/projects/foundry/skywater-pdk/magic'
make: *** [Makefile:91: install-tcl] Error 2
prabha@DESKTOP-E32V3A5:~/projects/foundry/skywater-pdk/magic$
Hi @StefanSchippers ,
Regarding the use of sky13_fd_sc_hd
standard cell library components in xschem and running ngspice, how do we setup ngspice to find the corresponding subckt definitions?
Upon trying both TT_MODELS
and Corner: tt
packages from the xschemrc file, I receive "unknown subckt errors".
Thank you!
I see there are some import scripts (verilog,spice) in the folders, but a set of directions to import other libraries will be helpful.
Kindly point to specific files in case I missed the same. Is it possible to show the import process of the SKY130 itself and hooks to modify import parameters (in a video)?
Edit: I do see the example for spice import for the hash (https://github.com/StefanSchippers/xschem_sky130/tree/main/decred_hash_macro) Let me know if this is the the template to be followed
Hi Stefan!
First of all, thank you very much for your work on xschem!
I've a question and maybe a request for change:
By default, the xschem library is installed under ${XSCHEM_SHAREDIR/xschem_library/
and contains the devices
folder with all of the default symbols.
By default, $XSCHEM_LIBRARY_PATH
points to ${XSCHEM_SHAREDIR/xschem_library/devices
.
If we start xschem and place a vsource.sym
, it simply points to vsource.sym
.
The xschemrc for sky130 sets the XSCHEM_LIBRARY_PATH
to the following:
append XSCHEM_LIBRARY_PATH ${XSCHEM_SHAREDIR}/xschem_library
As you can see, the last part devices
is omitted. If we start xschem, load the sky130 xschemrc and place a vsource.sym
, it points to devices/vsource.sym
.
This is not optimal, because if you open this schematic without the sky130 xschemrc sourced, none of the symbols are displayed correctly. If the sky130 xschemrc would include ${XSCHEM_SHAREDIR}/xschem_library/devices
, then you could at least see all of the default symbols. This is really useful when looking at a testbench that doesn't even contain any sky130 symbols (but was created with the sky130 xschemrc sourced).
Therefore my question is, was this change intentional or just an oversight when creating the xschemrc?
I know the improvement by correcting it is not huge, but I believe every little bit counts.
The problem with this fix is that it would beak the default symbols for all sky130 designs.
I think there are several ways to tackle this problem:
Just change it and don't care for backwards compatibility. (Bad in my opinion)
Add append XSCHEM_LIBRARY_PATH ${XSCHEM_SHAREDIR}/xschem_library/devices
before append XSCHEM_LIBRARY_PATH :${XSCHEM_SHAREDIR}/xschem_library/
so that the correct symbol library is shown first when inserting a symbol. New designs created for sky130 will probably use the correct path. Disadvantage: there are two paths for the default library and it will take time until new designs use the correct path.
Just change it and add some kind of automatic conversion to xschem. This could be some specific hook for sky130 or a change in the logic how symbol paths are saved (maybe always use the shortest path if two entries in XSCHEM_LIBRARY_PATH
point to the symbol).
What do you think?
The IHP PDK is still in it's infancy, but its xschemrc has the same issue. So as long as not many designs have been created with the IHP PDK, this could still be changed.
Thanks!
Leo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.