|  | 
 
 发表于 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."
 | 
 |