There is no definitive guide to the differences between Xyce models and HSPICE model implementations. HSPICE has numerous instances of standard SPICE models that have proprietary extensions. Few of these are explicitly documented as extensions, and one simply has to look at the original, open-source code released by the model authors to work out for oneself how HSPICE has extended it --- in many cases one can at least see which parameters of the HSPICE model were not part of the original model release and conclude that HSPICE must have added some model equations to support those new parameters. Being closed-source, it is not possible to see exactly what HSPICE has done. Worse, we have found that some proprietary extensions have even been made to the legacy SPICE MOSFET models levels 1-6, and we are unable to support those extensions either.
The definitive releases of BSIM code are all collected along with their thorough technical documentation, at the BSIM web site at Berkeley,
http://bsim.berkeley.edu/. We document only differences between the implementations in Xyce and those described in the release documents at Berkeley for the same version we implement (which is not often the very latest version available).
In the case of legacy models such as the BSIM3, BSIM-SOI 3.x, and BSIM4, the models were originally released in SPICE3F5 source code format, intended to be dropped directly into a SPICE3F5 source tree and recompiled. For those models, the entire thing needed to be ported into Xyce source code via a laborious, manual process. All of the other MOSFETs in the "OpenModels" directory of Xyce (i.e. MOSFETS level 1, 2, 3, and 6) are similarly direct, manual ports of the code from SPICE3F5. Because of the extreme labor-intensive nature of porting SPICE3F5 C code into Xyce C++ code, we have not seldom revisited these C models when the BSIM group releases a new version (which has thankfully become very infrequent for these old C implementations). That is why our BSIM3, BSIM-SOI 3.x, and BSIM 4 models represent somewhat older versions of the Berkeley release.
The BSIM 3 in Xyce is BSIM 3.2.2, which is several releases behind the latest 3.3.0 release of 2005 --- the effort to port BSIM3 to Xyce was tremendous and we do not envision the need for an updated version of this model to rise to the level necessary to justify expending that level of effort again.
Our BSIM-SOI 3.x model is BSIM-SOI 3.2, mercifully the last of the BSIM-SOI 3.x line --- and the effort to port that version to Xyce was orders of magnitude higher than porting BSIM 3.
Our BSIM 4 model is version 4.6.1 from 2007. It was not as big a deal to port to Xyce as the BSIM3 and BSIM-SOI 3.x were, but it was still difficult and error-prone. It was first attempted in Xyce beginning in 2006 by porting the 4.5.0 model, and when that effort languished it was taken up again almost a year later and updated to the version 4.6.1 that had been released in between. Even then, errors in the original port remained, and the last bug in the port was not actually fixed until this past February. Again, the effort required to port this model from the original SPICE3F5 C implementation to Xyce was significant enough that updating it even to the last version of 2013 is not likely to happen unless real business needs dictate doing so.
We have endeavored to make the versions we have ported to Xyce be strict implementations of the versions as provided and documented by the BSIM group, and have not added any extensions --- what physics the original authors put into the model remains the only physics in the implementation in Xyce. We are completely unable to support HSPICE extensions to these models, as there is no way to know exactly how they have extended the models.
The source code in the ADMS directory has all been machine generated using the Xyce/ADMS Verilog-A compiler. The original Verilog-A source code for these models is generally available through the web sites we link to in the reference guide. The actual Verilog-A source code we used to generate the models is always present in the utils/ADMS/examples subdirectories of the Xyce source tree. We have frequently needed to modify these models to get them to compile with ADMS, and when we have done so the differences are always documented in a "README_Xyce" file in the same directory as the Verilog-A source code.
Because models in the ADMS directory are machine generated using ADMS, it is usually easier for us to update them to more recent versions when they are released.
There is no current translation option from any language other than Verilog-A into Xyce-compatible source code. There is no reason someone couldn't write one just as we have done for Verilog-A, but we are not working on it and are unaware of anyone outside of Sandia working on it. Veriliog-A has become the industry standard for writing compact models, and maintaining a compiler to support that language has been hard enough.
In general, model levels for MOSFET models other than the original handful of models present in SPICE3F5 are arbitrary and differ from simulator to simulator. The BSIM 3 model, for example, is the level 9 model in Xyce, but it is the level 8 model in PSPICE (or at least it was once), and may be the level 49 model in HSPICE. There is no gold standard for model levels, as in general these model levels are not determined by the model authors, but rather by simulator implementer. There is not even a portable mechanism in Verilog-A to make a model be a certain model level --- every simulator has its own mechanism for defining the model level, and some tricks that some model authors have tried to use to recommend a level (e.g. by creating a model parameter named "LEVEL" and testing that it is the expected value) is not portable across simulators and does not in fact work in Xyce (though when an author does this, we try our best to make our model level be the same one envisioned by the author, as for example the newly-implemented DIODE_CMC model that is the level 2002 diode model in the Xyce development version (and the upcoming release 7.2)).
If the model author has not mentioned an expectation that a model will be implemented as a specific model level, we have often just made up a level on the spot based on the version number of the model's release (not an ideal arbitrary choice). Sometimes we are guided by another simulator's choice, but even that doesn't always work. For example, when BSIM-SOI 4.x was added to Xyce, we first chose "LEVEL=70" for it, because that is what HSPICE uses. Then we learned that HSPICE's level 70 model implements BSIM-SOI 4.5.0, and we had implemented 4.6.1, which turns out to have a bug that makes it unusable in some use cases and certainly not backward compatible to level 4.5.0. It is not possible in Xyce to use the extra "VERSION" model parameter to select different versions of a model (e.g. you can't use "level=70 version=4.5" in Xyce --- every version must have a unique level number). Hence we were forced to implement a second BSIM-SOI 4.x model level 70450 to gain access to the 4.5.0 release.
From time to time we have tried to provide "alias" model levels so that model cards for HSPICE or PSPICE may be used without modification, but this is not always possible (for example, it may be that two different simulators use the same model level for completely different device models).
XDM has been written to understand at least some of the mappings between model levels of other commercial simulators and those in Xyce, and to make appropriate translation of model cards. For example, the BSIM-SOI 4.6.1/4.5.0 issue is known to the XDM developers as a compatibility issue, and so when XDM encounters a MOSFET model card of level 70 in an HSPICE netlist it translates it to a level 70450 MOSFET model card for Xyce. What it can't translate it leaves alone for the user to fix.