namespace internal

// global variables

const int L_BIT
const int BURST_LEN
const int H_BIT
const int H_BIT_PAGE
const int PAGE_SIZE_BYTE
const int PAGE_VNUM_BIT64
const int PAGE_VNUM_BIT32

genAddr64

#include "xf_data_analytics/dataframe/read_from_dataframe.hpp"
template <int W>
void genAddr64 (
    int field_nm,
    ap_uint <4> t_buff [1<< W],
    FieldInfo f_buff [32],
    Node linkTable [1024],
    hls::stream <int>& o_field_id_strm,
    hls::stream <int>& o_addr_strm,
    hls::stream <int>& o_nm_strm,
    hls::stream <ap_uint <4>>& o_type_strm,
    hls::stream <bool>& o_e_strm
    )

generate the reading addr of each field, except Null and Boolean

breadWrapper

#include "xf_data_analytics/dataframe/read_from_dataframe.hpp"
template <int W>
void breadWrapper (
    int field_nm,
    ap_uint <12> str_high_addr_mem [1<< W][256],
    hls::stream <int>& i_field_id_strm,
    hls::stream <int>& i_addr_strm,
    hls::stream <int>& i_nm_strm,
    hls::stream <ap_uint <4>>& i_type_strm,
    hls::stream <bool>& i_e_strm,
    ap_uint <64>* ddr_buff,
    hls::stream <ap_uint <64>> o_dat_strm [1<< W],
    hls::stream <ap_uint <4>> o_valid_strm [1<< W],
    hls::stream <bool> o_e_strm [1<< W]
    )

burst read data field by field

writeObjOut

#include "xf_data_analytics/dataframe/read_from_dataframe.hpp"
template <int W>
void writeObjOut (
    int field_nm,
    ap_uint <4> t_buff [1<< W],
    hls::stream <bool> i_null_strm [1<< W],
    hls::stream <bool> i_bool_strm [1<< W],
    hls::stream <ap_uint <64>> i_dat_strm [1<< W],
    hls::stream <ap_uint <4>> i_valid_strm [1<< W],
    hls::stream <bool> i_e_strm [1<< W],
    hls::stream <Object>& obj_strm
    )

write out all fields of each line

memToLocalRam

#include "xf_data_analytics/dataframe/read_from_dataframe.hpp"
template <int W>
void memToLocalRam (
    int field_nm,
    ap_uint <W> t_buff [1<< W],
    ap_uint <32>* s_buff,
    ap_uint <32>* n_buff,
    ap_uint <32>* l_buff,
    ap_uint <64> bit_map [4096][1<< W],
    ap_uint <64> bool_buff [4096][1<< W],
    Node linkTable [1024],
    FieldInfo f_buff [2 *(1<< W)],
    ap_uint <12> str_high_addr_mem [1<< W][256],
    ap_uint <64>* ddr_in
    )

load the header info which saves length, null, bool info into on-chip mem

processNull

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void processNull (
    hls::stream <ap_uint <4>>& i_field_id_strm,
    hls::stream <ap_uint <4>>& i_valid_strm,
    hls::stream <bool>& i_e_strm,
    ap_uint <32>* n_buff,
    ap_uint <32>* l_buff,
    ap_uint <64> bit_map [4096][1<< W]
    )

process input data, record data count, null count, flag each data whether is null

Parameters:

i_field_id_strm input index for each value.
i_valid_strm input valid info for each value
i_e_strm end flag of i_strm.
n_buff buffer to record null count .
l_buff buffer to store length.
bit_map buffer to store value.

processBoolean

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void processBoolean (
    hls::stream <ap_uint <4>>& i_field_id_strm,
    hls::stream <bool>& i_dat_strm,
    hls::stream <bool>& i_e_strm,
    ap_uint <64> bool_buff [4096][1<< W]
    )

process bool data, save the data in bool_buff

Parameters:

i_field_id_strm input index for each value.
i_dat_strm input data
i_e_strm end flag of i_strm.
bool_buff buffer to store value.

collectData

collectData overload (1)

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void collectData (
    hls::stream <ap_uint <4>>& i_str_field_id_strm,
    hls::stream <ap_uint <32>>& i_str_offset_strm,
    hls::stream <bool>& i_str_e_strm,
    hls::stream <ap_uint <32>> o_offset_strm [1<< W],
    hls::stream <bool>& o_e_strm,
    hls::stream <ap_uint <W>>& o_field_id_strm
    )

string offset read and issue to different field_id channels

Parameters:

i_str_field_id_strm input field with strign data type
i_str_offset_strm input string offset
i_e_strm end flag of i_str_*_strm.
o_offset_strm output offset strm for different field
o_field_id_strm the output field index
o_e_strm end flag of o_offset_strm.

collectData overload (2)

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void collectData (
    hls::stream <ap_uint <4>>& i_w64_field_id_strm,
    hls::stream <ap_uint <64>>& i_w64_dat_strm,
    hls::stream <ap_uint <4>>& i_w64_dt_strm,
    hls::stream <bool>& i_w64_e_strm,
    hls::stream <ap_uint <32>> o_strm [1<< W],
    hls::stream <bool>& o_e_strm,
    hls::stream <ap_uint <W>>& o_field_id_strm
    )

