implements private memory using FPGA registers in the kernel datapath or block RAMs. The
analyzes the private memory accesses and promotes them to register accesses. Scalar variables, for example
, are typically promoted. Aggregate data types are promoted if array-access indices are compile-time constants. Typically, private memory is useful for storing single variables or small arrays. Registers are plentiful hardware resources in FPGAs, and it is usually better to use private memory instead of other memory types whenever possible. The kernel can access private memories in parallel, allowing them to provide more bandwidth than any other memory type (global, local, and constant memories).