|
发表于 2023-2-23 03:40:03
|
显示全部楼层
No, it's not because of the phase shift.
This is the answer from Andrew Beckett:
"Here's a solution we have on sourcelink that a colleague wrote based
on a note I'd put together (a few years back now). When this question
first came up I had indeed checked the source code (and then got
it confirmed by R&D just to make sure). Anyway, hope you
find this useful: (Note, the references to 4.4.1 apply to any version
of spectre later than that).
Description -
-----------
You are simulating a circuit using the bsim3v3 model in spectre.
You look at the operating point information and notice that some
of your capacitances such as cgd, cgs, etc are negative. Why?
Resolution -
----------
The values you are seeing are correct because the values of these
parameters are the partial derivatives of the terminal charges with
respect to the terminal voltages, so they can be negative. They are NOT
physical two terminal capacitors. See the UCB bsim3v3 documentation,
equations 4.3.28 - 4.3.31.
An earlier spectre implementation only gave the values of three
capacitors which were closer to the intuitive value of what the
capacitance should be, but many customers asked for the complete set of
partial derivatives, so that is what spectre currently provides.
Here is a summary of the differences in the capacitance operating point
figures between 4.4 and 4.4.1 BSIM3V3 models in spectre.
---------------------------------------------------------------
In the following section Cxx refers to the parameter calculated by
the bsim evaluator inside the code. The lower case cxx refers to the
value reported by the operating point.
In 4.4:
cgs = -Csg + pModel->OverlapCgs * pInst->Width * pInst->MFactor
cgd = -Cdg + pModel->OverlapCgd * pInst->Width * pInst->MFactor
cgb = -Cbg + pModel->OverlapCgb * pInst->Length * pInst->MFactor
cbd = Cjd
cbs = Cjs
In 4.4.1:
Cgsovl = pInst->pSDModel->OverlapCgs * pInst->MFactor;
Cgdovl = pInst->pSDModel->OverlapCgd * pInst->MFactor;
Cgbovl = pInst->pSDModel->OverlapCgb * pInst->MFactor;
cgs = Cgs - Cgsovl
csg = Csg - Cgsovl
cgd = Cgd - Cgdovl
cdg = Cdg - Cgdovl
cbd = Cbd
cbs = Cbs
cjd = Cjd
cjs = Cjs
Here's a mapping between the parameter name in 4.4, and what it
corresponds to in 4.4.1:
4.4 4.4.1
------------
cgs = -csg
cgd = -cdg
cgb = -cbd
cbd = cjd
cbs = cjs
The parameter names are those reported by the operating point in the two
versions." |
|