Как параметризировать тип модели для подсхем Hspice?

У меня есть следующий код Hspice:

.SUBCKT inv_slvt in out vdd
Mpmos  out  in    vdd  pmos_slvt
Mnmos  out  in    0    nmos_slvt
.ENDS

.SUBCKT inv_lvt in out vdd
Mpmos  out  in    vdd  pmos_lvt
Mnmos  out  in    0    nmos_lvt
.ENDS

Есть ли способ, которым я могу свести код к определению одной подсхемы, параметризуя суффикс (то есть - "slvt" против "lvt") типов моделей?

0 ответов

Вы не можете параметризовать часть имени модели, параметра или значения параметра. Однако вы можете параметризовать все имя. Итак, в вашем случае вам нужно будет параметризовать имя MOSFET как pmos_slvt, nmos_slvt, pmos_lvt или nmos_lvt. Вот как бы вы это сделали:

.global vdd! gnd!

* Defining the default values for parameters nmodel and pmodel
.SUBCKT inv in out pmodel=str('pmos_lvt') nmodel=str('nmos_lvt')
   Mpmos  vdd! in out vdd!  str(pmodel)
   Mnmos  gnd! in out gnd!  str(nmodel)
.ENDS

Vvdd vdd! 0 dc=3.3
Vgnd gnd! 0 dc=0

Xinv in out inv pmodel=str('pmos_slvt') nmodel=str('nmos_slvt')

При работе со строками их значения следует передавать как str('value'). Например:

.PARAM par1 = str('nmos_180')

Если вы хотите использовать значение параметра, содержащего строку, вы должны использовать str (имя_параметра), как показано ниже:

.MODEL str(par1) nmos ...

В качестве примечания я хотел бы упомянуть, что вы неправильно использовали экземпляр MOSFET. Устройства MOSFET в Spice имеют 4 вывода: сток, затвор, исток и основной. Вы должны использовать все четыре из них при создании экземпляра устройства MOSFET. В этом случае вы можете использовать глобальные узлы, поскольку они доступны внутри подсхем. Глобальные узлы не обязательно должны иметь в своем названии фразу, но это хорошая практика, чтобы сделать их легко узнаваемыми для дизайнера.

Другие вопросы по тегам