Check for double '{{ }}', replace the inner '{', '}' by '(', ')'
in .model lines, if compat mode ps is set. Enables use of some On-Semi power transistor models.
This commit is contained in:
parent
49f26b7d9b
commit
3a4c746ea4
|
|
@ -7830,7 +7830,8 @@ static bool del_models(struct vsmodels *vsmodel)
|
||||||
* replace T_ABS by temp and T_REL_GLOBAL by dtemp in .model cards
|
* replace T_ABS by temp and T_REL_GLOBAL by dtemp in .model cards
|
||||||
* get the area factor for diodes and bipolar devices
|
* get the area factor for diodes and bipolar devices
|
||||||
* in subcircuit .subckt and X lines with 'params:' statement
|
* in subcircuit .subckt and X lines with 'params:' statement
|
||||||
replace comma separator by space. Do nothing if comma is inside of {}. */
|
replace comma separator by space. Do nothing if comma is inside of {}.
|
||||||
|
* in .model, if double curly braces {{}}, replace the inner by {()} */
|
||||||
static struct card *pspice_compat(struct card *oldcard)
|
static struct card *pspice_compat(struct card *oldcard)
|
||||||
{
|
{
|
||||||
struct card *card, *newcard, *nextcard;
|
struct card *card, *newcard, *nextcard;
|
||||||
|
|
@ -7907,6 +7908,8 @@ static struct card *pspice_compat(struct card *oldcard)
|
||||||
.model xxx NMOS/PMOS level=8 --> level = 14, version=4.5.0
|
.model xxx NMOS/PMOS level=8 --> level = 14, version=4.5.0
|
||||||
.model xxx NPN/PNP level=2 --> level = 6
|
.model xxx NPN/PNP level=2 --> level = 6
|
||||||
.model xxx LPNP level=n --> level = 1 subs=-1 */
|
.model xxx LPNP level=n --> level = 1 subs=-1 */
|
||||||
|
|
||||||
|
/* check for double '{', replace the inner '{', '}' by '(', ')'*/
|
||||||
for (card = newcard; card; card = card->nextcard) {
|
for (card = newcard; card; card = card->nextcard) {
|
||||||
char* cut_line = card->line;
|
char* cut_line = card->line;
|
||||||
if (ciprefix(".model", cut_line)) {
|
if (ciprefix(".model", cut_line)) {
|
||||||
|
|
@ -7985,6 +7988,27 @@ static struct card *pspice_compat(struct card *oldcard)
|
||||||
tfree(modname);
|
tfree(modname);
|
||||||
tfree(modtype);
|
tfree(modtype);
|
||||||
tfree(cut_del);
|
tfree(cut_del);
|
||||||
|
|
||||||
|
/* check for double '{', replace the inner '{', '}' by '(', ')'*/
|
||||||
|
cut_line = strchr(card->line, '{');
|
||||||
|
if (cut_line)
|
||||||
|
{
|
||||||
|
int level = 1;
|
||||||
|
cut_line++;
|
||||||
|
while (*cut_line != '\0') {
|
||||||
|
if (*cut_line == '{') {
|
||||||
|
level++;
|
||||||
|
if (level > 1)
|
||||||
|
*cut_line = '(';
|
||||||
|
}
|
||||||
|
if (*cut_line == '}') {
|
||||||
|
if (level > 1)
|
||||||
|
*cut_line = ')';
|
||||||
|
level--;
|
||||||
|
}
|
||||||
|
cut_line++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue