## 2 Error Magnitude Evaluation in Reed-Solomon Codes  
An RS encoded message is composed of a sequence of \(n\) symbols (each one of \(m\) bits), of which \(k\) symbols represent the original uncoded message and the remaining are the added parity [29]. An example of an encoded message is shown in Figure 1.  
In an RS system, the maximum number of detectable and correctable errors in the message is defined as follows:  
\[t=\frac{n-k}{2}. \tag{1}\]  
The architecture of a traditional RS decoder is shown in Figure 2.  
The decoder is typically composed of five subsystems [30; 31]: syndrome calculation, error polynomial calculation, error positions extraction, error magnitude evaluation, and error compensation. Once a message is received by a Reed-Solomon decoder, the first step should be to divide the received polynomial by the generator polynomial chosen for encoding: the remainders of this division are known as syndromes, and they do not depend on the transmitted code word, but rather only on errors. The syndrome calculation block computes the \(2t\) syndromes contained into a Reed-Solomon code word, usually exploiting [PERSON]'s method [32]. The next step is to introduce the error locator polynomial that contains the information about the location of the errors and their magnitudes. Two methods are widely used in error polynomial calculation, the Euclidean algorithm [33] and Berlekamp's algorithm [34]. Once the coefficients of error location polynomial are carried out, the error position block identifies the corrupted symbols, by means of the Chien search algorithm [35], while the error magnitude block computes the error values. Finally, the error compensation block uses this information to fix the errors. In traditional RS decoders, as depicted in Figure 2, the whole process typically takes several clock cycles: each block contributes to this delay and the optimization of a single block can improve the performance of the entire system. In classical RS decoders, the search for error position is carried out in parallel with the error position estimation and, within the blocks, a serial strategy is adopted. This implies a number of clock cycles equal to \(n\) for the error magnitude and position evaluation. Recently, many efforts have been made to speed up the whole process, exploiting parallel Chien search strategies [36; 37]. Combining these methods with parallel algorithms for error magnitude extraction can potentially reduce the required number of clock cycles to \(n/p\), where \(p\) is the Chien search parallelism, plus one clock cycle for the subsequent error magnitude evaluation. In this context, the analysis of the parallelism capability and the analog in-out time of the available error magnitude strategies can be very useful to identify the preferred method to optimize the whole process. For this reason, in the following, we will focus only on the error magnitude subsystem. There are many approaches to compute error magnitudes in the literature [23; 24; 25] and, among these, the one with the most promising performance is the one introduced by [PERSON] et al. [25]. The error magnitude subsystem can be schematically represented as in Figure 3.  
Figure 1: A Reed–Solomon encoded message. Figure 2: Traditional RS decoder scheme. To compute the error magnitudes \(\delta_{k}\), the subsystem takes as inputs the positions of the errors \(\alpha^{l_{k}}\) in the code word; the error-location polynomial coefficients \(\alpha_{k}\), computed in the previous error polynomial calculation phase; and the syndrome polynomial coefficients \(S_{k}\), computed in the syndrome calculation phase. The RS error magnitude evaluation performed with a standard technique (the Forney method) will be compared with the alternative method introduced by [PERSON] et al. Table 1 shows the theoretical number of required Galois additions (\(N_{\bigoplus}\)), multiplications (\(N_{\bigotimes}\)), and inversions (\(N^{-1}\)) when the message includes a number \(\
u\) of errors.