Hi <@U01819B63HP> I have a quick question regarding the parameter `mf` of `mimcap` , I looked into t...
c
Hi @Stefan Schippers I have a quick question regarding the parameter
mf
of
mimcap
, I looked into the SKY130 spice model of
mimcap
and see there is a definition of
mf
, but when using xschem to export the netlist, there are both
m
and
mf
defined for the capacitor. I noticed that these two parameters are generally the same. What is the difference between
m
and
mf
here? Or is this some sort of artifact to avoid some script conversion error? And what if these two parameters are not with the same value? Thanks!
s
When you specify a value for
mf
in xschem for a mimcap (example:
mf=2
) it will emit a netlist line with
m=2
and
mf=2
. the
mf
is just a copy of he
m
instance multiplier. It is created to make this multiplier parameter available inside the mimcap model. For some unclear reason the multiplier
m
parameter can not be used inside a model equation. This is done also for mosfets, where
mult
and
m
are set to the same value,
mult
only present to make it available inside the model definition. see in below
cap_mim_m3_1
spice model the
mf
parameter used in capacitance mismatch estimation:
* SKY130 Spice File.
.subckt  sky130_fd_pr__cap_mim_m3_1 c0 c1 w=1 l=1 mf=1
.param wc = 'w+m3_dw*1e6+tol_m3*1e6'
.param lc = 'l+m3_dw*1e6+tol_m3*1e6'
.param via3_spacing = '(0.17+0.25+0.140)*(0.17+0.25+0.140)'
.param num_contacts = '(wc*lc/via3_spacing)'
.param r1 = 'rm3*(lc)/(wc)'
.param r2 = 'rcvia3/num_contacts'
.param carea = 'camimc*(wc)*(lc)'
.param cperim = 'cpmimc*((wc)+(lc))*2'
.param czero = 'carea + cperim+MC_MM_SWITCH*AGAUSS(0,1.0,1)*0.01*2.8*(carea + cperim)/sqrt(wc*lc**mf*)'
c1 c0       a 'czero' tc1 = 0 tc2 = 0.0
rs1 a        b1 'r1' tc1 = {tc1rm3} tc2 = {tc2rm3}
rs2 b1        c1 'r2' tc1 = {tc1rvia3} tc2 = {tc2rvia3}
.ends sky130_fd_pr__cap_mim_m3_1
c
Thanks for the clarification!