110 Gate (
int n_, std::string name_,
int level_,
bool input_ = 0,
bool output_ = 0);
395 std::map<Gate*, Polynomial*>::const_iterator
anc_begin()
const {
396 return ancestors.begin();
404 std::map<Gate*, Polynomial*>::const_iterator
anc_end()
const {
405 return ancestors.end();
415 return ancestors.find(n);
432 return parents.begin();
441 return parents.end();
478 return children.begin();
487 return children.end();
void reset_fsa_inp()
Definition: gate.h:303
const Var * v
Variable of the gate, as used in the polynomials.
Definition: gate.h:35
bool get_output() const
Definition: gate.h:145
void set_gate_constraint(Polynomial *p)
Definition: gate.h:367
~Gate()
Definition: gate.cpp:29
bool get_pp() const
Definition: gate.h:152
Polynomial * co_factor
Polynomial generated as co-factor for nss proofs (-certify)
Definition: gate.h:89
int carry_gate
Counts how often gate is used in bigger slice.
Definition: gate.h:59
bool get_input() const
Definition: gate.h:138
void set_slice(int val)
Definition: gate.h:247
bool get_prop_gen_gate() const
Definition: gate.h:264
void unmark_prop_gen_gate()
Definition: gate.h:274
void set_xor_gate(int val)
Definition: gate.h:209
Definition: variable.h:20
const char * get_var_name() const
Definition: gate.h:131
bool get_bo() const
Definition: gate.h:336
bool get_moved() const
Definition: gate.h:324
Polynomial * positive_poly(const Var *v)
Definition: gate.cpp:342
void set_children_back(Gate *n)
Definition: gate.h:523
bool signed_mult
set to true when a signed or unsigned multiplier is verified
Definition: gate.cpp:15
bool is_child(const Gate *n) const
Definition: gate.cpp:54
void mark_fsa()
Definition: gate.h:286
std::list< Gate * >::const_iterator parents_begin() const
Definition: gate.h:431
bool input
True if gate is an input.
Definition: gate.h:38
void set_carry_gate(int val)
Definition: gate.h:223
bool get_fsa() const
Definition: gate.h:281
int get_xor_gate() const
Definition: gate.h:202
void inc_fsa_inp()
Definition: gate.h:298
int fsa_inp
True if gate is input of complex fsa (-substitute)
Definition: gate.h:71
bool get_xor_chain() const
Definition: gate.h:190
void children_push_back(Gate *n)
Definition: gate.h:530
void set_cofactor(Polynomial *p)
Definition: gate.h:388
bool bo
True if gate is identified to belong to booth pattern.
Definition: gate.h:80
std::list< Gate * > children
list of gates that are children
Definition: gate.h:98
bool get_neg() const
Definition: gate.h:310
void inc_slice()
Definition: gate.h:252
int get_slice() const
Definition: gate.h:240
Gate * parents_front() const
Definition: gate.h:456
const char * get_name() const
Definition: variable.h:51
contains arithmetic operations for polynomials
void inc_carry_gate()
Definition: gate.h:228
bool fsa
True if gate is identified to belong to complex fsa (-substitute)
Definition: gate.h:68
void mark_xor_chain()
Definition: gate.h:195
std::map< Gate *, Polynomial * >::iterator search_in_anc(Gate *n)
Definition: gate.h:414
contains functions to parse and manipulate the input AIG
Polynomial * get_gate_constraint() const
Definition: gate.h:360
bool get_elim() const
Definition: gate.h:348
std::list< Gate * > parents
list of gates that are parents
Definition: gate.h:95
std::list< Gate * >::const_iterator children_begin() const
Definition: gate.h:477
Gate * gate(unsigned lit)
Definition: gate.cpp:71
bool booth
set to true when the multiplier contains a booth pattern
Definition: gate.cpp:14
Gate ** gates
Gate ** where all gates are stored.
Definition: gate.cpp:66
std::map< Gate *, Polynomial * > ancestors
Used to store all dependencies in nss proofs (-certify)
Definition: gate.h:92
std::map< Gate *, Polynomial * >::const_iterator anc_begin() const
Definition: gate.h:395
bool orig() const
Definition: gate.cpp:23
void print(FILE *file, bool end=1) const
Definition: polynomial.cpp:30
void mark_moved()
Definition: gate.h:329
bool output
True if the gate is an output s_i.
Definition: gate.h:41
void allocate_gates(bool assert=1)
Definition: gate.cpp:78
Polynomial * get_cofactor() const
Definition: gate.h:381
std::map< Gate *, Polynomial * >::const_iterator anc_end() const
Definition: gate.h:404
void children_remove(Gate *n)
Definition: gate.h:537
const Var * get_var() const
Definition: gate.h:117
void dec_slice()
Definition: gate.h:257
bool upper_half_xor_output()
Definition: gate.cpp:194
Polynomial * negative_poly(const Var *v)
Definition: gate.cpp:327
void set_neg(bool val)
Definition: gate.h:317
Gate * xor_left_child(const Gate *n)
Definition: gate.cpp:204
bool moved
True if gate has been moved during fix_xors.
Definition: gate.h:77
void dec_carry_gate()
Definition: gate.h:233
Polynomial * gate_constraint
Polynomial implied by the aig gate.
Definition: gate.h:86
int level
Distance to inputs.
Definition: gate.h:50
bool elim
True if gate is eliminated during preprocessing.
Definition: gate.h:83
void set_xor()
Definition: gate.cpp:158
bool xor_chain
set to true when the last slice contains an xor_chain
Definition: gate.cpp:13
bool is_in_parents(const Gate *n) const
Definition: gate.cpp:42
int slice
slice a gate is attached to
Definition: gate.h:62
void mark_aig_outputs()
Definition: gate.cpp:127
std::list< Gate * >::const_iterator parents_end() const
Definition: gate.h:440
Gate(int n_, std::string name_, int level_, bool input_=0, bool output_=0)
Definition: gate.cpp:18
int get_carry_gate() const
Definition: gate.h:216
void print_gate_constraint(FILE *file) const
Definition: gate.h:374
void delete_gates()
Definition: gate.cpp:420
unsigned num_gates
Counts the number of gates.
Definition: gate.cpp:67
void mark_elim()
Definition: gate.h:353
Gate * children_front() const
Definition: gate.h:502
void init_gate_constraints()
Definition: gate.cpp:354
int get_fsa_inp() const
Definition: gate.h:293
int xor_gate
is set to 1 for root node, 2 for internal nodes of XORs
Definition: gate.h:56
void set_children_front(Gate *n)
Definition: gate.h:516
Gate * children_back() const
Definition: gate.h:509
bool aig_output
True if the gate is an output in the aig.
Definition: gate.h:44
void parents_remove(Gate *n)
Definition: gate.h:470
void mark_pp()
Definition: gate.h:157
void set_level(int l)
Definition: gate.h:183
void mark_prop_gen_gate()
Definition: gate.h:269
bool partial_product
True if gate is identified as a partial product.
Definition: gate.h:47
void set_parents_and_children(bool set_children)
Definition: gate.cpp:275
int get_level() const
Definition: gate.h:176
void mark_aig_output()
Definition: gate.h:169
size_t parents_size() const
Definition: gate.h:449
void mark_xor_chain_in_last_slice()
Definition: gate.cpp:240
Gate * derive_ha_and_gate(const Gate *n)
Definition: gate.cpp:137
std::list< Gate * >::const_iterator children_end() const
Definition: gate.h:486
bool prop_gen_gate
True if circuit is a prop_gen_gate (-substitute)
Definition: gate.h:65
void set_ancestor(Gate *n, Polynomial *p)
Definition: gate.h:424
Definition: polynomial.h:23
bool xor_chain
True if gate belongs to xor_chain in last slice.
Definition: gate.h:53
bool neg
True if gate occurs negative (-substitute)
Definition: gate.h:74
int get_var_num() const
Definition: gate.h:124
Gate * xor_right_child(const Gate *n)
Definition: gate.cpp:222
void parents_push_back(Gate *n)
Definition: gate.h:463
size_t children_size() const
Definition: gate.h:495
void mark_bo()
Definition: gate.h:341
bool get_aig_output() const
Definition: gate.h:164
int get_num() const
Definition: variable.h:69