process 64-bits data types, double, int64, date, float32, string data, issue to different field_id channels

Parameters:

i_str_field_id_strm input field with strign data type
i_str_offset_strm input string offset
i_e_strm end flag of i_str_*_strm.
o_offset_strm output offset strm for different field
o_field_id_strm the output field index
o_e_strm end flag of o_offset_strm.

readObjStrm

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void readObjStrm (
    hls::stream <Object>& obj_strm,
    hls::stream <ap_uint <4>>& o_null_field_id_strm,
    hls::stream <ap_uint <4>>& o_null_valid_strm,
    hls::stream <bool>& o_null_e_strm,
    hls::stream <ap_uint <4>>& o_bool_field_id_strm,
    hls::stream <bool>& o_bool_dat_strm,
    hls::stream <bool>& o_bool_e_strm,
    hls::stream <ap_uint <4>>& o_w64_field_id_strm,
    hls::stream <ap_uint <64>>& o_w64_dat_strm,
    hls::stream <ap_uint <4>>& o_w64_dt_strm,
    hls::stream <bool>& o_w64_e_strm,
    hls::stream <ap_uint <32>>& o_strlen_strm,
    hls::stream <ap_uint <4>>& o_str_field_id_strm,
    hls::stream <bool>& o_str_e_strm,
    ap_uint <32>* buff
    )

read data from object stream, analyze and send to different channels according to the data type

Parameters:

obj_strm the input stream data that packed as Object Struct
o_null_field_id_strm null strm index of each data
o_null_valid_strm null flag of each data
o_null_e_strm end flag of each null data
o_bool_field_id_strm bool strm index of each data
o_bool_dat_strm bool value of each data
o_bool_e_strm end flag of each boolean data
o_w64_field_id_strm output index of each w64 data
o_w64_dat_strm output data value of types: Int64, Float32, Double, Date, String data
o_w64_dt_strm output data type
o_w64_e_strm end flag of output w64 data
o_strlen_strm output string length of string fields in each json line
o_str_field_id_strm output index of each string field
o_str_e_strm end flag of output string length

memManage

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void memManage (
    hls::stream <ap_uint <W>> i_field_id_strm [2],
    hls::stream <bool> e_strm [2],
    hls::stream <ap_uint <15>>& o_low_addr_strm,
    hls::stream <ap_uint <12>>& o_high_addr_strm,
    hls::stream <ap_uint <8>> o_rnm_strm [2],
    hls::stream <ap_uint <W>> o_field_id_strm [2],
    hls::stream <bool> o_e_strm_a [2],
    hls::stream <ap_uint <2>>& o_ch_strm,
    hls::stream <bool>& o_e_strm,
    Node linkTable [1024],
    FieldInfo f_buff [2 *(1<< W)]
    )

genearte the addr of data write requests, every 32 x 32-bit requests output 1 addr of burst write req

localRamToMem

#include "xf_data_analytics/dataframe/write_to_dataframe.hpp"
template <int W>
void localRamToMem (
    ap_uint <32>* s_buff,
    ap_uint <32>* n_buff,
    ap_uint <32>* l_buff,
    ap_uint <64> bit_map [4096][1<< W],
    ap_uint <64> bool_buff [4096][1<< W],
    Node linkTable [1024],
    FieldInfo f_buff [2 *(1<< W)],
    ap_uint <64>* ddr_out
    )

save the on-chip mem data to DDR

Parameters:

s_buff size buffer
n_buff null count buffer
l_buff len count buffer
bit_map detailed null data for each input value
bool_buff detailed bool data for each input bool value
lineTable detailed link info of each mem block node
f_buff the link info between nodes
ddr_out DDR buffer to save local mem data

memManage

#include "xf_data_analytics/dataframe/write_to_parquet.hpp"
template <int W>
void memManage (
    hls::stream <ap_uint <W>>& i_field_id_strm,
    hls::stream <bool>& i_chunk_end,
    hls::stream <bool>& e_strm,
    hls::stream <ap_uint <H_BIT>>& o_low_addr_strm,
    hls::stream <ap_uint <12>>& o_high_addr_strm,
    hls::stream <ap_uint <8>>& o_rnm_strm,
    hls::stream <ap_uint <W>>& o_field_id_strm,
    hls::stream <bool>& o_e_strm,
    hls::stream <bool>& wr_e_strm,
    hls::stream <ap_uint <12>>& o_pre_nid_strm,
    hls::stream <ap_uint <12>>& o_cur_nid_strm,
    hls::stream <ap_uint <12>>& o_naddr_strm,
    hls::stream <bool>& o_node_e_strm,
    FieldInfo f_buff [(1<< W)]
    )

genearte the addr of data write requests, every 32 x 32-bit requests output 1 addr of burst write req