Menu

#26 Support new device model (BSIMCMG)

closed
device (1)
5
2023-08-05
2013-07-20
No

Dear friends,

Could you try to support BSIMCMG compact model into ngspice?
Many researcher need this function for study advanced devices for common multi-gate FETs, like you did for BSIM3 and BSIM4.

The device model is here (BSIMCMG106.1):
http://www-device.eecs.berkeley.edu/bsim/?page=BSIMCMG_LR

Very Thanks,
Simon

Discussion

<< < 1 2 (Page 2 of 2)
  • Yvon

    Yvon - 2017-08-07

    Hi Robert,

    You are right. I was wrong.

    Well, maybe I'm wrong here. Did you run the test to see if the result is really the same?

    I saw your commits, and have a question.
    I'm afraid it's not ideal to raise it up here but I want to keep our conversation in one place.
    How is ddx defined? I noticed that you replaced things like -ddx(Q, V) with ddx(-Q, V) assuming that the Q-V curve is symmetric around the origin. However, this is a dangerous assumption. We have all sorts of possibility to deviate the curve from a perfect one. Should ddx mean "derivative" then the result would be unreliable.

    ~~~
    commit ed17292b1790a7d3a926ebafb883c6fab9de0469
    Author: rlar <rlar>
    Date: Sun Jul 23 20:14:31 2017 +0200

    bsimcmg, workaround adms ddx() translation
    
    ddx must be toplevel of an assignment
    

    diff --git a/src/spicelib/devices/adms/bsimcmg/admsva/bsimcmg_body.include b/src
    /spicelib/devices/adms/bsimcmg/admsva/bsimcmg_body.include
    index a347be6..c67eb85 100644
    --- a/src/spicelib/devices/adms/bsimcmg/admsva/bsimcmg_body.include
    +++ b/src/spicelib/devices/adms/bsimcmg/admsva/bsimcmg_body.include
    @@ -3925,54 +3925,57 @@ analog begin

       // Intrinsic Capacitances (Physical)
       CGGI  =  ddx(QGI, V(`IntrinsicGate));
    
    • CGSI = -ddx(QGI, V(si));
    • CGDI = -ddx(QGI, V(di));
    • CGEI = -ddx(QGI, V(e));
    • CGSI = ddx(-QGI, V(si));
    • CGDI = ddx(-QGI, V(di));
    • CGEI = ddx(-QGI, V(e));
      ~~~
     

    Last edit: Yvon 2017-08-07
    • Robert Larice

      Robert Larice - 2017-08-07

      Hello Yvon,

      You are welcome, I'm glad that you agree, in some way, concerning the invariance
      of ddx with respect to multiplication with a constant value, -1 here.

      Actually I do not know enough about verilog-va, but I hope its sufficient for this thing.
      admsXml needs the "ddx" at the outer most level of the expression, thats all.

      There are some modified examples from the original berkely source code in the
      (out of place, but alas, it is a hacking branch) toplevel directory "bsimcmg_benchmark_test" which should give some idea about useability.
      Again I do not know enough about such things, so If you see some output there
      which you instantly feel out of order, then please report.

       
      • Yvon

        Yvon - 2017-08-07

        Sure, will do later.

         
  • Yvon

    Yvon - 2017-07-26

    My opinion to the $port_connected issue:
    According to the manual, the 5th terminal t is used by the self-heating model. Although this Rth/Cth model is deeply integrated in the larger model, the only direct appearance of the t terminal / value are 11 output variables, in the form of Temp(t).
    This terminal is not set or "loaded" since I didn't find any asynchronous assignment.

    And the $port_connected only shows up to generate two warning messages!
    1. If t terminal is connected and SHMOD=1 then use Temp(t) normally.
    2. If t terminal is connected but SHMOD=0 then warn, and nothing happens since this temperature is not used anyway. Other parts of the code do rely on the temperature but not including results from self-heating.
    3. If t terminal is not connected but SHMOD=1 then warn, and clamp Temp(t) at zero degree Celcius.
    4. If t terminal is not connected and SHMOD=0 then everything is fine, similar to the second case.

    Back to the self-heating model, if I'm getting it right then the rth and cth are supposed to interact with thermal simulation, which calculates temperature and heat flow seperately from electrical simulation. At this moment I don't think ngspice is implementing thermal / energy balance simulation, so this terminal is meaningless. Frankly you could set some temperature and use the self-heating model, but there is no way one could make use of any possible output from this node.

    My suggestion:
    1. Completely remove the warning message block. This should eliminate the use of $port_connected.
    2. Force user to connect the 5th node. If SHMOD=0 then it could be anything, preferrably to be 0. If SHMOD=1 then it should be used as a temperature input. However I'm not sure in what format the temperature data should be.

    Hope this could help.

    Regards,

     

    Last edit: Yvon 2017-07-26
    • Robert Larice

      Robert Larice - 2017-07-30

      Hello Yvon,

      the reason why I've disabled the $port_connected, is, and was, that the adms tool simply errors out and fails to work in this particuliar case. Thus I should search whether I can fix the adms .xml files.

      The 't' node is driven internally, see

       branch (t) rth_branch;
       branch (t) ith_branch;
      

      and then,

      Pwr(ith_branch) <+ ...
      Pwr(rth_branch) <+ ...
      

      I'm not familiar with this, but seems to be a "Thermal Power" flow (units Watt)
      into a thermal capacity (units Kelvin/Joule) to model dynamic temperature rise and
      its consequences to all other variables. The node seems to be made external on demand to either monitor it (temperature), or to even add some more thermal capacity.

      currently I don't know why adms chokes here.

      Regards,

       
      • Yvon

        Yvon - 2017-07-31

        I think it assumes the simulator handles heat /energy balance simulation with Temp() and Pwr() implemented. Is there any way to know whether ngspice or adms deals with this?

        According to the technical manual, the self-heating model describes a FinFET as a thermal resistor and a thermal capacitor, parallel connected, as well as a heat source connected in the same way. The power for the heat source comes from the transistor itself, and hence the name "self-heating".
        Thinking in this way, the t terminal should be considered as an output from the model, telling the temperature of the device locally with the consideration of the self-generated heat power.
        If ngspice or any other simulation software supports thermal simulation, it would be equivalent to setting an external heat source with the correctly-defined Rth and Cth and simulating the temperature separately, dependent on the electrical device.

        I think the "input" of temperature to the model is still by setting ambient temperature, which could also be affected by the heating of the FETs but calculated in some other way.

         
  • Arvin

    Arvin - 2018-10-14

    What is the status of this feature? The last post is over a year old and I could not find any related updates in the Git repository, but maybe I overlooked something.

     
  • Dietmar Warning

    Dietmar Warning - 2018-10-14

    Status hasn't change, but you are free to contribute anyway.

     
  • Arvin

    Arvin - 2018-10-14

    Ok. thanks!
    From this thread it looks like "adms-experiment-1" is a branch with the changes for BSIMCMG.

     
    • Simon Y.H Chen

      Simon Y.H Chen - 2018-10-14

      Great.

      Could someone know where to download admsxml-experiment?

      從我的 iPhone 傳送

      Arvin apatel0586@users.sourceforge.net 於 2018年10月14日 下午6:59 寫道:

      adms-experiment-1

       
  • Keertana

    Keertana - 2019-03-22

    Wasn't sure where to post this, but I am having issues with the adms-experiment-1 and adms-experiment -2 branches. I am using the PTM from ASU for the 14/16 nm finfet, and get errors saying it does not support MOS device level 72. Has anyone gotten this issue? Are there newer versions of this?

     
  • Dietmar Warning

    Dietmar Warning - 2023-08-05
    • status: open --> closed
    • assigned_to: Dietmar Warning
     
  • Dietmar Warning

    Dietmar Warning - 2023-08-05

    We can close, because latest public BSIM-CMG version 111.0.0 is available over ngspice osdi interface and https://github.com/dwarning/VA-Models

     
<< < 1 2 (Page 2 of 2)

Log in to post a comment.