experimental, drop IF_REDUNDANT
Use the .id fields of neighbouring entries to recognise REDUNDANT'cy Thus IOPR and OPR are no longer needed.
This commit is contained in:
parent
936a672a60
commit
f4470dc8a0
|
|
@ -638,7 +638,7 @@ param_forall(dgen *dg, int flags)
|
||||||
|
|
||||||
for (i = 0; i < xcount; i++)
|
for (i = 0; i < xcount; i++)
|
||||||
if ((plist[i].dataType & IF_ASK)
|
if ((plist[i].dataType & IF_ASK)
|
||||||
&& !(plist[i].dataType & IF_REDUNDANT)
|
&& !(i > 0 && plist[i - 1].id == plist[i].id)
|
||||||
&& ((plist[i].dataType & IF_SET) || dg->ckt->CKTrhsOld)
|
&& ((plist[i].dataType & IF_SET) || dg->ckt->CKTrhsOld)
|
||||||
&& (!(plist[i].dataType & IF_UNINTERESTING) || (flags == DGEN_ALLPARAMS)))
|
&& (!(plist[i].dataType & IF_UNINTERESTING) || (flags == DGEN_ALLPARAMS)))
|
||||||
{
|
{
|
||||||
|
|
@ -672,7 +672,7 @@ param_forall_old(dgen *dg, int flags)
|
||||||
|
|
||||||
for (i = 0; i < xcount; i++)
|
for (i = 0; i < xcount; i++)
|
||||||
if ((plist[i].dataType & IF_ASK)
|
if ((plist[i].dataType & IF_ASK)
|
||||||
&& !(plist[i].dataType & IF_REDUNDANT)
|
&& !(i > 0 && plist[i - 1].id == plist[i].id)
|
||||||
&& ((plist[i].dataType & IF_SET) || dg->ckt->CKTrhsOld)
|
&& ((plist[i].dataType & IF_SET) || dg->ckt->CKTrhsOld)
|
||||||
&& (!(plist[i].dataType & IF_UNINTERESTING) || (flags == DGEN_ALLPARAMS)))
|
&& (!(plist[i].dataType & IF_UNINTERESTING) || (flags == DGEN_ALLPARAMS)))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -647,9 +647,9 @@ spif_getparam_special(CKTcircuit *ckt, char **name, char *param, int ind, int do
|
||||||
/* It is a device */
|
/* It is a device */
|
||||||
for (i = 0; i < *(device->numInstanceParms); i++) {
|
for (i = 0; i < *(device->numInstanceParms); i++) {
|
||||||
opt = &device->instanceParms[i];
|
opt = &device->instanceParms[i];
|
||||||
if (opt->dataType & IF_REDUNDANT || !opt->description)
|
if (i > 0 && device->instanceParms[i - 1].id == device->instanceParms[i].id)
|
||||||
continue;
|
continue;
|
||||||
if (!(opt->dataType & IF_ASK))
|
if (!opt->description || !(opt->dataType & IF_ASK))
|
||||||
continue;
|
continue;
|
||||||
pv = doask(ckt, typecode, dev, mod, opt, ind);
|
pv = doask(ckt, typecode, dev, mod, opt, ind);
|
||||||
if (pv) {
|
if (pv) {
|
||||||
|
|
@ -675,7 +675,9 @@ spif_getparam_special(CKTcircuit *ckt, char **name, char *param, int ind, int do
|
||||||
/* It is a model */
|
/* It is a model */
|
||||||
for (i = 0; i < *(device->numModelParms); i++) {
|
for (i = 0; i < *(device->numModelParms); i++) {
|
||||||
opt = &device->modelParms[i];
|
opt = &device->modelParms[i];
|
||||||
if (opt->dataType & IF_REDUNDANT || !opt->description)
|
if (i > 0 && device->modelParms[i - 1].id == device->modelParms[i].id)
|
||||||
|
continue;
|
||||||
|
if (!opt->description)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* We check that the parameter is interesting and therefore is
|
/* We check that the parameter is interesting and therefore is
|
||||||
|
|
@ -779,9 +781,9 @@ spif_getparam(CKTcircuit *ckt, char **name, char *param, int ind, int do_model)
|
||||||
device = ft_sim->devices[typecode];
|
device = ft_sim->devices[typecode];
|
||||||
for (i = 0; i < *(device->numInstanceParms); i++) {
|
for (i = 0; i < *(device->numInstanceParms); i++) {
|
||||||
opt = &device->instanceParms[i];
|
opt = &device->instanceParms[i];
|
||||||
if (opt->dataType & IF_REDUNDANT || !opt->description)
|
if (i > 0 && device->instanceParms[i - 1].id == device->instanceParms[i].id)
|
||||||
continue;
|
continue;
|
||||||
if (!(opt->dataType & IF_ASK))
|
if (!opt->description || !(opt->dataType & IF_ASK))
|
||||||
continue;
|
continue;
|
||||||
pv = doask(ckt, typecode, dev, mod, opt, ind);
|
pv = doask(ckt, typecode, dev, mod, opt, ind);
|
||||||
if (pv) {
|
if (pv) {
|
||||||
|
|
@ -1038,7 +1040,7 @@ parmlookup(IFdevice *dev, GENinstance **inptr, char *param, int do_model, int in
|
||||||
((dev->instanceParms[i].dataType & IF_ASK) && inout == 0)) &&
|
((dev->instanceParms[i].dataType & IF_ASK) && inout == 0)) &&
|
||||||
cieq(dev->instanceParms[i].keyword, param))
|
cieq(dev->instanceParms[i].keyword, param))
|
||||||
{
|
{
|
||||||
while ((dev->instanceParms[i].dataType & IF_REDUNDANT) && (i > 0))
|
while (i > 0 && dev->instanceParms[i - 1].id == dev->instanceParms[i].id)
|
||||||
i--;
|
i--;
|
||||||
return (&dev->instanceParms[i]);
|
return (&dev->instanceParms[i]);
|
||||||
}
|
}
|
||||||
|
|
@ -1052,7 +1054,7 @@ parmlookup(IFdevice *dev, GENinstance **inptr, char *param, int do_model, int in
|
||||||
((dev->modelParms[i].dataType & IF_ASK) && inout == 0)) &&
|
((dev->modelParms[i].dataType & IF_ASK) && inout == 0)) &&
|
||||||
eq(dev->modelParms[i].keyword, param))
|
eq(dev->modelParms[i].keyword, param))
|
||||||
{
|
{
|
||||||
while ((dev->modelParms[i].dataType & IF_REDUNDANT) && (i > 0))
|
while (i > 0 && dev->modelParms[i - 1].id == dev->modelParms[i].id)
|
||||||
i--;
|
i--;
|
||||||
return (&dev->modelParms[i]);
|
return (&dev->modelParms[i]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ struct IFparm {
|
||||||
#define IF_UNIMP_MASK (~0xfff)
|
#define IF_UNIMP_MASK (~0xfff)
|
||||||
|
|
||||||
/* Used by sensetivity to check if a parameter is or is not useful */
|
/* Used by sensetivity to check if a parameter is or is not useful */
|
||||||
#define IF_REDUNDANT 0x0010000
|
#define IF_REDUNDANT 0x0000000
|
||||||
#define IF_PRINCIPAL 0x0020000
|
#define IF_PRINCIPAL 0x0020000
|
||||||
#define IF_AC 0x0040000
|
#define IF_AC 0x0040000
|
||||||
#define IF_AC_ONLY 0x0080000
|
#define IF_AC_ONLY 0x0080000
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue