Skip to content
Snippets Groups Projects
param.h 3.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • xliu79's avatar
    xliu79 committed
    #ifndef _PARAM_H_
    #define _PARAM_H_
    
    
    typedef struct{
        //Original signal
        int inheight;
        int inwidth;
        int indepth;
        int outheight;
        int outwidth;
        int outdepth;
        int kernel_size;
        int pad_size;
        int stride;
    
        //wino related
        int wino5x5_flag;
        // 1: 3x3, 0:5x5
        int wino_output_tile_size;
    
        //input buffer related
        int indepth_align_minitile_size;
        int indepth_align8;
        int indepth_ceildiv8;
        int inwidth_ceildiv_inbufferwidth;
        int inwidth_align8;
        int group_indepth_offset;
        int group_indepth;
        int input_ddr_bytes;
        int input_ddr_128bits;
        int group_indepth_x_inwidth_align8_by8;
        int group_indepth_offset_x_inwidth_align8_by8;
        int input_load_burst_length;
        int buffer_address_mid_increment_step;
        int row_address_bitnumber_flag;
         
    
    
        // ouput_buffer_related
        int outwidth_align8;
        int outdepth_align8;
        int outheight_align4;
        int outdepth_align_minitile_size;
        int group_outdepth_offset;
        int group_outdepth;
    
        int output_ddr_bytes;
        int output_ddr_128bits;
    
    
        // Weight_related
        int weightbuffer_load_indepth_number;
        int weightbuffer_load_indepth_step;
        int weightbuffer_load_outdepth_number;
        int weightbuffer_load_outdepth_step;
        int weightbuffer_indepth_minitile_number;
        int weightbuffer_outdepth_minitile_number;
        int weightbuffer_total_load_number;
    
        //weight_load hardware
        int weightDDR_buffer_burst_length;
        int weightDDR_port_burst_length;
        int weightDDR_burst_number;
        int loop_outdepth_minitile_baseidx_reset_cycle_minus1;
        int loop_start_output_baserowcol_reset_cycle;
        int loop_weight_feed_bound;
       
        // input buffer feeding related
        int wino_out_size_by_wino_width;
        int wino_tile_number_in_outwidth;
    
        int loop_outdepth_minitile_baseidx_reset_cycle;
        int loop_wino_tile_col_reset_cycle;
        int loop_wino_tile_row_reset_cycle;
        int buffer_address_mid_minitile_depth_step;
        int input_buffer_feeding_loop_bound;  
        int input_transform_feeding_loop_bound;
    
        // row_tile calculation , these parameter have to be solved after weight parameters are decided.
        int out_rowstep;
        int wino_tile_number_in_out_rowstep;
    
    
        // wino computation
        int total_input_stream_tile;
        int loop_omini_base_reset_cycle;
        int loop_wino_cell_bound;
        int loop_wino_tile_rowcol_self_reset_cycle_min1;
        int loop_iload_reset_cycle;
        int outbuffer_oload_increment_step;
        int outbuffer_omini_increment_step;
        
        //output write back 
        int outdepth_ceildiv8;
        int output_burst_length;
        int write_back_flag;
        int wino_col_pix_upper_bound;
        int wino_tile_number_rowcol;
        int out_ddr_increment_step;
    
    }ConvDesc_t;
    
    void process_element6x6(
        int input_height,
        int input_width,
        int input_depth,
        int output_height,
        int output_width,
        int output_depth,
        int kernel_size,
        int stride_size,
        int pad_size,
        int group_indepth_offset,
        int group_indepth,
        int group_outdepth_offset,
        int group_outdepth,
        ConvDesc_t &conv_desc
    );
    
    
    
    #define CEIL_DIV(x,y)  ( ( (x) + (y) - 1) / (y) )
    #define ALIGN(x,y)  ( ( (x) + (y) - 1) / (y) * (y) )
    
    
        
    
    #endif