Compact models and simulators use specific values for such physical constants as the magnitude of the electronic charge, Q, and Boltzmann's constant Kb. Slight differences in these values will give rise to different simulation results for ostensibly the same model between different simulators. These differences can be actual differences in value, or can be because different numbers of digits of precision were used in different simulations. The latter problem also arises when models use an explicitly defined value for pi, with a limited number of digits in the definition, rather than calculating pi via something like 4*atan2(1,1).

To try to avoid differences between different implementations, VBIC explicitly has values defined for some physical constants. However, it appears that some implementations have substituted simulator specific values for the physical constants. This has lead to differences in VBIC simulation results between different simulators. The differences are very small, because the physical constants generally differ only in the 6th decimal place. However they do exist, so in trying to "exactly" match VBIC results between simulators, Verilog-A, and the stand-alone solver these differences in physical constants need to be taken into account.

There can be some dispute about the "real" value for
a physical constant. Given that the best estimate for
these constants has changed, and continues to change,
over time, one reason for the difference between different
simulators is that once a value is used in a simulator
it is **not possible to update it**.
So simulators implemented at different times
that use the "best" values known at the
time of implementation for physical constants
can have different values.
This sounds
silly, however it is mandatory for backward compatibility.
Parameter sets for particular models are extracted based
on simulation results for a specific version of the model
and simulator, and if at some later revision of the simulator
the physical constants are changed, then simulations
with previously verified, official sets of model parameters
will change. This cannot happen, you cannot retroactively
have all parameter sets for all technologies tweaked to
be valid for specific versions of a simulator.
(The changes in "best" values for physical constants over
time is very small, so you would not in practice do this,
but it is the principal that counts).

So here's the interesting part: I looked at what values are used for some constants in some simulators, models, and languages. These are tabulated below.

Source | TABS (0C in K) | Q | Kb |
---|---|---|---|

VBIC | 273.15 | 1.6021890e-19 | 1.3806620e-23 |

BSIM | 273.15 | 1.6021900e-19 | 1.3806226e-23 |

Spice2G6 | 273.15 | 1.6021918e-19 | 1.3806226e-23 |

Sze | 273.15 | 1.6021800e-19 | 1.3806600e-23 |

NIST | 273.15 | 1.6021765e-19 | 1.3806503e-23 |

Note that the Spice2G6 values are used in many simulators, and also are the values used in Verilog-A. The VBIC values are those that were used in the ADVICE simulator at AT&T Bell Laboratories in the late 1980's, this is where VBIC originated.

An interesting and somewhat ironic observation on the above
values is that despite some disagreements between various
simulators and models, **they all differ from the
present "best" values provided by NIST**!
See the NIST web site for the latest information, and the uncertainty
to which the values are known.

A similar situation exists for the value of the silicon band-gap as a function of temperature. Many versions of SPICE have the following:

EHowever, the values in this expression come from the 1st edition of Sze's book. In the second edition the values were updated to

EThese improved values were not (and as noted above were really not able to be) implemented in some simulators. In some simulators the numbers in the above expressions are declared as model parameters, rather than being simulator wide, unchangeable constants, in which case updates to the "best" values for the parameters can be implemented via .model cards.

Bottom line: be aware that physical constants and parameters can differ between different simulators, and between implementations of the same model in different simulators, hence you can get different results for the "same" model between different simulators.