|
|
@ -46,6 +46,7 @@ NON-STANDARD FEATURES |
|
|
#include "ngspice/mifdefs.h" |
|
|
#include "ngspice/mifdefs.h" |
|
|
#include "ngspice/mifcmdat.h" |
|
|
#include "ngspice/mifcmdat.h" |
|
|
#include "ngspice/miftypes.h" |
|
|
#include "ngspice/miftypes.h" |
|
|
|
|
|
#include "ngspice/evttypes.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -54,31 +55,31 @@ NON-STANDARD FEATURES |
|
|
/* ************** */ |
|
|
/* ************** */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_Output_Info_s { |
|
|
|
|
|
struct Evt_Output_Info_s *next; /* the next in the linked list */ |
|
|
|
|
|
|
|
|
struct Evt_Output_Info { |
|
|
|
|
|
Evt_Output_Info_t *next; /* the next in the linked list */ |
|
|
int node_index; /* index into node info struct for this output */ |
|
|
int node_index; /* index into node info struct for this output */ |
|
|
int output_subindex; /* index into output data in node data struct */ |
|
|
int output_subindex; /* index into output data in node data struct */ |
|
|
int inst_index; /* Index of instance the port is on */ |
|
|
int inst_index; /* Index of instance the port is on */ |
|
|
int port_index; /* Index of port the output corresponds to */ |
|
|
int port_index; /* Index of port the output corresponds to */ |
|
|
} Evt_Output_Info_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct Evt_Port_Info_s { |
|
|
|
|
|
struct Evt_Port_Info_s *next; /* the next in the linked list of node info */ |
|
|
|
|
|
|
|
|
struct Evt_Port_Info { |
|
|
|
|
|
Evt_Port_Info_t *next; /* the next in the linked list of node info */ |
|
|
int inst_index; /* Index of instance the port is on */ |
|
|
int inst_index; /* Index of instance the port is on */ |
|
|
int node_index; /* index of node the port is connected to */ |
|
|
int node_index; /* index of node the port is connected to */ |
|
|
char *node_name; /* name of node port is connected to */ |
|
|
char *node_name; /* name of node port is connected to */ |
|
|
char *inst_name; /* instance name */ |
|
|
char *inst_name; /* instance name */ |
|
|
char *conn_name; /* connection name on instance */ |
|
|
char *conn_name; /* connection name on instance */ |
|
|
int port_num; /* port number of instance connector */ |
|
|
int port_num; /* port number of instance connector */ |
|
|
} Evt_Port_Info_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct Evt_Inst_Index_s { |
|
|
|
|
|
struct Evt_Inst_Index_s *next; /* the next in the linked list */ |
|
|
|
|
|
|
|
|
struct Evt_Inst_Index { |
|
|
|
|
|
Evt_Inst_Index_t *next; /* the next in the linked list */ |
|
|
int index; /* the value of the index */ |
|
|
int index; /* the value of the index */ |
|
|
} Evt_Inst_Index_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct Evt_Node_Info_s { |
|
|
|
|
|
struct Evt_Node_Info_s *next; /* the next in the linked list */ |
|
|
|
|
|
|
|
|
struct Evt_Node_Info { |
|
|
|
|
|
Evt_Node_Info_t *next; /* the next in the linked list */ |
|
|
char *name; /* Name of node in deck */ |
|
|
char *name; /* Name of node in deck */ |
|
|
int udn_index; /* Index of the node type */ |
|
|
int udn_index; /* Index of the node type */ |
|
|
Mif_Boolean_t invert; /* True if need to make inverted copy */ |
|
|
Mif_Boolean_t invert; /* True if need to make inverted copy */ |
|
|
@ -86,14 +87,14 @@ typedef struct Evt_Node_Info_s { |
|
|
int num_outputs; /* Number of outputs connected to this node */ |
|
|
int num_outputs; /* Number of outputs connected to this node */ |
|
|
int num_insts; /* The number of insts receiving node as input */ |
|
|
int num_insts; /* The number of insts receiving node as input */ |
|
|
Evt_Inst_Index_t *inst_list; /* Linked list of indexes of these instances */ |
|
|
Evt_Inst_Index_t *inst_list; /* Linked list of indexes of these instances */ |
|
|
} Evt_Node_Info_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct Evt_Inst_Info_s { |
|
|
|
|
|
struct Evt_Inst_Info_s *next; /* the next in the linked list of node info */ |
|
|
|
|
|
|
|
|
struct Evt_Inst_Info { |
|
|
|
|
|
Evt_Inst_Info_t *next; /* the next in the linked list of node info */ |
|
|
MIFinstance *inst_ptr; /* Pointer to MIFinstance struct for this instance */ |
|
|
MIFinstance *inst_ptr; /* Pointer to MIFinstance struct for this instance */ |
|
|
} Evt_Inst_Info_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Info { |
|
|
Evt_Inst_Info_t *inst_list; /* static info about event/hybrid instances */ |
|
|
Evt_Inst_Info_t *inst_list; /* static info about event/hybrid instances */ |
|
|
Evt_Node_Info_t *node_list; /* static info about event nodes */ |
|
|
Evt_Node_Info_t *node_list; /* static info about event nodes */ |
|
|
Evt_Port_Info_t *port_list; /* static info about event ports */ |
|
|
Evt_Port_Info_t *port_list; /* static info about event ports */ |
|
|
@ -103,7 +104,7 @@ typedef struct { |
|
|
Evt_Node_Info_t **node_table; /* vector of pointers to elements in node_list */ |
|
|
Evt_Node_Info_t **node_table; /* vector of pointers to elements in node_list */ |
|
|
Evt_Port_Info_t **port_table; /* vector of pointers to elements in port_list */ |
|
|
Evt_Port_Info_t **port_table; /* vector of pointers to elements in port_list */ |
|
|
Evt_Output_Info_t **output_table; /* vector of pointers to elements in output_list */ |
|
|
Evt_Output_Info_t **output_table; /* vector of pointers to elements in output_list */ |
|
|
} Evt_Info_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -118,13 +119,13 @@ typedef struct { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_Inst_Event_s { |
|
|
|
|
|
struct Evt_Inst_Event_s *next; /* the next in the linked list */ |
|
|
|
|
|
|
|
|
struct Evt_Inst_Event { |
|
|
|
|
|
Evt_Inst_Event_t *next; /* the next in the linked list */ |
|
|
double event_time; /* Time for this event to happen */ |
|
|
double event_time; /* Time for this event to happen */ |
|
|
double posted_time; /* Time at which event was entered in queue */ |
|
|
double posted_time; /* Time at which event was entered in queue */ |
|
|
} Evt_Inst_Event_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Inst_Queue { |
|
|
Evt_Inst_Event_t **head; /* Beginning of linked lists */ |
|
|
Evt_Inst_Event_t **head; /* Beginning of linked lists */ |
|
|
Evt_Inst_Event_t ***current; /* Beginning of pending events */ |
|
|
Evt_Inst_Event_t ***current; /* Beginning of pending events */ |
|
|
Evt_Inst_Event_t ***last_step; /* Values of 'current' at last accepted timepoint */ |
|
|
Evt_Inst_Event_t ***last_step; /* Values of 'current' at last accepted timepoint */ |
|
|
@ -140,33 +141,33 @@ typedef struct { |
|
|
int num_to_call; /* Count of number of instances that need to be called */ |
|
|
int num_to_call; /* Count of number of instances that need to be called */ |
|
|
int *to_call_index; /* Indexes of instances to be called */ |
|
|
int *to_call_index; /* Indexes of instances to be called */ |
|
|
Mif_Boolean_t *to_call; /* Flags used to prevent multiple entries */ |
|
|
Mif_Boolean_t *to_call; /* Flags used to prevent multiple entries */ |
|
|
} Evt_Inst_Queue_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Node_Queue { |
|
|
int num_to_eval; /* Count of number of nodes that need to be evaluated */ |
|
|
int num_to_eval; /* Count of number of nodes that need to be evaluated */ |
|
|
int *to_eval_index; /* Indexes of nodes to be evaluated */ |
|
|
int *to_eval_index; /* Indexes of nodes to be evaluated */ |
|
|
Mif_Boolean_t *to_eval; /* Flags used to prevent multiple entries */ |
|
|
Mif_Boolean_t *to_eval; /* Flags used to prevent multiple entries */ |
|
|
int num_changed; /* Count of number of nodes that changed */ |
|
|
int num_changed; /* Count of number of nodes that changed */ |
|
|
int *changed_index; /* Indexes of nodes that changed */ |
|
|
int *changed_index; /* Indexes of nodes that changed */ |
|
|
Mif_Boolean_t *changed; /* Flags used to prevent multiple entries */ |
|
|
Mif_Boolean_t *changed; /* Flags used to prevent multiple entries */ |
|
|
} Evt_Node_Queue_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_Output_Event_s { |
|
|
|
|
|
struct Evt_Output_Event_s *next; /* the next in the linked list */ |
|
|
|
|
|
|
|
|
struct Evt_Output_Event { |
|
|
|
|
|
Evt_Output_Event_t *next; /* the next in the linked list */ |
|
|
double event_time; /* Time for this event to happen */ |
|
|
double event_time; /* Time for this event to happen */ |
|
|
double posted_time; /* Time at which event was entered in queue */ |
|
|
double posted_time; /* Time at which event was entered in queue */ |
|
|
Mif_Boolean_t removed; /* True if event has been deactivated */ |
|
|
Mif_Boolean_t removed; /* True if event has been deactivated */ |
|
|
double removed_time; /* Time at which event was deactivated */ |
|
|
double removed_time; /* Time at which event was deactivated */ |
|
|
void *value; /* The delayed value sent to this output */ |
|
|
void *value; /* The delayed value sent to this output */ |
|
|
} Evt_Output_Event_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Output_Queue { |
|
|
Evt_Output_Event_t **head; /* Beginning of linked lists */ |
|
|
Evt_Output_Event_t **head; /* Beginning of linked lists */ |
|
|
Evt_Output_Event_t ***current; /* Beginning of pending events */ |
|
|
Evt_Output_Event_t ***current; /* Beginning of pending events */ |
|
|
Evt_Output_Event_t ***last_step; /* Values of 'current' at last accepted timepoint */ |
|
|
Evt_Output_Event_t ***last_step; /* Values of 'current' at last accepted timepoint */ |
|
|
@ -182,16 +183,16 @@ typedef struct { |
|
|
int num_changed; /* Count of number of outputs that changed */ |
|
|
int num_changed; /* Count of number of outputs that changed */ |
|
|
int *changed_index; /* Indexes of outputs that changed */ |
|
|
int *changed_index; /* Indexes of outputs that changed */ |
|
|
Mif_Boolean_t *changed; /* Flags used to prevent multiple entries */ |
|
|
Mif_Boolean_t *changed; /* Flags used to prevent multiple entries */ |
|
|
} Evt_Output_Queue_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Queue { |
|
|
Evt_Inst_Queue_t inst; /* dynamic queue for instances */ |
|
|
Evt_Inst_Queue_t inst; /* dynamic queue for instances */ |
|
|
Evt_Node_Queue_t node; /* dynamic queue of changing nodes */ |
|
|
Evt_Node_Queue_t node; /* dynamic queue of changing nodes */ |
|
|
Evt_Output_Queue_t output; /* dynamic queue of delayed outputs */ |
|
|
Evt_Output_Queue_t output; /* dynamic queue of delayed outputs */ |
|
|
} Evt_Queue_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -203,16 +204,16 @@ typedef struct { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_Node_s { |
|
|
|
|
|
struct Evt_Node_s *next; /* pointer to next in linked list */ |
|
|
|
|
|
|
|
|
struct Evt_Node { |
|
|
|
|
|
Evt_Node_t *next; /* pointer to next in linked list */ |
|
|
Mif_Boolean_t op; /* true if computed from op analysis */ |
|
|
Mif_Boolean_t op; /* true if computed from op analysis */ |
|
|
double step; /* DC step or time at which data was computed */ |
|
|
double step; /* DC step or time at which data was computed */ |
|
|
void **output_value; /* Array of outputs posted to this node */ |
|
|
void **output_value; /* Array of outputs posted to this node */ |
|
|
void *node_value; /* Resultant computed from output values */ |
|
|
void *node_value; /* Resultant computed from output values */ |
|
|
void *inverted_value; /* Inverted copy of node_value */ |
|
|
void *inverted_value; /* Inverted copy of node_value */ |
|
|
} Evt_Node_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Node_Data { |
|
|
Evt_Node_t **head; /* Beginning of linked lists */ |
|
|
Evt_Node_t **head; /* Beginning of linked lists */ |
|
|
Evt_Node_t ***tail; /* Location of last item added to list */ |
|
|
Evt_Node_t ***tail; /* Location of last item added to list */ |
|
|
Evt_Node_t ***last_step; /* 'tail' at last accepted timepoint */ |
|
|
Evt_Node_t ***last_step; /* 'tail' at last accepted timepoint */ |
|
|
@ -223,28 +224,28 @@ typedef struct { |
|
|
Evt_Node_t *rhs; /* Location where model outputs are placed */ |
|
|
Evt_Node_t *rhs; /* Location where model outputs are placed */ |
|
|
Evt_Node_t *rhsold; /* Location where model inputs are retrieved */ |
|
|
Evt_Node_t *rhsold; /* Location where model inputs are retrieved */ |
|
|
double *total_load; /* Location where total load inputs are retrieved */ |
|
|
double *total_load; /* Location where total load inputs are retrieved */ |
|
|
} Evt_Node_Data_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_State_s { |
|
|
|
|
|
struct Evt_State_s *next; /* Pointer to next state */ |
|
|
|
|
|
struct Evt_State_s *prev; /* Pointer to previous state */ |
|
|
|
|
|
|
|
|
struct Evt_State { |
|
|
|
|
|
Evt_State_t *next; /* Pointer to next state */ |
|
|
|
|
|
Evt_State_t *prev; /* Pointer to previous state */ |
|
|
double step; /* Time at which state was assigned (0 for DC) */ |
|
|
double step; /* Time at which state was assigned (0 for DC) */ |
|
|
void *block; /* Block of memory holding all states on inst */ |
|
|
void *block; /* Block of memory holding all states on inst */ |
|
|
} Evt_State_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_State_Desc_s { |
|
|
|
|
|
struct Evt_State_Desc_s *next; /* Pointer to next description */ |
|
|
|
|
|
|
|
|
struct Evt_State_Desc { |
|
|
|
|
|
Evt_State_Desc_t *next; /* Pointer to next description */ |
|
|
int tag; /* Tag for this state */ |
|
|
int tag; /* Tag for this state */ |
|
|
int size; /* Size of this state */ |
|
|
int size; /* Size of this state */ |
|
|
int offset; /* Offset of this state into the state block */ |
|
|
int offset; /* Offset of this state into the state block */ |
|
|
} Evt_State_Desc_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_State_Data { |
|
|
Evt_State_t **head; /* Beginning of linked lists */ |
|
|
Evt_State_t **head; /* Beginning of linked lists */ |
|
|
Evt_State_t ***tail; /* Location of last item added to list */ |
|
|
Evt_State_t ***tail; /* Location of last item added to list */ |
|
|
Evt_State_t ***last_step; /* 'tail' at last accepted timepoint */ |
|
|
Evt_State_t ***last_step; /* 'tail' at last accepted timepoint */ |
|
|
@ -254,21 +255,21 @@ typedef struct { |
|
|
Mif_Boolean_t *modified; /* Flags used to prevent multiple entries */ |
|
|
Mif_Boolean_t *modified; /* Flags used to prevent multiple entries */ |
|
|
int *total_size; /* Total bytes for all states allocated */ |
|
|
int *total_size; /* Total bytes for all states allocated */ |
|
|
Evt_State_Desc_t **desc; /* Lists of description structures */ |
|
|
Evt_State_Desc_t **desc; /* Lists of description structures */ |
|
|
} Evt_State_Data_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Evt_Msg_s { |
|
|
|
|
|
struct Evt_Msg_s *next; /* Pointer to next state */ |
|
|
|
|
|
|
|
|
struct Evt_Msg { |
|
|
|
|
|
Evt_Msg_t *next; /* Pointer to next state */ |
|
|
Mif_Boolean_t op; /* true if output from op analysis */ |
|
|
Mif_Boolean_t op; /* true if output from op analysis */ |
|
|
double step; /* DC step or time at which message was output */ |
|
|
double step; /* DC step or time at which message was output */ |
|
|
char *text; /* The value of the message text */ |
|
|
char *text; /* The value of the message text */ |
|
|
int port_index; /* The index of the port from which the message came */ |
|
|
int port_index; /* The index of the port from which the message came */ |
|
|
} Evt_Msg_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Msg_Data { |
|
|
Evt_Msg_t **head; /* Beginning of linked lists */ |
|
|
Evt_Msg_t **head; /* Beginning of linked lists */ |
|
|
Evt_Msg_t ***tail; /* Location of last item added to list */ |
|
|
Evt_Msg_t ***tail; /* Location of last item added to list */ |
|
|
Evt_Msg_t ***last_step; /* 'tail' at last accepted timepoint */ |
|
|
Evt_Msg_t ***last_step; /* 'tail' at last accepted timepoint */ |
|
|
@ -276,26 +277,26 @@ typedef struct { |
|
|
int num_modified; /* Number modified since last accepted timepoint */ |
|
|
int num_modified; /* Number modified since last accepted timepoint */ |
|
|
int *modified_index; /* List of indexes modified */ |
|
|
int *modified_index; /* List of indexes modified */ |
|
|
Mif_Boolean_t *modified; /* Flags used to prevent multiple entries */ |
|
|
Mif_Boolean_t *modified; /* Flags used to prevent multiple entries */ |
|
|
} Evt_Msg_Data_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Statistic { |
|
|
int op_alternations; /* Total alternations between event and analog */ |
|
|
int op_alternations; /* Total alternations between event and analog */ |
|
|
int op_load_calls; /* Total load calls in DCOP analysis */ |
|
|
int op_load_calls; /* Total load calls in DCOP analysis */ |
|
|
int op_event_passes; /* Total passes through event iteration loop */ |
|
|
int op_event_passes; /* Total passes through event iteration loop */ |
|
|
int tran_load_calls; /* Total inst calls in transient analysis */ |
|
|
int tran_load_calls; /* Total inst calls in transient analysis */ |
|
|
int tran_time_backups; /* Number of transient timestep cuts */ |
|
|
int tran_time_backups; /* Number of transient timestep cuts */ |
|
|
} Evt_Statistic_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Data { |
|
|
Evt_Node_Data_t *node; /* dynamic event solution vector */ |
|
|
Evt_Node_Data_t *node; /* dynamic event solution vector */ |
|
|
Evt_State_Data_t *state; /* dynamic event instance state data */ |
|
|
Evt_State_Data_t *state; /* dynamic event instance state data */ |
|
|
Evt_Msg_Data_t *msg; /* dynamic event message data */ |
|
|
Evt_Msg_Data_t *msg; /* dynamic event message data */ |
|
|
Evt_Statistic_t *statistics; /* Statistics for events, etc. */ |
|
|
Evt_Statistic_t *statistics; /* Statistics for events, etc. */ |
|
|
} Evt_Data_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -304,14 +305,14 @@ typedef struct { |
|
|
/* **************** */ |
|
|
/* **************** */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Count { |
|
|
int num_insts; /* number of event/hybrid instances parsed */ |
|
|
int num_insts; /* number of event/hybrid instances parsed */ |
|
|
int num_hybrids; /* number of hybrids parsed */ |
|
|
int num_hybrids; /* number of hybrids parsed */ |
|
|
int num_hybrid_outputs; /* number of outputs on all hybrids parsed */ |
|
|
int num_hybrid_outputs; /* number of outputs on all hybrids parsed */ |
|
|
int num_nodes; /* number of event nodes parsed */ |
|
|
int num_nodes; /* number of event nodes parsed */ |
|
|
int num_ports; /* number of event ports parsed */ |
|
|
int num_ports; /* number of event ports parsed */ |
|
|
int num_outputs; /* number of event outputs parsed */ |
|
|
int num_outputs; /* number of event outputs parsed */ |
|
|
} Evt_Count_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -320,10 +321,10 @@ typedef struct { |
|
|
/* **************** */ |
|
|
/* **************** */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Limit { |
|
|
int max_event_passes; /* maximum loops in attempting convergence of event nodes */ |
|
|
int max_event_passes; /* maximum loops in attempting convergence of event nodes */ |
|
|
int max_op_alternations; /* maximum loops through event/analog alternation */ |
|
|
int max_op_alternations; /* maximum loops through event/analog alternation */ |
|
|
} Evt_Limit_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* ************** */ |
|
|
/* ************** */ |
|
|
@ -331,14 +332,14 @@ typedef struct { |
|
|
/* ************** */ |
|
|
/* ************** */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Job { |
|
|
int num_jobs; /* Number of jobs run */ |
|
|
int num_jobs; /* Number of jobs run */ |
|
|
char **job_name; /* Names of different jobs */ |
|
|
char **job_name; /* Names of different jobs */ |
|
|
Evt_Node_Data_t **node_data; /* node_data for different jobs */ |
|
|
Evt_Node_Data_t **node_data; /* node_data for different jobs */ |
|
|
Evt_State_Data_t **state_data; /* state_data for different jobs */ |
|
|
Evt_State_Data_t **state_data; /* state_data for different jobs */ |
|
|
Evt_Msg_Data_t **msg_data; /* messages for different jobs */ |
|
|
Evt_Msg_Data_t **msg_data; /* messages for different jobs */ |
|
|
Evt_Statistic_t **statistics; /* Statistics for different jobs */ |
|
|
Evt_Statistic_t **statistics; /* Statistics for different jobs */ |
|
|
} Evt_Job_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -347,16 +348,16 @@ typedef struct { |
|
|
/* ***************** */ |
|
|
/* ***************** */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Option { |
|
|
Mif_Boolean_t op_alternate; /* Alternate analog/event solutions in OP analysis */ |
|
|
Mif_Boolean_t op_alternate; /* Alternate analog/event solutions in OP analysis */ |
|
|
} Evt_Option_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* ****************** */ |
|
|
/* ****************** */ |
|
|
/* Main evt structure */ |
|
|
/* Main evt structure */ |
|
|
/* ****************** */ |
|
|
/* ****************** */ |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
|
|
|
struct Evt_Ckt_Data { |
|
|
Evt_Count_t counts; /* Number of insts, nodes, etc. */ |
|
|
Evt_Count_t counts; /* Number of insts, nodes, etc. */ |
|
|
Evt_Info_t info; /* Static info about insts, etc. */ |
|
|
Evt_Info_t info; /* Static info about insts, etc. */ |
|
|
Evt_Queue_t queue; /* Dynamic queued events */ |
|
|
Evt_Queue_t queue; /* Dynamic queued events */ |
|
|
@ -364,7 +365,7 @@ typedef struct { |
|
|
Evt_Limit_t limits; /* Iteration limits, etc. */ |
|
|
Evt_Limit_t limits; /* Iteration limits, etc. */ |
|
|
Evt_Job_t jobs; /* Data held from multiple job runs */ |
|
|
Evt_Job_t jobs; /* Data held from multiple job runs */ |
|
|
Evt_Option_t options; /* Data input on .options cards */ |
|
|
Evt_Option_t options; /* Data input on .options cards */ |
|
|
} Evt_Ckt_Data_t; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|