Add INSTNAME and INSTMODNAME to code model macros

This commit is contained in:
Holger Vogt 2025-08-20 19:42:14 +02:00
parent 1b1a8d6f15
commit 5af898f2fb
5 changed files with 13 additions and 1 deletions

View File

@ -430,6 +430,7 @@ struct Mif_Private {
Mif_Inst_Var_Data_t **inst_var; /* Information about each inst variable */
Mif_Callback_t *callback; /* Callback function */
Mif_Noise_Data_t *noise; /* Noise context, NULL when not in noise analysis */
MIFinstance *instance; /* Information about the instance */
};

View File

@ -129,6 +129,8 @@ OUTPUT_TYPE {return TOK_OUTPUT_TYPE;}
OUTPUT_CHANGED {return TOK_OUTPUT_CHANGED;}
NOISE_DENSITY {return TOK_NOISE_DENSITY;}
NOISE_FREQ {return TOK_NOISE_FREQ;}
INSTNAME {return TOK_INSTNAME;}
INSTMODNAME {return TOK_INSTMODNAME;}
"(" {return TOK_LPAREN;}
")" {return TOK_RPAREN;}

View File

@ -373,6 +373,8 @@ static void append (char *str)
%token TOK_CALL_TYPE
%token TOK_NOISE_DENSITY
%token TOK_NOISE_FREQ
%token TOK_INSTNAME
%token TOK_INSTMODNAME
%start mod_file
@ -447,6 +449,10 @@ macro : TOK_INIT
{fprintf (mod_yyout, "mif_private->circuit.frequency");}
| TOK_TEMPERATURE
{fprintf (mod_yyout, "mif_private->circuit.temperature");}
| TOK_INSTNAME
{fprintf (mod_yyout, "mif_private->instance->MIFname");}
| TOK_INSTMODNAME
{fprintf (mod_yyout, "mif_private->instance->gen.GENmodPtr->GENmodName");}
| TOK_T TOK_LPAREN buffered_c_code TOK_RPAREN
{fprintf (mod_yyout, "mif_private->circuit.t[%s]", $3);}
| TOK_PARAM TOK_LPAREN subscriptable_id TOK_RPAREN

View File

@ -43,7 +43,7 @@ NON-STANDARD FEATURES
/*=== INCLUDE FILES ====================*/
#include "ngspice/mifdefs.h"
/*=== CONSTANTS ========================*/
@ -185,6 +185,8 @@ void cm_degmon(ARGS) /* structure holding parms,
STATIC_VAR(prevtime) = (double *) malloc(sizeof(double));
prevtime = (double *) STATIC_VAR(prevtime);
*prevtime = 0.;
cm_message_send(INSTNAME);
cm_message_send(INSTMODNAME);
}
else {

View File

@ -241,6 +241,7 @@ MIFload(
/* ***************************************************************** */
g_mif_info.instance = here;
g_mif_info.errmsg = "";
cm_data.instance = here;
if(here->initialized) {
cm_data.circuit.init = MIF_FALSE;