contains functions slice and order the gates More...
Go to the source code of this file.
Functions | |
void | init_slices () |
void | print_slices () |
const Gate * | topological_largest_child (const Gate *n) |
void | fix_slice (Gate *n, int i) |
void | slice_by_xor_chains () |
void | upwards_slicing (const Gate *n, const Gate *pre) |
void | slice_jut_gates () |
int | fix_xors () |
void | fix_jut_gates () |
void | slicing_xor () |
void | input_cone (Gate *n, int num) |
void | find_carries () |
bool | search_for_booth_pattern () |
void | merge_all () |
void | promote_all () |
void | fill_slices () |
void | slicing_non_xor () |
Variables | |
std::vector< std::list< Gate * > > | slices |
vector-list Gate* matrix to store slices More... | |
contains functions slice and order the gates
Part of AMulet2.0 : AIG Multiplier Verification Tool. Copyright (C) 2020 Daniela Kaufmann, Johannes Kepler University Linz
void fill_slices | ( | ) |
Fills the slices by adding the gates that are assigned to slices
void find_carries | ( | ) |
Identify those gates that are input in bigger slices
void fix_jut_gates | ( | ) |
If fix_xors() is applied also the jut gates need to be fixed.
void fix_slice | ( | Gate * | n, |
int | i | ||
) |
Move gate n to slice i and insert it before it's topological_largest_child.
n | Gate* |
i | integer, for new slice index |
int fix_xors | ( | ) |
Fix some xors, that are assigned to different slices (needed for 7,3 counter trees )
void init_slices | ( | ) |
Allocates the memory for the slices and adds the output gate of each slice
void input_cone | ( | Gate * | n, |
int | num | ||
) |
Mark the children of gate n to slice num, if not assigned otherwise.
n | Gate* |
num | integer for slice index |
void merge_all | ( | ) |
We repeatedly move gates to smaller slices.
void print_slices | ( | ) |
Prints the polynomials in the slices to stdout
void promote_all | ( | ) |
We repeatedly move gates to bigger slices.
bool search_for_booth_pattern | ( | ) |
Identifies whether polynomials use a booth pattern (as in the aoki benchmarks)
void slice_by_xor_chains | ( | ) |
Attach gates to slices by following xor-chains from the output gates.
void slice_jut_gates | ( | ) |
Slice gates that are between xor-chains, using upwards_slicing
void slicing_non_xor | ( | ) |
Overall slicing routine, that does not depend on xor-chains
void slicing_xor | ( | ) |
Overall slicing routine based on xor gates, calls all other functions automatically
Returns the child that has the highest position in a slice
n | Gate* for parent |
Inserts the parents of n before pre in the slice of pre
n | Gate* |
pre | Gate* |
std::vector<std::list<Gate*> > slices |
vector-list Gate* matrix to store slices