Как параметризировать тип модели для подсхем 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. В этом случае вы можете использовать глобальные узлы, поскольку они доступны внутри подсхем. Глобальные узлы не обязательно должны иметь в своем названии фразу, но это хорошая практика, чтобы сделать их легко узнаваемыми для дизайнера.