Commit 65f8fbad by chengshuyao

Debug print char* problems

parent 9aee67a1
......@@ -3,8 +3,10 @@
int main(int argc,char* argv[]){
set_default();
//int area_a = search_order();
search_partition();
#ifdef SEARCH_PARTITION
search_partition();
#else
search_order();
#endif
};
......@@ -201,7 +201,7 @@ public:
BDD_split_nodes_each_layer = new int [parameter_input_bit_width+1];
output_partition_set = new bool [parameter_output_bit_width];
start_node_index = new node_index [parameter_output_bit_width];
start_node_index_string = new char [parameter_output_bit_width];
start_node_index_string = new char [parameter_output_bit_width+1];
};
//~BDD_class(){
......@@ -1270,6 +1270,7 @@ int BDD_class::BDD_FULL_PROCESS(){
}
}
start_node_index_string[parameter_output_bit_width] = '\0';
// for (j=0;j<parameter_max_orders;j++){
// BSD_variable_order[j] = new int [parameter_input_bit_width];
// }
......
......@@ -86,7 +86,7 @@ public:
}
};
int default_start_node_number;
int default_start_node_number = parameter_output_bit_width;
node_index* default_start_node_index;
......@@ -215,7 +215,7 @@ int search_partition(int start_node_number,int start_node_depth , node_index* st
int search_partition(int start_node_number=default_start_node_number,int start_node_depth = 0, node_index* start_node_index = default_start_node_index, int* start_order = default_start_order){
int search_order_times = 2;
int search_order_times = 5;
random_device rd;
mt19937 gen(rd());
......@@ -274,7 +274,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
for (int i=0;i<max_partition_parts;i++){
cout<<"partition "<<i<<" "<<area_parts[i]<<endl;
}
char* start_node_index_string = new char [parameter_output_bit_width];
char* start_node_index_string = new char [parameter_output_bit_width+1];
ofstream function_top_file("rtl/function_top.v");
for (int i = 0 ;i < best_partition_parts;i++){
......@@ -287,6 +287,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
}
start_node_index_string[parameter_output_bit_width] = '\0';
function_top_file << "`include \"function_layer_"<<start_node_depth<<"_nodes_"<<start_node_index_string<<".v\" "<<endl;
}
function_top_file << endl;
......@@ -307,8 +308,20 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
}
start_node_index_string[parameter_output_bit_width] = '\0';
function_top_file << "function_layer_"<<start_node_depth<<"_nodes_"<<start_node_index_string<<" part"<<i<<" (.i(i),.o_index(o_"<<i<<"));"<<endl;
}
function_top_file <<endl;
for (int i = 0 ;i < parameter_output_bit_width;i++){
int position_a = 0;
for (int j=0;j<best_partition_parts;j++){
if(best_partition_sets[j][i] == 1){
position_a = j;
break;
}
}
function_top_file << "assign o["<<i<<"] = o_"<<position_a<<"["<<i<<"];"<<endl;
}
function_top_file << "endmodule"<<endl;
function_top_file.close();
......@@ -398,7 +411,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
cout<<"Best Design Area: "<<best_area<<endl;
char* start_node_index_string = new char [parameter_output_bit_width];
char* start_node_index_string = new char [parameter_output_bit_width+1];
ofstream function_top_file("rtl/function_top.v");
for (int i = 0 ;i < best_partition_parts;i++){
for (int j=0;j<parameter_output_bit_width;j++){
......@@ -410,6 +423,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
}
start_node_index_string[parameter_output_bit_width] = '\0';
function_top_file << "`include \"function_layer_"<<start_node_depth<<"_nodes_"<<start_node_index_string<<".v\" "<<endl;
}
function_top_file << endl;
......@@ -430,6 +444,7 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
}
start_node_index_string[parameter_output_bit_width] = '\0';
function_top_file << "function_layer_"<<start_node_depth<<"_nodes_"<<start_node_index_string<<" part"<<i<<" (.i(i),.o_index(o_"<<i<<"));"<<endl;
}
function_top_file <<endl;
......@@ -765,7 +780,32 @@ int search_order(int start_node_number = default_start_node_number, int start_no
else{
reward = BSD_execute(start_node_number,start_node_index,best_area_depth,multi_variable_order[order_num]);
}
#ifdef SEARCH_PARTITION
#else
char* start_node_index_string = new char [parameter_output_bit_width+1];
ofstream function_top_file("rtl/function_top.v");
for (int j=0;j<parameter_output_bit_width;j++){
start_node_index_string[j] = '1';
}
start_node_index_string[parameter_output_bit_width] = '\0';
function_top_file << "`include \"function_layer_"<<start_node_depth<<"_nodes_"<<start_node_index_string<<".v\" "<<endl;
function_top_file << endl;
function_top_file << "module function_top (i,o);"<<endl<<endl;
function_top_file << "input ["<<parameter_input_bit_width-1<<":0] i;"<<endl;
function_top_file << "output ["<<parameter_output_bit_width-1<<":0] o;"<<endl<<endl;
for (int i = 0 ;i < 1;i++){
function_top_file << "wire ["<<parameter_output_bit_width-1<<":0] o_"<<i<<";"<<endl;
}
function_top_file << endl;
function_top_file << "function_layer_"<<start_node_depth<<"_nodes_"<<start_node_index_string<<" part1 (.i(i),.o_index(o_1));"<<endl;
function_top_file <<endl;
for (int i = 0 ;i < parameter_output_bit_width;i++){
function_top_file << "assign o["<<i<<"] = o_1["<<i<<"];"<<endl;
}
function_top_file << "endmodule"<<endl;
function_top_file.close();
#endif
bool accept=0;
//accept = (reward <= best_reward);
......@@ -919,6 +959,7 @@ int search_order(int start_node_number = default_start_node_number, int start_no
//}
//delete [] variable_order;
//delete [] best_variable_order;
return reward;
};
......@@ -6,7 +6,7 @@ int BDD_class::print_circuit(BDD_node** BDD,int* most_influence,int node_depth,
char output_file_name[100];
//sprintf(output_file_name,"rtl/module_output_bit_%d.v",which_bit_output);
// sprintf(output_file_name,"rtl/function_%d_id_%d.v",circuit_index,BDD_id);
sprintf(output_file_name,"rtl/function_layer_%d_nodes_%s.v",node_depth,start_node_index_string);
sprintf(output_file_name,"rtl/function_layer_%d_nodes_%s.v",node_depth, start_node_index_string);
// string output_file_name << output_file_name_begin << which_bit_output << output_file_name_end;
......@@ -136,7 +136,11 @@ int BDD_class::print_circuit(BDD_node** BDD,int* most_influence,int node_depth,
output_module_file << "//total split modes recursive = "<<total_split_nodes_recursive<<endl;
output_module_file << "//train time = "<<train_time<<endl;
// output_module_file << "module function_"<<circuit_index<<"_BDD_id_"<<BDD_id<<" (i,o);"<<endl<<endl;
output_module_file << "module function_layer_"<<node_depth<<"_nodes_"<<start_node_index_string<<" (i,o_index);"<<endl<<endl;
output_module_file << "module function_layer_"<<node_depth<<"_nodes_";
for(int i=0;i<parameter_output_bit_width;i++){
output_module_file << start_node_index_string[i];
}
output_module_file <<" (i,o_index);"<<endl<<endl;
output_module_file << "input ["<<parameter_input_bit_width-1<<":0] i;"<<endl;
output_module_file << "output ["<<parameter_output_bit_width-1<<":0] o_index;"<<endl<<endl;
......
......@@ -6,6 +6,8 @@
#define INPUT_AIG //io_generator是否可以用uint按位操作进行加速,也即是否包含_vec后缀的另一个io_generator
#define SINGLE_BITS //io_generator是否包含每一个bit单独的io_generator_o{x}
#define SEARCH_PARTITION //BSD算法搜索partition策略
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