allow showmod command for verilog-a models - feature request #100

This commit is contained in:
dwarning 2025-07-04 17:26:28 +02:00
parent ffc36a68fb
commit ef8858f7dc
3 changed files with 20 additions and 1 deletions

View File

@ -22,6 +22,7 @@ extern int OSDIparam(int, IFvalue *, GENinstance *, IFvalue *);
extern int OSDIsetup(SMPmatrix *, GENmodel *, CKTcircuit *, int *); extern int OSDIsetup(SMPmatrix *, GENmodel *, CKTcircuit *, int *);
extern int OSDIunsetup(GENmodel *, CKTcircuit *); extern int OSDIunsetup(GENmodel *, CKTcircuit *);
extern int OSDIask(CKTcircuit *, GENinstance *, int, IFvalue *, IFvalue *); extern int OSDIask(CKTcircuit *, GENinstance *, int, IFvalue *, IFvalue *);
extern int OSDImAsk(CKTcircuit *, GENmodel *, int, IFvalue *);
extern int OSDIload(GENmodel *, CKTcircuit *); extern int OSDIload(GENmodel *, CKTcircuit *);
extern int OSDItemp(GENmodel *, CKTcircuit *); extern int OSDItemp(GENmodel *, CKTcircuit *);
extern int OSDIacLoad(GENmodel *, CKTcircuit *); extern int OSDIacLoad(GENmodel *, CKTcircuit *);
@ -39,5 +40,4 @@ extern int OSDIbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt);
/* extern int OSDIconvTest(GENmodel*,CKTcircuit*); */ /* extern int OSDIconvTest(GENmodel*,CKTcircuit*); */
/* extern int OSDImDelete(GENmodel*); */ /* extern int OSDImDelete(GENmodel*); */
/* extern int OSDIgetic(GENmodel*,CKTcircuit*); */ /* extern int OSDIgetic(GENmodel*,CKTcircuit*); */
/* extern int OSDImAsk(CKTcircuit*,GENmodel*,int,IFvalue*); */
/* extern int OSDIsoaCheck(CKTcircuit *, GENmodel *); */ /* extern int OSDIsoaCheck(CKTcircuit *, GENmodel *); */

View File

@ -188,6 +188,7 @@ extern SPICEdev *osdi_create_spicedev(const OsdiRegistryEntry *entry) {
OSDIinfo->DEVparam = OSDIparam; OSDIinfo->DEVparam = OSDIparam;
OSDIinfo->DEVmodParam = OSDImParam; OSDIinfo->DEVmodParam = OSDImParam;
OSDIinfo->DEVask = OSDIask; OSDIinfo->DEVask = OSDIask;
OSDIinfo->DEVmodAsk = OSDImAsk;
OSDIinfo->DEVsetup = OSDIsetup; OSDIinfo->DEVsetup = OSDIsetup;
OSDIinfo->DEVpzSetup = OSDIsetup; OSDIinfo->DEVpzSetup = OSDIsetup;
OSDIinfo->DEVtemperature = OSDItemp; OSDIinfo->DEVtemperature = OSDItemp;

View File

@ -162,3 +162,21 @@ extern int OSDIask(CKTcircuit *ckt, GENinstance *instPtr, int id,
void *src = descr->access(inst, model, (uint32_t)id, flags); void *src = descr->access(inst, model, (uint32_t)id, flags);
return osdi_read_param(src, value, id, descr); return osdi_read_param(src, value, id, descr);
} }
extern int OSDImAsk(CKTcircuit *ckt, GENmodel *modelPtr, int id,
IFvalue *value) {
NG_IGNORE(ckt);
OsdiRegistryEntry *entry = osdi_reg_entry_model(modelPtr);
const OsdiDescriptor *descr = entry->descriptor;
void *model = osdi_model_data(modelPtr);
if (id >= (int)(descr->num_params)) {
return (E_BADPARM);
}
void *src = descr->access(NULL, model, (uint32_t)id, ACCESS_FLAG_READ);
return osdi_read_param(src, value, id, descr);
}