00001 #ifndef __FSM_H__
00002 #define __FSM_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00026 #include <stdio.h>
00027
00028 #include "defines.h"
00029
00031 fsm* fsm_create(
00032 expression* from_state,
00033 expression* to_state,
00034 bool exclude
00035 );
00036
00038 void fsm_add_arc(
00039 fsm* table,
00040 expression* from_state,
00041 expression* to_state
00042 );
00043
00045 void fsm_create_tables( fsm* table );
00046
00048 void fsm_db_write( fsm* table, FILE* file, bool ids_issued );
00049
00051 void fsm_db_read( char** line, func_unit* funit );
00052
00054 void fsm_db_merge(
00055 fsm* base,
00056 char** line
00057 );
00058
00060 void fsm_merge(
00061 fsm* base,
00062 fsm* other
00063 );
00064
00066 void fsm_table_set(
00067 expression* expr,
00068 const sim_time* time
00069 );
00070
00072 void fsm_get_stats(
00073 fsm_link* table,
00074 int* state_hit,
00075 int* state_total,
00076 int* arc_hit,
00077 int* arc_total,
00078 int* arc_excluded
00079 );
00080
00082 void fsm_get_funit_summary(
00083 func_unit* funit,
00084 int* hit,
00085 int* excluded,
00086 int* total
00087 );
00088
00090 void fsm_get_inst_summary(
00091 funit_inst* inst,
00092 int* hit,
00093 int* excluded,
00094 int* total
00095 );
00096
00098 void fsm_collect(
00099 func_unit* funit,
00100 int cov,
00101 sig_link** sig_head,
00102 sig_link** sig_tail,
00103 int** expr_ids,
00104 int** excludes
00105 );
00106
00108 void fsm_get_coverage(
00109 func_unit* funit,
00110 int expr_id,
00111 char*** total_fr_states,
00112 unsigned int* total_fr_state_num,
00113 char*** total_to_states,
00114 unsigned int* total_to_state_num,
00115 char*** hit_fr_states,
00116 unsigned int* hit_fr_state_num,
00117 char*** hit_to_states,
00118 unsigned int* hit_to_state_num,
00119 char*** total_from_arcs,
00120 char*** total_to_arcs,
00121 int** total_ids,
00122 int** excludes,
00123 char*** reasons,
00124 int* total_arc_num,
00125 char*** hit_from_arcs,
00126 char*** hit_to_arcs,
00127 int* hit_arc_num,
00128 char*** input_state,
00129 unsigned int* input_size,
00130 char*** output_state,
00131 unsigned int* output_size
00132 );
00133
00135 void fsm_report( FILE* ofile, bool verbose );
00136
00138 void fsm_dealloc( fsm* table );
00139
00140 #endif
00141