Hi, I'm trying to run BRACOLIN padring tests but n...
# ieee-sscs-dc-23
a
Hi, I'm trying to run BRACOLIN padring tests but ngspice can't find a valid modelname for
pfet_06v0
device. I don't know why it happens if the reference is done on the MODELS block.
g
I downloaded your file, and on my computer it works fine. I'm using gf180mcu PDK version: bdc9412b3e468c102d01b7cf6337be06ec6e9c9a Also, I updated the repo with a few more tests /padframe/openfasoc-io-tb
t
Device names were settled rather "late in the game" when onboarding the GF open PDK, so you have to be using the correct repository. The commit number Gabriel cited above corresponds to open_pdks from January 10.
👍 1
a
I don't know why but in xschem I can't simulate the schematic with the "Simulate" button, but the netlist can be simulated with ngspice and it writes the expected .raw file. It's the first time i've seen this problem.
Copy code
$ xschem -b --rcfile $PDK_ROOT/$PDK/libs.tech/xschem/xschemrc inverter_pads_tran.sch

# NGSPICE from XSCHEM OUTPUT
Note: No compatibility mode selected!


Circuit: ** sch_path: /workspaces/dc23-ltc2-ldo/padframe/pad_analysis/test/inverter_pads_tran.sch

Error on line:
  m.xsup1.x2.m0 xsup1.n4 xsup1.n6 dvdd dvdd pfet_06v0 w=    1.200000000000000e-04     l=    7.000000000000000e-07     as=    5.280000000000000e-11     ad=    3.120000000000000e-11     ps=    2.417600000000000e-04     pd=    1.210400000000000e-04     nrd=    2.167000000000000e-03     nrs=    3.667000000000000e-03     delvto=    0.000000000000000e+00     mulu0=    1.000000000000000e+00     sa=    4.400000000000000e-07     sb=    4.400000000000000e-07     nf=    2.000000000000000e+00     sd=    5.200000000000000e-07     m=    1.000000000000000e+00   
could not find a valid modelname
    Simulation interrupted due to error!
I have no idea what could be the problem. I'm testing with ngspice42 and xschem 3.4.4 and 3.4.5
t
@aquiles viza: The pfet_06v0 model has this:
Copy code
+lmin = 0.5e-6    lmax = 50.01e-6     wmin = 0.3e-6   wmax = 100.01e-6
So it is only defined up to 100um width for a single device. You will need to break that up into multiple fingers in order to simulate your W=120um device.
a
That fet is defined on the pad
dvdd
from the pdk, and it is defined with 2 fingers. Code from testbench:
Copy code
.include $env(PDK_ROOT)/$env(PDK)/libs.ref/gf180mcu_fd_io/spice/gf180mcu_fd_io.spice

Xc1 DVDD DVSS VDD VSS gf180mcu_fd_io__cor
Xf1 DVDD DVSS VDD VSS gf180mcu_fd_io__fill5
Xf2 DVDD DVSS VDD VSS gf180mcu_fd_io__fill10

Xsup1 DVDD DVSS VSS gf180mcu_fd_io__dvdd
Xsup2 DVDD DVSS VDD gf180mcu_fd_io__dvss

Xa1 ASIG5V DVDD DVSS VDD VSS gf180mcu_fd_io__asig_5p0
Firsts lines from DVDD Spice declaration:
Copy code
.SUBCKT gf180mcu_fd_io__dvdd DVDD DVSS VSS
X0 n6 n7 DVDD DVDD pfet_06v0 m=1.0 w=15e-6 l=700e-9 nf=1.0 as=6.6e-12 ad=6.6e-12
+ ps=30.88e-6 pd=30.88e-6 nrd=29.333e-3 nrs=29.333e-3 sa=440e-9 sb=440e-9
+ sd=0.0 dtemp=0.0 par=1
X1 n7 n8 DVDD DVDD pfet_06v0 m=1.0 w=20e-6 l=700e-9 nf=1.0 as=8.8e-12 ad=8.8e-12
+ ps=40.88e-6 pd=40.88e-6 nrd=22e-3 nrs=22e-3 sa=440e-9 sb=440e-9 sd=0.0
+ dtemp=0.0 par=1
X2 n4 n6 DVDD DVDD pfet_06v0 m=1.0 w=120e-6 l=700e-9 nf=2.0 as=52.8e-12 ad=31.2e-12
+ ps=241.76e-6 pd=121.04e-6 nrd=2.167e-3 nrs=3.667e-3 sa=440e-9 sb=440e-9
+ sd=520e-9 dtemp=0.0 par=1
...
The generated testbench spice is simulable when run from command line with ngspice, but not when run from xschem.