Commit 3c636707 by chengshuyao

default setting, and debug some delete problems

parent e307a20b
......@@ -45,7 +45,7 @@ bool* io_generator_function(bool* input_data, bool* output_data) {
else
output_data[i] = output_data_temp[output_bit_index[i]];
}
delete [] output_data_temp;
arr_delete (output_data_temp);
return output_data;
}
......@@ -64,7 +64,7 @@ uint64_t* io_generator_function_vec(uint64_t* input_data, uint64_t* output_data)
else
output_data[i] = output_data_temp[output_bit_index[i]];
}
delete [] output_data_temp;
arr_delete (output_data_temp);
return output_data;
}
......@@ -81,8 +81,8 @@ public:
expand_input_bit_data = new bool [parameter_input_bit_width];
}
~node_index(){
//delete [] expand_input_bit_index;
//delete [] expand_input_bit_data;
arr_delete (expand_input_bit_index);
arr_delete (expand_input_bit_data);
}
};
......@@ -265,7 +265,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
area_parts[i] = search_order(start_node_partition , start_node_depth, start_node_index_partition, search_order_times, start_order);
area += area_parts[i];
//delete [] start_node_index_partition;
arr_delete (start_node_index_partition);
}
if(area<best_area){
best_area = area;
......@@ -340,11 +340,11 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
int use_part;
for (use_part=0;use_part<partition_parts;use_part++){
bool merge_success = 0;
for(int merge_part=use_part+1;merge_part<partition_parts;merge_part++){
for(int merge_part=use_part+1;merge_part<partition_parts+1;merge_part++){
//改变Partition Set
for (int i=0;i<max_partition_parts;i++){
for (int i=0;i<partition_parts;i++){
if(i<merge_part){
for(int j=0;j<max_partition_parts;j++){
partition_sets[i][j] = best_partition_sets[i][j];
......@@ -377,7 +377,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
cout<<"Partition_set ["<<i<<"] ";
int start_node_partition = 0;
for(int j=0;j<partition_parts;j++){
for(int j=0;j<max_partition_parts;j++){
cout<<partition_sets[i][j];
if(partition_sets[i][j]){
start_node_partition ++;
......@@ -394,7 +394,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
area_parts[i] = search_order(start_node_partition , start_node_depth, start_node_index_partition, search_order_times, start_order);
area += area_parts[i];
//delete [] start_node_index_partition;
arr_delete ( start_node_index_partition);
}
}
......@@ -488,15 +488,11 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
cout<<"###########################################################################"<<endl;
//for (int i=0;i<max_partition_parts;i++){
// delete [] partition_sets[i] ;
// delete [] best_partition_sets[i] ;
//}
//delete [] partition_sets ;
//delete [] best_partition_sets ;
arr2d_delete(partition_sets,max_partition_parts);
arr2d_delete(best_partition_sets,max_partition_parts);
//delete [] area_parts ;
//delete [] best_area_parts ;
arr_delete( area_parts );
arr_delete( best_area_parts );
};
int BSD_execute(int start_node_number, node_index* start_node_index,int variable_order_number, int* variable_order){
......@@ -544,7 +540,6 @@ int BSD_execute(int start_node_number, node_index* start_node_index,int variable
BDD_class_main.BDD_FULL_PROCESS();
for(int zi=0;zi<parameter_input_bit_width;zi++){
variable_order[zi] = BSD_features_0.variable_order [zi] ;
}
......@@ -950,16 +945,12 @@ int search_order(int start_node_number = default_start_node_number, int start_no
//area = BSD_execute(parameter_input_bit_width,best_variable_order,10000,best_partition_parts,best_order_num,output_partition_set);
//delete [] best_BDD_split_nodes ;
//delete [] best_areas ;
//delete [] best_rewards ;
//delete [] best_area_depths;
//for (int vi=0;vi<parameter_max_orders;vi++){
// delete [] multi_variable_order[vi];
// delete [] best_variable_order[vi];
//}
//delete [] multi_variable_order;
//delete [] best_variable_order;
arr_delete( best_BDD_split_nodes );
arr_delete( best_areas );
arr_delete( best_rewards) ;
arr_delete( best_area_depths);
arr2d_delete (multi_variable_order,parameter_max_orders);
arr2d_delete (best_variable_order,parameter_max_orders);
return reward;
};
......
......@@ -111,8 +111,8 @@ int BDD_class::next_bit_layer_single(int depth,int which_node_this_layer){
}
delete [] should_not_be_unfold;
delete [] which_node_this_layer_array;
arr_delete (should_not_be_unfold);
arr_delete (which_node_this_layer_array);
return most_influence_next;
};
......@@ -340,9 +340,9 @@ int BDD_class::next_bit_layer_1(int depth){
cout<<"模拟展开修改 "<<change_nodes [best_expansion_node]<<endl;
most_influence_next = best_expansion_node;
has_been_unfold[most_influence_next] = 1;
delete [] how_many_nodes_if_expansion ;
delete [] left_son_mask ;
delete [] right_son_mask ;
arr_delete (how_many_nodes_if_expansion );
arr_delete (left_son_mask );
arr_delete (right_son_mask) ;
}
return most_influence_next;
};
......
int BDD_class::print_circuit(BDD_node** BDD,int* most_influence,int node_depth, char* start_node_index_string){
int BDD_class::print_circuit(int node_depth, char* start_node_index_string){
int i,j;
int zi;
......
......@@ -28,7 +28,7 @@ int BDD_class::set_random_input_data(bool** mask_input_data){
return 0;
};
int BDD_class::mask_random_input_data(int depth,bool* mask,int amount,int* most_influence,bool** mask_input_data){
int BDD_class::mask_random_input_data(int depth,bool* mask,int amount,bool** mask_input_data){
int i,j;
//#pragma omp parallel for
for (i=0;i<amount;i++){
......
#include "head.h"
//#include "io_generator/c1355.h" //io_generator中需要包含对PI_WIDTH,PO_WIDTH的全局定义,如: extern const int PI_WIDTH = 36;
//#include "io_generator_vec/c1355_vec.h" //如果有对应Verilog, 可以在aag_to_rtl里面直接生成2个文件
#include "io_generator/c432.h" //io_generator中需要包含对PI_WIDTH,PO_WIDTH的全局定义,如: extern const int PI_WIDTH = 36;
#include "io_generator_vec/c432_vec.h" //如果有对应Verilog, 可以在aag_to_rtl里面直接生成2个文件
#include "io_generator/ip-cores/combinational_circuits/c_lod.h"
#include "io_generator/ip-cores/combinational_circuits_vec/c_lod_vec.h"
//#include "io_generator/ip-cores/combinational_circuits/c_lod.h"
//#include "io_generator/ip-cores/combinational_circuits_vec/c_lod_vec.h"
#define INPUT_AIG //io_generator是否可以用uint按位操作进行加速,也即是否包含_vec后缀的另一个io_generator
//#define SINGLE_BITS //io_generator是否包含每一个bit单独的io_generator_o{x}
#define SINGLE_BITS //io_generator是否包含每一个bit单独的io_generator_o{x}
#define SEARCH_PARTITION //BSD算法搜索partition策略
#define ACCURACY_FIRST //精度优先算法
//#define SEARCH_PARTITION //BSD算法搜索partition策略
//#define ACCURACY_FIRST //精度优先算法: 慢且面积冗余大,在精度是瓶颈时使用,不作为默认选项。
extern const int parameter_input_bit_width = PI_WIDTH +5 ;
int parameter_output_bit_width = PO_WIDTH;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment