-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Hi,
I managed to implement BSIM1 and BSIM2 transistor models in the parser, but I am now facing some issues when trying to implement BSIM3. Starting with BSIM3, a model can be split into regions for certain transistor sizes. The SPICE syntax then typically looks as follows:
* Model definitions
.model mod.1 NMOS(LEVEL=49 lmin=0.18u lmax=1u ...)
.model mod.2 NMOS(LEVEL=49 lmin=1u lmax=2u ...)
.model mod.3 NMOS(LEVEL=49 lmin=2u ...)
* Component definition - notice that we use mod as the model name, and it will automatically resolve to mod.1
M1 d g 0 0 mod w=1.5u l=0.5u
In order to support this, I implemented an aggregate model. Multiple BSIM3Model instances can be added to this aggregate model, and the aggregate model will allow the components to "find" the right model for the given parameters.
I'm mainly looking at this part. This function should generate a model in my case that has a different name from the line that it reads. Also, it may return the same aggregate model multiple times (in my example, it will return the aggregate model mod 3 times: once for mod.1, once for mod.2 and once for mod.3) while adding the sub-models to the aggregate model.