#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 |