namespace text

// namespaces

namespace xf::data_analytics::text::internal

// classes

template <
    typename uint512,
    typename uint64,
    typename uint32,
    typename uint16,
    int Len1 = 32,
    int Len2 = 24,
    int TH1 = 1,
    int TH2 = 1
class GeoIP

template <
    typename AXI_DT,
    int CH = 64,
    int BL = 512
class TwoGramPredicate


#include "xf_data_analytics/text/re_engine.hpp"
template <
    int PU_NM,
    int INSTR_DEPTH,
    int CCLASS_NM,
    int CPGP_NM,
    int MSG_LEN,
    int STACK_SIZE
void reEngine (
    ap_uint <64>* cfg_in_buff,
    ap_uint <64>* msg_in_buff,
    ap_uint <16>* len_in_buff,
    ap_uint <32>* out_buff

The reEngine executes the input messages with configured RE pattern. The pattern is pre-compiled to a list of instructions and is provied by user through the cfg_buff. Therefore, the reEngine which is based on the hardware regex-VM is dynamically configurable. User could improve the throughput by increasing the template parameter PU_NM to accelerate the matching process by sacrificing the on-board resources.


PU_NM Number of processing units in parallel.
INSTR_DEPTH The depth of instruction buffer in 64-bit.
CCLASS_NM Supported max number of character classes in regular expression pattern.
CPGP_NM Supported max number of capturing group in regular expression pattern.
MSG_LEN Supported max length for each message in 8-byte.
STACK_SIZE Max size of internal stack buffer in regex-VM.
cfg_in_buff Input configurations which provides a list of instructions, number of instructions, number of character classes, number of capturing groups, and bit set map.
msg_in_buff Input messages to be matched by the regular expression.
len_in_buff input length for each message.
out_buff Output match results.