00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef MULTIPLIERS_H
00024 #define MULTIPLIERS_H
00025
00026 #include "read_xml_arch_file.h"
00027 #include "util.h"
00028
00029 typedef struct s_multiplier
00030 {
00031 int size_a;
00032 int size_b;
00033 int size_out;
00034 struct s_multiplier *next;
00035 } t_multiplier;
00036
00037 extern t_model *hard_multipliers;
00038 extern struct s_linked_vptr *mult_list;
00039 extern int min_mult;
00040
00041 extern void init_mult_distribution();
00042 extern void report_mult_distribution();
00043 extern void declare_hard_multiplier(nnode_t *node);
00044 extern void instantiate_hard_multiplier(nnode_t *node, short mark, netlist_t *netlist);
00045 extern void instantiate_simple_soft_multiplier(nnode_t *node, short mark, netlist_t *netlist);
00046 extern void find_hard_multipliers();
00047 extern void add_the_blackbox_for_mults(FILE *out);
00048 extern void define_mult_function(nnode_t *node, short type, FILE *out);
00049 extern void split_multiplier(nnode_t *node, int a0, int b0, int a1, int b1);
00050 extern void iterate_multipliers(netlist_t *netlist);
00051 extern void clean_multipliers();
00052
00053 #endif // MULTIPLIERS_H
00054