abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
misc/espresso/main.h
Go to the documentation of this file.
1 /*
2  * Revision Control Information
3  *
4  * $Source$
5  * $Author$
6  * $Revision$
7  * $Date$
8  *
9  */
10 enum keys {
20 };
21 
22 /* Lookup table for program options */
23 struct {
24  char *name;
25  enum keys key;
26  int num_plas;
29 } option_table [] = {
30  /* ways to minimize functions */
31  "ESPRESSO", KEY_ESPRESSO, 1, TRUE, TRUE, /* must be first */
32  "many", KEY_MANY_ESPRESSO, 1, TRUE, TRUE,
33  "exact", KEY_exact, 1, TRUE, TRUE,
34  "qm", KEY_qm, 1, TRUE, TRUE,
35  "single_output", KEY_so, 1, TRUE, TRUE,
36  "so", KEY_so, 1, TRUE, TRUE,
37  "so_both", KEY_so_both, 1, TRUE, TRUE,
38  "simplify", KEY_simplify, 1, FALSE, FALSE,
39  "echo", KEY_echo, 1, FALSE, FALSE,
40 
41  /* output phase assignment and assignment of inputs to two-bit decoders */
42  "opo", KEY_opo, 1, TRUE, TRUE,
43  "opoall", KEY_opoall, 1, TRUE, TRUE,
44  "pair", KEY_pair, 1, TRUE, TRUE,
45  "pairall", KEY_pairall, 1, TRUE, TRUE,
46 
47  /* Ways to check covers */
48  "check", KEY_check, 1, TRUE, TRUE,
49  "stats", KEY_stats, 1, FALSE, FALSE,
50  "verify", KEY_verify, 2, FALSE, TRUE,
51  "PLAverify", KEY_PLA_verify, 2, FALSE, TRUE,
52 
53  /* hacks */
54  "equiv", KEY_equiv, 1, TRUE, TRUE,
55  "map", KEY_map, 1, FALSE, FALSE,
56  "mapdc", KEY_mapdc, 1, FALSE, FALSE,
57  "fsm", KEY_fsm, 1, FALSE, TRUE,
58 
59  /* the basic boolean operations on covers */
60  "contain", KEY_contain, 1, FALSE, FALSE,
61  "d1merge", KEY_d1merge, 1, FALSE, FALSE,
62  "d1merge_in", KEY_d1merge_in, 1, FALSE, FALSE,
63  "disjoint", KEY_disjoint, 1, TRUE, FALSE,
64  "dsharp", KEY_dsharp, 2, FALSE, FALSE,
65  "intersect", KEY_intersect, 2, FALSE, FALSE,
66  "minterms", KEY_minterms, 1, FALSE, FALSE,
67  "primes", KEY_primes, 1, FALSE, TRUE,
68  "separate", KEY_separate, 1, TRUE, TRUE,
69  "sharp", KEY_sharp, 2, FALSE, FALSE,
70  "union", KEY_union, 2, FALSE, FALSE,
71  "xor", KEY_xor, 2, TRUE, TRUE,
72 
73  /* debugging only -- call each step of the espresso algorithm */
74  "essen", KEY_essen, 1, FALSE, TRUE,
75  "expand", KEY_expand, 1, TRUE, FALSE,
76  "gasp", KEY_gasp, 1, TRUE, TRUE,
77  "irred", KEY_irred, 1, FALSE, TRUE,
78  "make_sparse", KEY_make_sparse, 1, TRUE, TRUE,
79  "reduce", KEY_reduce, 1, FALSE, TRUE,
80  "taut", KEY_taut, 1, FALSE, FALSE,
81  "super_gasp", KEY_super_gasp, 1, TRUE, TRUE,
82  "lexsort", KEY_lexsort, 1, FALSE, FALSE,
83  "test", KEY_test, 1, TRUE, TRUE,
84  0, KEY_unknown, 0, FALSE, FALSE /* must be last */
85 };
86 
87 
88 struct {
89  char *name;
90  int value;
91 } debug_table[] = {
92  "", EXPAND + ESSEN + IRRED + REDUCE + SPARSE + GASP + SHARP + MINCOV,
93  "compl", COMPL, "essen", ESSEN,
94  "expand", EXPAND, "expand1", EXPAND1|EXPAND,
95  "irred", IRRED, "irred1", IRRED1|IRRED,
96  "reduce", REDUCE, "reduce1", REDUCE1|REDUCE,
97  "mincov", MINCOV, "mincov1", MINCOV1|MINCOV,
98  "sparse", SPARSE, "sharp", SHARP,
99  "taut", TAUT, "gasp", GASP,
100  "exact", EXACT,
101  0,
102 };
103 
104 
105 struct {
106  char *name;
107  int *variable;
108  int value;
109 } esp_opt_table[] = {
110  "eat", &echo_comments, FALSE,
111  "eatdots", &echo_unknown_commands, FALSE,
112  "fast", &single_expand, TRUE,
113  "kiss", &kiss, TRUE,
114  "ness", &remove_essential, FALSE,
115  "nirr", &force_irredundant, FALSE,
116  "nunwrap", &unwrap_onset, FALSE,
117  "onset", &recompute_onset, TRUE,
118  "pos", &pos, TRUE,
119  "random", &use_random_order, TRUE,
120  "strong", &use_super_gasp, TRUE,
121  0,
122 };
bool single_expand
Definition: globals.c:34
struct @50 debug_table[]
#define FALSE
Definition: cudd.h:91
#define GASP
Definition: espresso.h:355
bool unwrap_onset
Definition: globals.c:37
int * variable
bool pos
Definition: globals.c:30
struct @49 option_table[]
bool needs_offset
int num_plas
struct @51 esp_opt_table[]
#define EXPAND
Definition: espresso.h:353
#define REDUCE1
Definition: espresso.h:358
#define REDUCE
Definition: espresso.h:357
#define EXPAND1
Definition: espresso.h:354
char * name
bool force_irredundant
Definition: globals.c:27
#define IRRED
Definition: espresso.h:356
#define MINCOV1
Definition: espresso.h:363
bool use_super_gasp
Definition: globals.c:39
bool echo_unknown_commands
Definition: globals.c:26
bool echo_comments
Definition: globals.c:25
bool use_random_order
Definition: globals.c:38
#define TAUT
Definition: espresso.h:360
#define SPARSE
Definition: espresso.h:359
#define TRUE
Definition: cudd.h:88
#define MINCOV
Definition: espresso.h:362
#define ESSEN
Definition: espresso.h:352
bool kiss
Definition: globals.c:29
#define IRRED1
Definition: espresso.h:365
enum keys key
int value
#define COMPL
Definition: espresso.h:351
#define SHARP
Definition: espresso.h:364
bool needs_dcset
bool remove_essential
Definition: globals.c:33
bool recompute_onset
Definition: globals.c:32
#define EXACT
Definition: espresso.h:361