Browse Source

Add function cm_get_neg_node_name

as cm_get_node_name delivers only the pos node.
pre-master-46
Holger Vogt 10 months ago
parent
commit
878d7e1ff9
  1. 1
      src/include/ngspice/cmproto.h
  2. 1
      src/include/ngspice/dllitf.h
  3. 28
      src/xspice/cm/cm.c
  4. 1
      src/xspice/cm/cmexport.c
  5. 4
      src/xspice/icm/dlmain.c

1
src/include/ngspice/cmproto.h

@ -99,6 +99,7 @@ double cm_netlist_get_l(void);
void cm_irreversible(unsigned int); void cm_irreversible(unsigned int);
const char *cm_get_node_name(const char *, unsigned int); const char *cm_get_node_name(const char *, unsigned int);
const char *cm_get_neg_node_name(const char *, unsigned int);
bool cm_probe_node(unsigned int, unsigned int, void *); bool cm_probe_node(unsigned int, unsigned int, void *);
bool cm_schedule_output(unsigned int, unsigned int, double, void *); bool cm_schedule_output(unsigned int, unsigned int, double, void *);

1
src/include/ngspice/dllitf.h

@ -61,6 +61,7 @@ struct coreInfo_t {
double ((*dllitf_cm_netlist_get_l)(void)); double ((*dllitf_cm_netlist_get_l)(void));
void ((*dllitf_cm_irreversible)(unsigned int)); void ((*dllitf_cm_irreversible)(unsigned int));
const char * ((*dllitf_cm_get_node_name)(const char *, unsigned int)); const char * ((*dllitf_cm_get_node_name)(const char *, unsigned int));
const char* ((*dllitf_cm_get_neg_node_name)(const char*, unsigned int));
bool ((*dllitf_cm_probe_node)(unsigned int, unsigned int, bool ((*dllitf_cm_probe_node)(unsigned int, unsigned int,
void *)); void *));
bool ((*dllitf_cm_schedule_output)(unsigned int, unsigned int, bool ((*dllitf_cm_schedule_output)(unsigned int, unsigned int,

28
src/xspice/cm/cm.c

@ -40,6 +40,7 @@ INTERFACES
cm_irreversible() cm_irreversible()
cm_get_node_name() cm_get_node_name()
cm_get_neg_node_name()
cm_probe_node() cm_probe_node()
REFERENCED FILES REFERENCED FILES
@ -852,6 +853,33 @@ const char *cm_get_node_name(const char *port_name, unsigned int index)
return NULL; return NULL;
} }
/* Get the neg name of a circuit node connected to a port. */
const char* cm_get_neg_node_name(const char* port_name, unsigned int index)
{
MIFinstance* instance;
Mif_Conn_Data_t* conn;
Mif_Port_Data_t* port;
int i;
instance = g_mif_info.instance;
for (i = 0; i < instance->num_conn; ++i) {
conn = instance->conn[i];
if (!strcmp(port_name, conn->name)) {
if (index >= (unsigned int)conn->size)
return NULL;
port = conn->port[index];
if (port->type == MIF_DIGITAL || port->type == MIF_USER_DEFINED) {
/* Event node, no name in port data. */
return NULL;
}
return port->neg_node_str;
}
}
return NULL;
}
/* Test the resolved value of a connected Digital/UDN node, given /* Test the resolved value of a connected Digital/UDN node, given
* an assumed value for a particular port. * an assumed value for a particular port.
*/ */

1
src/xspice/cm/cmexport.c

@ -60,6 +60,7 @@ struct coreInfo_t coreInfo =
cm_netlist_get_l, cm_netlist_get_l,
cm_irreversible, cm_irreversible,
cm_get_node_name, cm_get_node_name,
cm_get_neg_node_name,
cm_probe_node, cm_probe_node,
cm_schedule_output, cm_schedule_output,
cp_getvar, cp_getvar,

4
src/xspice/icm/dlmain.c

@ -350,6 +350,10 @@ const char *cm_get_node_name(const char *port, unsigned int index) {
return coreitf->dllitf_cm_get_node_name(port, index); return coreitf->dllitf_cm_get_node_name(port, index);
} }
const char *cm_get_neg_node_name(const char *port, unsigned int index) {
return coreitf->dllitf_cm_get_neg_node_name(port, index);
}
bool cm_probe_node(unsigned int conn_index, bool cm_probe_node(unsigned int conn_index,
unsigned int port_index, unsigned int port_index,
void *value) { void *value) {

Loading…
Cancel
Save