Commit ffc7ec2e by chengshuyao

c1355 default setup

parent 3c636707
......@@ -173,15 +173,11 @@ public:
BDD_class(){
most_influence = new int [parameter_input_bit_width];
BDD_width_each_layer = new int [parameter_input_bit_width+1];
mask_input_data = new bool*[parameter_max_samples*2];
mask_output_data = new bool [parameter_max_samples*2];
simplify_list = new bool*[parameter_max_BDD_width];
hash_simplify_list = new int [parameter_max_BDD_width];
BDD = new BDD_node*[1+parameter_input_bit_width];
BDD_mask_this = new BDD_node_mask[parameter_max_BDD_width];
BDD_mask_next = new BDD_node_mask[parameter_max_BDD_width];
has_been_unfold = new bool[parameter_input_bit_width+1];
amount_turn_output_data = new bool* [parameter_input_bit_width+1];
amount_turn = new double [parameter_input_bit_width];
test_input_data = new bool[parameter_input_bit_width];
left_son_mask = new bool [parameter_input_bit_width];
......@@ -202,6 +198,15 @@ public:
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+1];
mask_input_data = new bool*[parameter_max_samples*2];
simplify_list = new bool*[parameter_max_BDD_width];
BDD = new BDD_node*[1+parameter_input_bit_width];
amount_turn_output_data = new bool* [parameter_input_bit_width+1];
arr2d_new(mask_input_data, parameter_max_samples*2);
arr2d_new(simplify_list, parameter_max_BDD_width);
arr2d_new(BDD, 1+parameter_input_bit_width);
arr2d_new(amount_turn_output_data, 1+parameter_input_bit_width);
};
~BDD_class(){
......@@ -534,7 +539,7 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
BSD_samples = BSD_samples_sort;
most_influence[i] = next_bit_layer(i);
BSD_samples = int(BSD_samples_train/63)*63; //一定要是vec_length的整数倍
BSD_samples = int(BSD_samples_train/63)*63; //一定要是vec_length的整数倍
cout<<BSD_samples<<endl;
cout<<"The BSD is on layer: "<<i<<" ";
cout<<"The input bit is: x"<<most_influence[i]<<endl;
......@@ -552,10 +557,11 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
}
uint64_t* vec_input_left_int = new uint64_t [parameter_input_bit_width];
uint64_t* vec_input_right_int = new uint64_t [parameter_input_bit_width];
int j = int(vec_length*zk/BSD_samples);
int start_zj = vec_length*zk;
int j = int(start_zj/BSD_samples);
for(int kk=0;kk<64;kk++){
if(kk<vec_length){
long zj= vec_length*zk+kk;
long zj= start_zj+kk;
int zi = int(zj%BSD_samples);
for (int jj=0;jj<parameter_input_bit_width;jj++){
vec_input_left [jj][kk] = mask_input_data[zi][jj];
......@@ -577,16 +583,6 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
for(int kk=0;kk<parameter_input_bit_width;kk++){
vec_input_left_int[kk] = cvt_bit_to_number_unsigned(vec_input_left[kk],64);
vec_input_right_int[kk] = cvt_bit_to_number_unsigned(vec_input_right[kk],64);
//cout<<hex<<vec_input_left_int[kk]<<endl;
//for(int zz=0;zz<64;zz++){
// if(zz%4==0){
// cout<<" ";
// }
// cout<<vec_input_left[kk][zz];
//}
//cout<<endl;
}
uint64_t vec_output_left_int ;
uint64_t vec_output_right_int ;
......@@ -596,21 +592,11 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
bool* vec_output_right = new bool [64];
cvt_number_to_bit_unsigned(vec_output_left,vec_output_left_int,64);
cvt_number_to_bit_unsigned(vec_output_right,vec_output_right_int,64);
//cout<<hex<<vec_output_left_int<<endl;
//for(int zz=0;zz<63;zz++){
// if(zz%4==0){
// cout<<" ";
// }
// cout<<vec_output_left[zz];
//}
//cout<<endl;
int start_zj = vec_length*zk;
for(int zj=vec_length*zk;zj<vec_length*zk+vec_length;zj++){
right_mask_output_data_all[zj] = vec_output_right[(zj-start_zj)];
left_mask_output_data_all [zj] = vec_output_left [(zj-start_zj)];
for(int zj=0;zj<vec_length;zj++){
right_mask_output_data_all[zj+start_zj] = vec_output_right[(zj)];
left_mask_output_data_all [zj+start_zj] = vec_output_left [(zj)];
}
arr2d_delete (vec_input_left,parameter_input_bit_width) ;
arr2d_delete (vec_input_right,parameter_input_bit_width) ;
......@@ -1428,7 +1414,7 @@ int BDD_class::BDD_FULL_PROCESS(){
//GLOBAL_BDD_split_nodes += total_split_nodes;
//cout<<"Total nodes = "<<total_nodes_amount<<endl;
//cout<<"Total split nodes = "<<total_split_nodes<<endl;
//delete [] most_influence ;
//arr_delete (most_influence) ;
//delete [] BDD_width_each_layer ;
//delete [] mask_output_data ;
//delete [] hash_simplify_list ;
......
......@@ -256,11 +256,17 @@ int search_partition(int start_node_number=default_start_node_number,int start_n
}
}
cout<<endl;
node_index* start_node_index_partition = new node_index [start_node_partition];
node_index* start_node_index_partition = new node_index [max_partition_parts];
int zi =0;
for(int j=0;j<max_partition_parts;j++){
if(partition_sets[i][j]){
start_node_index_partition[zi] = start_node_index[j];
start_node_index_partition[zi].node_depth = start_node_index[j].node_depth;
start_node_index_partition[zi].root_node_index = start_node_index[j].root_node_index;
for(int zj=0;zj<parameter_input_bit_width;zj++){
start_node_index_partition[zi].expand_input_bit_index[zj] = start_node_index[j].expand_input_bit_index[zj];
start_node_index_partition[zi].expand_input_bit_data[zj] = start_node_index[j].expand_input_bit_data[zj];
}
zi++;
}
}
area_parts[i] = search_order(start_node_partition , start_node_depth, start_node_index_partition, search_order_times, start_order);
......@@ -284,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];
ofstream function_top_file("rtl/function_top.v");
ofstream function_top_file("function_top.v");
for (int i = 0 ;i < best_partition_parts;i++){
for (int j=0;j<parameter_output_bit_width;j++){
if(best_partition_sets[i][j]){
......@@ -340,7 +346,7 @@ 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+1;merge_part++){
for(int merge_part=use_part+1;merge_part<partition_parts;merge_part++){
//改变Partition Set
......@@ -394,7 +400,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];
arr_delete ( start_node_index_partition);
//arr_delete ( start_node_index_partition);
}
}
......@@ -588,7 +594,8 @@ int search_order(int start_node_number = default_start_node_number, int start_no
int best_reward_max = 0;
int best_order_num=0;
best_variable_order = new int* [parameter_max_orders];
//best_variable_order = new int* [parameter_max_orders];
arr2d_new(best_variable_order,parameter_max_orders);
for (int vi=0;vi<parameter_max_orders;vi++){
best_variable_order[vi] = new int [parameter_input_bit_width];
for (int vj=0;vj<parameter_input_bit_width;vj++)
......@@ -950,7 +957,12 @@ int search_order(int start_node_number = default_start_node_number, int start_no
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);
//arr2d_delete (best_variable_order,1);
//delete [] best_variable_order[0];
//for(int i=0;i<parameter_input_bit_width;i++)
// cout<<best_variable_order[0][i];
//delete [] best_variable_order[0];
//delete [] best_variable_order;
return reward;
};
......
......@@ -56,6 +56,7 @@ template <typename T>
inline void arr2d_delete(T **&arr, const int size){
for (int i = 0; i < size; i++){
delete[] arr[i]; //nullptr会被忽略
arr[i] = nullptr;
}
delete [] arr;
arr = nullptr;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
#include "head.h"
#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/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/ip-cores/combinational_circuits/c_lod.h"
//#include "io_generator/ip-cores/combinational_circuits_vec/c_lod_vec.h"
......
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