<@U01819B63HP> <@U016EM8L91B> <@U01EK2VDMDG>, is this the latest for gf180mcu <https://github.com/go...
t
@Stefan Schippers @Tim Edwards @Amro Tork, is this the latest for gf180mcu https://github.com/google/globalfoundries-pdk-libs-gf180mcu_fd_pr/tree/9f992d5a9186d1f7820c58f039c484ad35b2edea/cells/xschem/symbols ? I don't thing open_pdks is pulling it in. e.g. I updated the PDK the other day and I have had to create my own resistor symbol (which I was going to push back) but it looks like the link above contains one
a
No, please use Efabless pr one
t
@Amro Tork, this one... https://github.com/efabless/globalfoundries-pdk-libs-gf180mcu_fd_pr/tree/main/cells/xschem/symbols ? @Tim Edwards I don't think open_pdks is picking this up
actually, it may be but the repo. is missing the ppollyf_u_1k symbol
I have created one here:
Copy code
v {xschem version=3.4.5 file_version=1.2

* Copyright 2022 GlobalFoundries PDK Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     <https://www.apache.org/licenses/LICENSE-2.0>
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.

}
G {}
K {type=res
format="@spiceprefix@name @pinlist @model r_width=@W r_length=@L par=@np s=@ns"
template="name=R1
W=1e-6
L=1e-6
model=ppolyf_u_1k
spiceprefix=X
np=1
ns=1"
}
V {}
S {}
E {}
L 4 0 20 0 30 {}
L 4 0 20 7.5 17.5 {}
L 4 -7.5 12.5 7.5 17.5 {}
L 4 -7.5 12.5 7.5 7.5 {}
L 4 -7.5 2.5 7.5 7.5 {}
L 4 -7.5 2.5 7.5 -2.5 {}
L 4 -7.5 -7.5 7.5 -2.5 {}
L 4 -7.5 -7.5 7.5 -12.5 {}
L 4 -7.5 -17.5 7.5 -12.5 {}
L 4 -7.5 -17.5 0 -20 {}
L 4 0 -30 0 -20 {}
B 5 -2.5 27.5 2.5 32.5 {name=M dir=inout propag=1 pinnumber=2}
B 5 -2.5 -32.5 2.5 -27.5 {name=P dir=inout propag=0 pinnumber=1}
B 5 -22.5 -2.5 -17.5 2.5 {name=B dir=inout pinnumber=3}
T {@model} 15 -21.25 0 0 0.2 0.2 {}
T {B} -15 -12.5 0 1 0.15 0.15 {layer=7}
T {@spiceprefix@name} 15 -33.75 0 0 0.2 0.2 {}
T {@W / @L
ns=@ns
np=@np} 15 -8.75 0 0 0.2 0.2 {layer=13}
@Stefan Schippers, @Amro Tork, @Tim Edwards whats the best way to get this into the lib? should I submit a pull request?
a
That's correct @Tom
t
👍
a
t
Let me review the post from #ieee-sscs-dc-23 and probably there won't need to be an additional pull request. I'll let you know.
@Tom: The lack of a ppoly symbol is not part of the solution addressed in #ieee-sscs-dc-23, so a pull request would be appropriate. On the other hand, there are something like 50+ devices defined in the PDK vs 23 in the xschem symbols, so it would be useful to get a full set, for which we might want to engage @Stefan Schippers.
s
@Tim Edwards (@Tom @Amro Tork) sure I can help. Can you please post the repo to work on (this one ? https://github.com/efabless/globalfoundries-pdk-libs-gf180mcu_fd_pr ) and possibly a prioritized list of missing devices?
t
@Stefan Schippers: I'm not sure what to prioritize, really, because the basic components are already there, and I don't have a feel yet for what devices people find most useful because people haven't been doing much analog work in the process yet. Here is the complete list:
Copy code
nwell
ppolyf_u
npolyf_u
ppolyf_s
nplus_u
pplus_u
npolyf_s
ppolyf_u_1k
ppolyf_u_1k_6p0
rm1
rm2
rm3
rm4
tm11k (for gf180mcuD)

nfet_03v3
pfet_03v3
nfet_06v0
pfet_06v0
nfet_06v0_nvt
nfet_03v3_dss
pfet_03v3_dss
nfet_06v0_dss
pfet_06v0_dss
nfet_10v0_asym
pfet_10v0_asym

cap_nmos_03v3
cap_nmos_06v0
cap_pmos_03v3
cap_pmos_06v0
cap_nmos_03v3_b
cap_nmos_06v0_b
cap_pmos_03v3_b
cap_pmos_06v0_b

diode_nd2ps_03v3
diode_pd2nw_03v3
diode_nd2ps_06v0
diode_pd2nw_06v0
diode_nw2pw_03v3
diode_nw2pw_06v0
diode_dnw2pw
diode_dnw2ps
sc_diode

npn_10p00x10p00
npn_05p00x05p00
npn_00p54x16p00
npn_00p54x08p00
npn_00p54x04p00
npn_00p54x02p00
pnp_10p00x00p42
pnp_05p00x00p42
pnp_10p00x10p00
pnp_05p00x05p00

cap_mim_2f0_m4m5_noshield
I don't think it's a huge task because a lot of devices will be grouped, like the NPNs and PNPs, and the metal resistors are pretty trivial to copy from the existing m1 resistor. Probably the lowest-priority devices are the schottky (sc_diode), the extended-drain devices (*_asym), the unsalicided-drain devices (*_dss), and the parasitics (well-to-well and well-to-substrate diodes). "nwell" is an nwell resistor.
👍 1
s
@Tim Edwards I am adding the missing symbols for the gf180mcu. Thank you for the list. I see xschem has already a
diode_pw2dw
, I guess it is a p-well to deep (buried) nwell diode. It is not in the above list. It does simulate so there is a model for it. Should I keep it ?
👍 1
👌 1
@Tim Edwards Another question I don't see
rm4
and
rm5
metal resistors (I have created
rm1
,
rm2
,
rm3
). It seems there are some fixed geometry "top metal" resistor:
Copy code
*      tm6k                Subcircuit Model for 2-terminal top metal 6k resistor
*      tm9k                Subcircuit Model for 2-terminal top metal 9k resistor
*      tm11k               Subcircuit Model for 2-terminal top metal 11k resistor
*      tm30k               Subcircuit Model for 2-terminal top metal 30k resistor
The rm1, rm2, rm3 resistors are identical, this means m1, m2 and m3 have same thickness and material (a bit surprising, usually higher metals in the stack have lower resistivity and bigger geometries)
t
Given that the
tm
resistor models have values according to top metal thickness, then the top metal resistor has to be one of these models. Because in the layout, the "TM" layers are mask layers and the drawn layers are, e.g., "M5", I took the same approach in magic: The drawn metal resistor layer in magic is
rm5
, but it extracts to the model
tm11k
(for process variant
gf180mcuD
). I incorrectly listed the drawn layer (which itself was a manual correction from the entry in the netgen setup file where I got the original list of devices; there it's incorrectly listed as "rmtp"). I will correct the entry above. Yes, the GF backend is unusual in having (or at least claiming to have) the exact same properties for all metal and via layers up to the topmost.
Also, you're right that
rm4
is missing. The PR library is forked from github/efabless, so I can make a manual pull request for it and merge it myself.
There is now a pull request on the repository to add the missing
rm4
device to the SPICE models.
s
Ok, for the time being I have left rm4 and rm5 out. All other symbols have been created. PR created.
t
Great! I'll talk with Jeff today about getting those PRs merged.
t
Awesome. Thank you @Stefan Schippers, @Tim Edwards