Commit 08ef141d by chengshuyao

Debug accuracy first mode

parent ffc7ec2e
...@@ -26,8 +26,8 @@ public: ...@@ -26,8 +26,8 @@ public:
mask = new bool [parameter_input_bit_width]; mask = new bool [parameter_input_bit_width];
}; };
~BDD_node(){ ~BDD_node(){
arr_delete ( which_root_node_all ); //arr_delete ( which_root_node_all );
arr_delete ( mask ); //arr_delarr_delete ( mask );
}; };
}; };
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
mask = new bool [parameter_input_bit_width]; mask = new bool [parameter_input_bit_width];
} }
~BDD_node_mask(){ ~BDD_node_mask(){
arr_delete (mask); //arr_delete (mask);
} }
}; };
class BDD_class{ class BDD_class{
...@@ -809,8 +809,8 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st ...@@ -809,8 +809,8 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
//cout<<"all zero right"<<all_zero_right_list[j] <<endl; //cout<<"all zero right"<<all_zero_right_list[j] <<endl;
//cout<<"all one right"<<all_one_right_list[j] <<endl; //cout<<"all one right"<<all_one_right_list[j] <<endl;
} }
arr_delete( left_mask_output_data_tmp ); //arr_delete( left_mask_output_data_tmp );
arr_delete( right_mask_output_data_tmp); //arr_delete( right_mask_output_data_tmp);
} }
cout<<"Finish all one all zero compare "<<endl; cout<<"Finish all one all zero compare "<<endl;
...@@ -1092,8 +1092,8 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st ...@@ -1092,8 +1092,8 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
cout<<"######################################################################"<<endl; cout<<"######################################################################"<<endl;
} }
arr_delete( root_nodes_leafs); //arr_delete( root_nodes_leafs);
arr_delete( leaf_nodes_roots); //arr_delete( leaf_nodes_roots);
return 0; return 0;
}; };
......
...@@ -10,7 +10,7 @@ extern const int parameter_max_orders = 1; ...@@ -10,7 +10,7 @@ extern const int parameter_max_orders = 1;
//算法的parameter Algorithm_parameter //算法的parameter Algorithm_parameter
extern const int parameter_multi_output_index = 0; //BSD从第几层开始化简,前面若干层展开序确定 extern const int parameter_multi_output_index = 0; //BSD从第几层开始化简,前面若干层展开序确定
extern const int parameter_max_BDD_width = 320000; //BSD每一层最多多少个节点 extern const int parameter_max_BDD_width = 32000; //BSD每一层最多多少个节点
int parameter_early_stop_depth = parameter_input_bit_width; //BSD到第几层终止,输出此时的不准确BSD int parameter_early_stop_depth = parameter_input_bit_width; //BSD到第几层终止,输出此时的不准确BSD
int parameter_early_stop_split_nodes= 1000000; //BSD每一层最多多少个节点 int parameter_early_stop_split_nodes= 1000000; //BSD每一层最多多少个节点
...@@ -290,7 +290,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n ...@@ -290,7 +290,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
} }
char* start_node_index_string = new char [parameter_output_bit_width+1]; char* start_node_index_string = new char [parameter_output_bit_width+1];
ofstream function_top_file("function_top.v"); ofstream function_top_file("rtl/function_top.v");
for (int i = 0 ;i < best_partition_parts;i++){ for (int i = 0 ;i < best_partition_parts;i++){
for (int j=0;j<parameter_output_bit_width;j++){ for (int j=0;j<parameter_output_bit_width;j++){
if(best_partition_sets[i][j]){ if(best_partition_sets[i][j]){
...@@ -531,8 +531,8 @@ int BSD_execute(int start_node_number, node_index* start_node_index,int variable ...@@ -531,8 +531,8 @@ int BSD_execute(int start_node_number, node_index* start_node_index,int variable
BDD_class_main.start_nodes = new BDD_node [BDD_class_main.how_many_start_nodes]; BDD_class_main.start_nodes = new BDD_node [BDD_class_main.how_many_start_nodes];
for(int zi=0;zi<BDD_class_main.how_many_start_nodes;zi++){ for(int zi=0;zi<BDD_class_main.how_many_start_nodes;zi++){
BDD_class_main.start_node_index[zi] = start_node_index[zi]; BDD_class_main.start_node_index[zi] = start_node_index[zi];
BDD_class_main.start_nodes[zi].which_bit_output = zi; BDD_class_main.start_nodes[zi].which_bit_output = start_node_index[zi].root_node_index;
BDD_class_main.start_nodes[zi].which_root_node = zi; BDD_class_main.start_nodes[zi].which_root_node = start_node_index[zi].root_node_index;
BDD_class_main.start_nodes[zi].which_root_node_all[BDD_class_main.start_nodes[zi].which_root_node] = 1; BDD_class_main.start_nodes[zi].which_root_node_all[BDD_class_main.start_nodes[zi].which_root_node] = 1;
} }
for(int zi=0;zi<parameter_input_bit_width+1;zi++){ for(int zi=0;zi<parameter_input_bit_width+1;zi++){
......
#include "head.h" #include "head.h"
#include "io_generator/c1355.h" //io_generator中需要包含对PI_WIDTH,PO_WIDTH的全局定义,如: extern const int PI_WIDTH = 36; #include "io_generator/c3540.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_vec/c3540_vec.h" //如果有对应Verilog, 可以在aag_to_rtl里面直接生成2个文件
//#include "io_generator/ip-cores/combinational_circuits/c_lod.h" //#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_vec/c_lod_vec.h"
#define INPUT_AIG //io_generator是否可以用uint按位操作进行加速,也即是否包含_vec后缀的另一个io_generator #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 SEARCH_PARTITION //BSD算法搜索partition策略
//#define ACCURACY_FIRST //精度优先算法: 慢且面积冗余大,在精度是瓶颈时使用,不作为默认选项。 #define ACCURACY_FIRST //精度优先算法: 慢且面积冗余大,在精度是瓶颈时使用,不作为默认选项。
extern const int parameter_input_bit_width = PI_WIDTH +5 ; extern const int parameter_input_bit_width = PI_WIDTH +5 ;
int parameter_output_bit_width = PO_WIDTH; int parameter_output_bit_width = PO_WIDTH;
...@@ -17,12 +17,12 @@ int parameter_output_bit_width = PO_WIDTH; ...@@ -17,12 +17,12 @@ int parameter_output_bit_width = PO_WIDTH;
extern const int parameter_search_iterations = 10; //最大设计次数 extern const int parameter_search_iterations = 10; //最大设计次数
extern const int parameter_test_ios = 1000000; //测试要求多少样本 extern const int parameter_test_ios = 1000000; //测试要求多少样本
extern const int parameter_max_samples = 64*100; //BSD每一个节点最多进行多少次采样,至少为64 extern const int parameter_max_samples = 100000; //BSD每一个节点最多进行多少次采样,至少为64
extern const double parameter_early_stop_accuracy = 1; //允许的错误率,如果完全不允许,设为1; extern const double parameter_early_stop_accuracy = 1; //允许的错误率,如果完全不允许,设为1;
//没有特殊需要不要设到<1,会慢一些。 //没有特殊需要不要设到<1,会慢一些。
//0.5以下无意义,建议至少设到0.8吧. //0.5以下无意义,建议至少设到0.8吧.
extern const bool parameter_early_stop_oneway = 1; //如果设为1,只允许0->1 的错误,不允许1->0的错误 extern const bool parameter_early_stop_oneway = 1; //如果设为1,只允许0->1 的错误,不允许1->0的错误
extern const int parameter_io_file_lines = 2; //在sample_input.set文件中,保存了最少parameter_use_io_file行input;保证每次采样,都能采到这些样本。 extern const int parameter_io_file_lines = 2; //在sample_input.set文件中,保存了最少parameter_use_io_file行input;保证每次采样,都能采到这些样本。
extern const int parameter_num_threads = 32; //线程数 extern const int parameter_num_threads = 64; //线程数
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