Hi there, I'm running into the following error whe...
# gf180mcu
t
Hi there, I'm running into the following error when simulating a synthesized design with ngspice (netlist attached)...
Copy code
tom@tom:~/repos/projects/openwave$ ngs pll tb_pfd
setup_tcp_xschem: problems listening to TCP port: 2021
couldn't open socket: address already in use


Note: Compatibility modes selected: hs a

Warning: m=xx on .subckt line will override multiplier m hierarchy!


Circuit: 

Error: unknown subckt: x1.xfiller_13_144.x0 vdd x1.xfiller_13_144.a_124_375# x1.xfiller_13_144.a_36_472# vdd x1.xfiller_13_144.pfet_06v0 <http://x1.xfiller_13_144.ad|x1.xfiller_13_144.ad>=1.0736p x1.xfiller_13_144.pd=6.64u <http://x1.xfiller_13_144.as|x1.xfiller_13_144.as>=0.5368p <http://x1.xfiller_13_144.ps|x1.xfiller_13_144.ps>=3.32u x1.xfiller_13_144.w=1.22u l=1u
    Simulation interrupted due to error!

Note: No ".plot", ".print", or ".fourier" lines; no simulations run
I have the following included in my top level spice dec but it still seems to be unable to find the 6v fets as far as i can tell
Copy code
.include "/home/tom/repos/edalibs/pdks/gf180mcu/gf180mcuC/libs.tech/ngspice/design.ngspice"
.lib "/home/tom/repos/edalibs/pdks/gf180mcu/gf180mcuC/libs.tech/ngspice/sm141064.ngspice typical
.lib "/home/tom/repos/edalibs/pdks/gf180mcu/gf180mcuC/libs.tech/ngspice/smbb000149.ngspice typical"
Anyone have any ideas? Thanks in advance, Tom
p
seems like it can't find
xfiller_13_144
but you can see it in the netlist you linked
XFILLER_13_144 VDD VSS VDD VSS gf180mcu_fd_sc_mcu7t5v0__fillcap_8
s
I was able to simulate the netlist. I had to uncomment the .subckt pfd line and related .ends line to avoid an empty netlist (no instances). SImulation of course is meaningless since there are no stimuli but no errors.
t
@Tom: Like Stefan, I had no difficulty simulating this netlist (I created a top-level wrapper for it and ran a
.op
). The error message indicates that it cannot find a subcircuit for
pfet_06v0
. That should be in your included file
sm141064.ngspice
at line 47062:
Copy code
.subckt pfet_06v0 d g s b w=1e-5 l=5e-7
+ as=0 ad=0 ps=0 pd=0 nrd=0 nrs=0 par=1 dtemp=0
+ sa=0 sb=0 nf=1 sd=0 m=1
...
What do you see in file
/home/tom/repos/edalibs/pdks/gf180mcu/gf180mcuC/libs.tech/ngspice/sm141064.ngspice
?
t
I seem to have different content in that area
Copy code
47055 m0 d g s b nmos_6p0 w=w l=l as=as ad=ad ps=ps pd=pd nrd=nrd nrs=nrs
47056 +delvto='mis_vth*sw_stat_mismatch'  sa=sa sb=sb nf=nf sd=sd
47057 .ends nmos_6p0
47058 *------------------------------------------------------------------------
47059 .subckt pmos_6p0 d g s b w=1e-5 l=5e-7
47060 + as=0 ad=0 ps=0 pd=0 nrd=0 nrs=0 par=1 dtemp=0
47061 + sa=0 sb=0 nf=1 sd=0 m=1
47062 
47063 .param
47064 + par_vth=0.01051 
47065 + par_k=0.00517 
47066 + par_l=3e-7
47067 + par_w=-4e-7
47068 + par_leff='l-par_l'
47069 + par_weff='par*(w-par_w)'
47070 + p_sqrtarea='sqrt((par_leff)*(par_weff))'
47071
there is a
pmos_6p0
on a near by but different line number and no
pfep
. My open_pdks git hash is
Copy code
commit e6f9c8876da77220403014b116761b0b2d79aab4 (HEAD -> master, tag: 1.0.393, origin/open_pdks-1.0, origin/master, origin/HEAD)
and openlane
Copy code
commit ce916510de89a037889e06ab16c00c4101f77d2f (HEAD -> master, tag: 2023.02.08, origin/master, origin/HEAD)
t
The difference between the names
pfet
and
pmos
is what's causing the issue. The open_pdks version number is current, but that won't necessarily tell you what is the version of the
gf180mcu_fd_pr
library. Just before I tested the simulation myself, I deleted all the content of
open_pdks/sources/gf*
and ran "make" to let it re-clone the open PDK from scratch. Maybe you set up the
configure
for open_pdks pointing to a pre-existing (and outdated) version of the PDK?
Copy code
Tim@borodin(gf180mcu_fd_pr)> git log
commit 8132b52f3056349efe5951f3deb9581281956e00 (grafted, HEAD -> main, origin/main, origin/HEAD)
Author: Amro Tork <74936860+atorkmabrains@users.noreply.github.com>
Date:   Mon Feb 13 10:44:24 2023 +0200

    Merge branch 'mabrains:main' into main
The commit for each library is found in open_pdks after building (before installing) in `gf180mcu/gf180mcuC/.config/nodeinfo.json`:
Copy code
"primitive": {
        "gf180mcu_fd_pr": "8132b52f3056349efe5951f3deb9581281956e00"
    },
t
I see. Ok I'll check that later tonight. I usually do a git clean fdx on open pdks before pulling followed by a configure, make, etc... Would that not have the same effect and pull in the latest repos?
t
Try
make distclean
to delete the cloned sources, or
make update
to do a git pull on each of them. open_pdks puts the cloned repositories into subdirectory sources/, but a git pull on open_pdks itself will not overwrite those, so an update of those PDKs has to be done manually or by
make update
from within open_pdks.
t
I think that may have been the problem
Copy code
tom@tom:~/repos/edatools/open_pdks/sources/gf180mcu_fd_pr$ git log -1
commit 74e4ec59b55bcf5be2f153abff8519d15ebe21fa (grafted, HEAD -> main, origin/main, origin/HEAD)
Author: Tim 'mithro' Ansell <tansell@google.com>
Date:   Fri Nov 4 11:12:05 2022 -0700

    Merge pull request #50 from umarcor/umarcor/ci-klayout
    
    ci/Tests: bump Klayout to 0.27.10
looks like
git clean -fdx
may not have cleaned out the sources folder for some reason. running a
make distclean && make update && make install
now to see if that fixes the issue
I don't know if this is interesting to you @Tim Edwards but before I did
Copy code
make distclean
I did
Copy code
make update && make install
(I just forgot the
make distclean
the first time that's all). Anyway, the update && install did update the repos in sources but then still installed the old version of the ngspice file without the
pfet
. I then tried the
make distclean
but my computer froze and corrupted my repo so i had to remove the whole of open_pdks and start a fresh so I don't know if that would have fixed it. I'm now rebuilding the pdk from a fresh clone of open_pdks
t
@Tom: (1) You either do
make distclean
to get rid of the cloned repositories or
make update
to update them. You would not want to do both. (2) I think the underlying problem here is that we took the unusual step of changing the repository from Google to an Efabless fork (specifically the gf180mcu_fd_pr repository) because the Google repository was falling way behind our development. That is probably why the git update failed both for you and for the Makefile, because the entire repository changed. So
make distclean
was the only meaningful course of action in this case. At this point, I'm not sure what all the updating did to corrupt everything, but given that you already blew it all away and started clean, I'm going to assume that worked, and not worry about it too much.
t
Yes, I finally got it installed again, thank you @Tim Edwards. It took a while as for some reason I had some issues while downloading while running make with premature EOFs and closed connections. Not sure of the cause since my connection seemed very stable but it looks like I now have the correct model. I think I was massively out of date. Thanks for the help in getting it fixed