BSIM 6 device parameter SCA

Skip to first unread message

Mehmet Cirit (Ceridli)

Dec 23, 2023, 9:22:12 PM12/23/23
to xyce-users
I have assigned a value to SCA device parameter of  BSIM6, Level 77 device, which had
a value like 36.371 .  This is supposed to be integral of something over some region.

I get the following error from Xyce 7.7 releases version:

Device instance  *M11: This param SCA cannot be set to expression.
  It is an integer parameter, but has not been tagged as mutable in the model.
Simulation aborted due to error. 

The value of this parameter is changing with extraction corner. It is not an integer. 
It changes from device to device as well.  It is accepting a decimal value as valid, but
not  if it is an expression:

Xm11 ... nch sca='36+0.371' ...

My expression was a little bit more complicated.  Probably this is a bug.

Tom Russo

Dec 23, 2023, 9:32:07 PM12/23/23
to Mehmet Cirit (Ceridli), xyce-users
The SCA parameter of the BSIM6 is in fact declared by the authors to be an integer, and Xyce is enforcing this.  I just double checked, and the BSIM6.1.1 model (the one in Xyce) contains the declaration:
         `IPIoo( SCA            ,0.0            ,""           ,-inf                ,inf                  ,"" )

which is an instance of the macro:

      `define IPIoo(nam,def,uni,lwr,upr,des) (*units=uni, type="instance",  desc=des*) parameter integer nam=def from(lwr:upr) ;

When you specified it as a real number, Xyce was undoubtedly truncating it silently to an integer.

It may well be that the parameter should NOT have been declared that way, but that would be a bug in the original model, not Xyce's implementation of it.

In fact, in BSIM-BULK 107 (a successor to BSIM6) they have corrected that and made SCA (and its friends) declared as real parameters.  But in BSIM6 it was integer.

You received this message because you are subscribed to the Google Groups "xyce-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

Tom Russo    KM5VY 
Tijeras, NM 

 echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]

Mehmet Cirit (Ceridli)

Dec 23, 2023, 11:12:02 PM12/23/23
to xyce-users
Thanks. That tells me  the developers of these models never calculated these parameters for themselves or used it in their models.
I hope these parameters don't have any significant effect.

I think I had heard from F Dyson, I may be wrong. He approaches Enrico Fermi for approval of his project.  Fermi asks him how many free
parameters there are in his theory.  The theory that he wanted to explore had   4 free parameters.   He is humbled   though with the response of my favorite physicist.
Fermi thinks 4 parameters is enough to model an elephant  moving its trunk.  Dyson drops his theory, decides to stick to math and  not venture into physics.
Large number of parameters indicate that there is no physics behind these models.  I can attest that the charge model employed by BSIM
models has no basis in physics or even in common sense.

Mehmet Cirit

Dec 23, 2023, 11:31:01 PM12/23/23
to xyce-users
You may want to change those integer parameters to normal parameters. It does not make sense.


Dr. Mehmet A. Cirit                    Phone:  (408) 647-6025
Library Technologies, Inc.        Cell:       (408) 647-6025
19959 Lanark Lane         
Saratoga, CA 95070                 Email:


Dec 24, 2023, 10:26:54 AM12/24/23
to xyce-users
By default parameters declared as integers aren't allowed to be set by expressions in Xyce.  We should probably  revisit this policy, as it is clearly outdated.  This has come up before.

To fix this particular case it is, of course, possible to just change the type to double and proceed.  

But it is also possible to over-ride the "no expression" rule for specific non-double params.   We've done that in the past.   I'll take a look at this when I have some time.


Mehmet Cirit

Dec 24, 2023, 3:10:07 PM12/24/23
to xyce-users
If you want to stay faithful to model spec, it would be better to convert the value or expression to an integer value, and issue a warning. 

There are a lot of unused  instance parameters for these models. Most of them look like proximity parameters.  Maybe too small an effect. 


Dec 24, 2023, 3:35:59 PM12/24/23
to xyce-users

If you want to change the default setting for integer parameters, I think the place to do it is in the constructor of the Descriptor class, which is in the N_DEV_Pars.h file.

The relevant variable is "mutableInteger_" and it is initialized to "false".   If you change this to "true" then I am pretty sure that the reported BSIM6 behavior will go away and it will work.

The potential problem with doing this is that some integer params should not be mutable, such as model levels.   But possibly, in practice, the number of immutable integer parameters in practice is much smaller than the number of legitimately mutable integer parameters.  If so, we should just update this default to "true" and move on.

I'll open an issue on this in our internal issue tracker.  As this has come up before, there may be one there already.   But if not I'll add it.

Reply all
Reply to author
0 new messages