| #ifndef __ACE_ACE_H__ | |
| #define __ACE_ACE_H__ | |
| #include <math.h> | |
| #include "abc.h" | |
| #define bool int | |
| #define TRUE 1 | |
| #define FALSE 0 | |
| #define EPSILON 0.00001 | |
| #define MIN(a,b) (a < b ? a : b) | |
| #define MAX(a,b) (a > b ? a : b) | |
| #define ACE_P0TO1(P1,PS) ((P1)==0.0)?0.0:(((P1)==1.0)?1.0:0.5*PS/(1.0-(P1))) | |
| #define ACE_P1TO0(P1,PS) ((P1)==0.0)?1.0:(((P1)==0.0)?0.0:0.5*PS/(P1)) | |
| #define ACE_ERROR 1 | |
| #define ACE_OPEN -1.0 | |
| #define ACE_PI_STATIC_PROB 0.5 /* Assumed probability of the primary inputs */ | |
| #define ACE_PI_SWITCH_PROB 0.2 /* Assumed switching probability of the PIs */ | |
| #define ACE_PI_SWITCH_ACT 0.2 /* Assumed tx activity of the primary inputs */ | |
| #define ACE_CHAR_BUFFER_SIZE 4096 | |
| #define ACE_NUM_VECTORS 5000 | |
| typedef enum { | |
| ACE_VEC, ACE_ACT, ACE_PD, ACE_CODED | |
| } ace_pi_format_t; | |
| typedef enum { | |
| ACE_UNDEF, ACE_DEF, ACE_SIM, ACE_NEW, ACE_OLD | |
| } ace_status_t; | |
| void prob_epsilon_fix(double * d); | |
| typedef struct { | |
| ace_status_t status; | |
| int value; | |
| int flag; | |
| int depth; | |
| int num_ones; | |
| int num_toggles; | |
| int num_valid; | |
| int * values; | |
| double static_prob; | |
| double switch_prob; | |
| double switch_act; | |
| double prob0to1; | |
| double prob1to0; | |
| } Ace_Obj_Info_t; /* Activity info for each node */ | |
| extern st_table * ace_info_hash_table; | |
| inline Ace_Obj_Info_t * Ace_ObjInfo(Abc_Obj_t * obj); | |
| //static inline void Ace_InfoPtrSet(Abc_Obj_t * obj_ptr, Ace_Obj_Info_t* info_ptr) {obj_ptr->pTemp = info_ptr; } | |
| #endif |