#include "xf_database/hash_partition.hpp"
template < int HASH_MODE, int KEYW, int PW, int EW, int HASHWH, int HASHWL, int ARW, int CH_NM, int COL_NM > void hashPartition ( bool mk_on, int depth, hls::stream <int>& bit_num_strm, hls::stream <ap_uint <KEYW>> k0_strm_arry [CH_NM], hls::stream <ap_uint <PW>> p0_strm_arry [CH_NM], hls::stream <bool> e0_strm_arry [CH_NM], hls::stream <ap_uint <16>>& o_bkpu_num_strm, hls::stream <ap_uint <10>>& o_nm_strm, hls::stream <ap_uint <EW>> o_kpld_strm [COL_NM] )
Hash-Partition primitive.
Parameters:
HASH_MODE | 0 for radix and 1 for Jenkin’s Lookup3 hash. |
KEYW | width of key, in bit. |
PW | width of max payload, in bit. |
EW | element data width of input table, in bit. |
HASHWH | number of hash bits used for PU selection. |
HASHWL | number of hash bits used for partition selection. |
ARW | width of address for URAM |
CH_NM | number of input channels, 1,2,4. |
COL_NM | number of input columns, 1~8. |
mk_on | input of double key flag, 0 for off, 1 for on. |
depth | input of depth of each hash bucket in URAM. |
bit_num_strm | input of partition number, log2(number of partition). |
k0_strm_arry | input of key columns of both tables. |
p0_strm_arry | input of payload columns of both tables. |
e0_strm_arry | input of end signal of both tables. |
o_bkpu_num_strm | output of index for bucket and PU |
o_nm_strm | output of row number each time |
o_kpld_strm | output of key+payload |