AMulet 2.0
AIG Multiplier Verification Tool
substitution.h
Go to the documentation of this file.
1 /*------------------------------------------------------------------------*/
2 /* AMulet2 : AIG Multiplier Verification Tool.
3  *
4  * Copyright (C) 2020 Daniela Kaufmann, Johannes Kepler University Linz
5  *
6  * substitution.h: functions used for adder substitution
7  */
8 /*------------------------------------------------------------------------*/
9 #ifndef _substitution_H
10 #define _substitution_H
11 /*------------------------------------------------------------------------*/
12 #include <vector>
13 
14 #include "gate.h"
15 
16 /*------------------------------------------------------------------------*/
17 
23 bool all_single_output();
24 
30 bool all_outputs_are_xor();
31 
40 
47 bool cin_in_slice_0();
48 
56 unsigned get_input(bool flip = 0);
57 
63 void push_to_inputs(Gate * n);
64 
71 void push_to_outputs(Gate * n, int i);
72 
79 void push_to_cins(Gate * n, int i);
80 
86 void set_carry_in(Gate * n);
87 
91 void identify_carry_out();
92 
99 
104 void fix_inputs();
105 
117 bool follow_path_and_mark_gates(Gate * n, bool init = 0);
118 
126 
131 void correctly_mark_inputs();
132 
139 
140 /*------------------------------------------------------------------------*/
144 void add_original_adder();
145 
151 void fill_original_outputs();
152 
164 unsigned btor_ha(unsigned i1, unsigned i2, bool carry = 1);
165 
178 unsigned btor_fa(unsigned i1, unsigned i2, unsigned i3, bool carry = 1);
179 
184 void add_btor_adder();
185 
194 unsigned not_ (unsigned a);
195 
204 unsigned and_ (unsigned a, unsigned b);
205 
214 unsigned implies_ (unsigned a, unsigned b);
215 
224 unsigned xnor_ (unsigned a, unsigned b);
225 
232 bool build_miter();
233 
239 bool build_adder_miter();
240 
248 bool miter_to_file(FILE * file);
249 
257 bool trivial_miter_to_file(FILE * file);
258 /*------------------------------------------------------------------------*/
259 
260 
267 
268 
269 
270 #endif
bool identify_propagate_and_generate_gates()
Definition: substitution.cpp:125
unsigned xnor_(unsigned a, unsigned b)
Definition: substitution.cpp:604
bool follow_path_and_mark_gates(Gate *n, bool init=0)
Definition: substitution.cpp:251
unsigned btor_fa(unsigned i1, unsigned i2, unsigned i3, bool carry=1)
Definition: substitution.cpp:430
void correctly_mark_inputs()
Definition: substitution.cpp:293
bool trivial_miter_to_file(FILE *file)
Definition: substitution.cpp:729
bool cin_in_slice_0()
Definition: substitution.cpp:57
unsigned implies_(unsigned a, unsigned b)
Definition: substitution.cpp:598
bool all_outputs_are_xor()
Definition: substitution.cpp:38
void generate_rewritten_aig()
Definition: substitution.cpp:739
unsigned get_input(bool flip=0)
Definition: substitution.cpp:65
unsigned not_(unsigned a)
Definition: substitution.cpp:582
void set_carry_in(Gate *n)
Definition: substitution.cpp:99
unsigned and_(unsigned a, unsigned b)
Definition: substitution.cpp:584
Definition: gate.h:32
bool follow_all_output_paths_and_mark_gates()
Definition: substitution.cpp:278
void add_original_adder()
Definition: substitution.cpp:355
void fix_inputs()
Definition: substitution.cpp:218
contains the class Gate and further functions to organize the gate structure, such as initializing th...
void identify_carry_out()
Definition: substitution.cpp:107
bool miter_to_file(FILE *file)
Definition: substitution.cpp:654
void fill_original_outputs()
Definition: substitution.cpp:376
void push_to_inputs(Gate *n)
Definition: substitution.cpp:75
bool all_single_output()
Definition: substitution.cpp:28
void push_to_cins(Gate *n, int i)
Definition: substitution.cpp:90
void push_to_outputs(Gate *n, int i)
Definition: substitution.cpp:83
bool build_miter()
Definition: substitution.cpp:610
void add_btor_adder()
Definition: substitution.cpp:475
unsigned btor_ha(unsigned i1, unsigned i2, bool carry=1)
Definition: substitution.cpp:401
bool identify_final_stage_adder()
Definition: substitution.cpp:328
bool slice_two_needs_carry_in_slice_zero()
Definition: substitution.cpp:48
bool build_adder_miter()
Definition: substitution.cpp:643