This document discusses optimizing a non-binary LDPC decoder implementation using high-level synthesis with Vivado HLS. It begins with an overview of non-binary LDPC codes and decoding algorithms. It then discusses the challenges of implementing an efficient LDPC decoder on an FPGA using HLS and the need for code refactoring and directives to optimize resource utilization and performance. The document provides guidelines for mapping the decoding algorithm to HLS C code and optimizing the implementation through techniques like loop unrolling and pipelining. It shows that a naive implementation provides limited performance but tuned optimizations can achieve performance comparable to hand-coded RTL.