ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
utils.hpp
Go to the documentation of this file.
1
20
21#ifndef ABC__OPT__ESLIM__UTILS_h
22#define ABC__OPT__ESLIM__UTILS_h
23
24#include <vector>
25#include <unordered_map>
26#include <unordered_set>
27
29#include "misc/vec/vec.h"
30#include "aig/gia/gia.h"
31
33
34namespace eSLIM {
35
36 struct eSLIMConfig {
38 bool apply_strash = true;
39 bool fix_seed = false;
40 bool fill_subcircuits = false;
41 bool trial_limit_active = true;
42 bool allow_xors = false;
43
44 unsigned int timeout = 3600;
45 unsigned int iterations = 0;
46 unsigned int subcircuit_size_bound = 6;
47 unsigned int strash_intervall = 100;
48 int seed = 0;
49 unsigned int nselection_trials = 100;
50 double expansion_probability = 0.6;
51
52 // times given in sec
57
59 };
60
61 struct eSLIMLog {
62 unsigned int iteration_count = 0;
64 double synthesis_time = 0;
66
70
71 std::vector<ABC_UINT64_T> cummulative_sat_runtimes_per_size;
72 std::vector<int> nof_sat_calls_per_size;
73 std::vector<ABC_UINT64_T> cummulative_unsat_runtimes_per_size;
74 std::vector<int> nof_unsat_calls_per_size;
75
76 eSLIMLog(int size);
77 };
78
79 struct Subcircuit {
82 unsigned int nof_inputs;
83 std::unordered_map<int, std::unordered_set<int>> forbidden_pairs;
84 void free();
85 };
86
87 inline void Subcircuit::free() {
88 Vec_IntFree(nodes);
89 Vec_IntFree(io);
90 }
91
98
99}
100
102
103#endif
#define ABC_NAMESPACE_CXX_HEADER_START
#define ABC_NAMESPACE_CXX_HEADER_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
Vec_Int_t * io
Definition utils.hpp:81
Vec_Int_t * nodes
Definition utils.hpp:80
unsigned int nof_inputs
Definition utils.hpp:82
std::unordered_map< int, std::unordered_set< int > > forbidden_pairs
Definition utils.hpp:83
double expansion_probability
Definition utils.hpp:50
double dynamic_timeout_buffer_factor
Definition utils.hpp:56
unsigned int iterations
Definition utils.hpp:45
int minimum_dynamic_timeout_sample_size
Definition utils.hpp:55
unsigned int strash_intervall
Definition utils.hpp:47
int minimum_sat_timeout
Definition utils.hpp:53
bool fill_subcircuits
Definition utils.hpp:40
unsigned int subcircuit_size_bound
Definition utils.hpp:46
bool trial_limit_active
Definition utils.hpp:41
bool extended_normality_processing
Definition utils.hpp:37
unsigned int nselection_trials
Definition utils.hpp:49
unsigned int timeout
Definition utils.hpp:44
std::vector< int > nof_sat_calls_per_size
Definition utils.hpp:72
std::vector< int > nof_reduced_circuits_per_size
Definition utils.hpp:69
std::vector< int > nof_unsat_calls_per_size
Definition utils.hpp:74
unsigned int iteration_count
Definition utils.hpp:62
eSLIMLog(int size)
Definition utils.hpp:92
std::vector< ABC_UINT64_T > cummulative_sat_runtimes_per_size
Definition utils.hpp:71
double synthesis_time
Definition utils.hpp:64
std::vector< int > nof_replaced_circuits_per_size
Definition utils.hpp:68
double relation_generation_time
Definition utils.hpp:63
std::vector< int > nof_analyzed_circuits_per_size
Definition utils.hpp:67
std::vector< ABC_UINT64_T > cummulative_unsat_runtimes_per_size
Definition utils.hpp:73
unsigned int subcircuits_with_forbidden_pairs
Definition utils.hpp:65