Menu

#116 Add BSIM-4 accessible instance parameters

Unstable (example)
closed-accepted
None
5
2024-08-23
2024-08-22
No

Context
The build-in BSIM-4 model in Ngspice provides a set of "accessible instance parameters" (conf. table in section 27.0.6.23 of Ngspice documentation).

Problem
Not all relevant parameters compared to commercial simulators (Spectre) are available, e.g., gate-source and gate-drain fringe capacitors are missing. Having this feature is important for applying the gm/ID sizing methodology (in the open-source PDK SKY130).

Contribution
Make more parameters for BSIM-4.5 (BSIM-4 model version used in the SKY130 PDK) available (see attached patch .txt). I added the following parameters (definition see BSIM-4 manual):
- vgsteff
- vdseff
- cgso
- cgdo
- cgbo
- weff
- leff

Example
The attached netlist .cir illustrates the effect of the changes made (SKY130 PDK needed, please adjust the path to the model library beforehand).
The simulation returns all new specified parameters.

@m.xm1.msky130_fd_pr__nfet_01v8[cgbo] = 1.302418e-20
@m.xm1.msky130_fd_pr__nfet_01v8[cgdo] = 1.231567e-15
@m.xm1.msky130_fd_pr__nfet_01v8[cgso] = 1.231567e-15
@m.xm1.msky130_fd_pr__nfet_01v8[leff] = 1.261360e-07
@m.xm1.msky130_fd_pr__nfet_01v8[vdseff] = 3.190205e-01
@m.xm1.msky130_fd_pr__nfet_01v8[vgsteff] = 9.252463e-01
@m.xm1.msky130_fd_pr__nfet_01v8[weff] = 4.956282e-06

Questions to Ngspice development team

-Is the patch fine or should I wrap them in a

  #ifdef NEW_BSIM4_PARAM
   <Changes>
  #endif

macro?
- I prepend NGSPICE_ to the new defined macro-defined constants to
differentiate the, from the build-in values. Is that ok?
-Other comments?

Next Steps
* Make more parameters available
* Extend the changes made to all BSIM-4 models (and not only 4.5)
* Update documentation (table in section 27.0.6.23)

2 Attachments

Discussion

  • Dietmar Warning

    Dietmar Warning - 2024-08-22

    Matthias,
    thank you for the patch.
    Even the manual makes no distinction between instance parameter and operating point values per instance your patch clearly extend the operating point value list of bsim4.

    Question, if you write:
    - I prepend NGSPICE_ to the new defined macro-defined constants to
    differentiate the, from the build-in values. Is that ok?

    Did you found build-in values with same meaning that you want differentiate from them?
    If not, I would omit the NGSPICE_ preamble in the macro.

    My opinion: Having in mind that we add values per instance I would extend the list not extensive, only needed values as you mentioned for design support.
    If we do it for v4.5 the other versions should follow too.

     
  • Matthias Schweikardt

    Dietmar,
    thanks for the quick response.

    There are no built-in values with the same meaning, this is why I removed
    the prefix 'NGSPICE_'.
    For now, I will leave it by adding only these 7 parameters, maybe there
    is need for additional parameters in the future.

    In the attached patch (.txt), I added the parameters for all BSIM-4
    models shipped with Ngspice.
    The attached netlist (.cir) shows how to access the new added parameters for
    all BSIM-4 versions.

    In the next days, I will submit a new ticket with an update for the
    documentation (table in section 27.0.6.23).

    Regards,
    Matthias

     

    Last edit: Matthias Schweikardt 2024-08-22
  • Dietmar Warning

    Dietmar Warning - 2024-08-23
    • status: open --> closed-accepted
    • assigned_to: Holger Vogt --> Dietmar Warning
     
  • Dietmar Warning

    Dietmar Warning - 2024-08-23

    Your patch is applied in pre-master-44.
    Thank you!

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.