# Latency-Aware Accelerator of SIMECK Lightweight Block Cipher
## 2 SIMECK Block Cipher  
Initially, the construction of a lightweight block cipher, i.e., SIMECK, is described in [22]. It supports three different variants and can be accessed with SIMECK2\(n/mn\), where \(n\) presents the word size (of either 16, 24, or 32 bits), \(2n\) denotes the block size, and \(mn\) determines the supported key length. More specifically, the SIMECK variants are SIMECK32/64, SIMECK48/96 and SIMECK64/128. For example, SIMECK32/64 determines the computations of encryptions and decryptions on 32-bit message blocks using a 64-bit key length. Moreover, the SIMECK network depends on two blocks: (i) a round function and (ii) a key expansion block. Moreover, these two blocks (i.e., the round function and the key schedule algorithm) follow the Feistel structure. For SIMECK implementations, a plaintext to be encrypted is split into two \(m_{0}\) and \(l_{0}\) words, where \(m_{0}\) holds the \(n\) bits from the most-significant side, and \(l_{0}\) contains the \(n\) bits from the least-significant side. Afterward, the split words need to be processed by the SIMECK round function for a certain number of rounds. Finally, the concatenation of two output words, i.e., \(m_{T}\), and \(l_{T}\), needs to generate a complete ciphertext, where \(T\) means the total number of rounds. The SIMECK round function (of the \(i_{th}\) round) can be defined using Equation (1).  
\[R\ (m_{i},l_{i})=(l_{i}\oplus f(m_{i})\oplus k_{i},mi) \tag{1}\]  
In Equation (1), \(m_{i}\) and \(l_{i}\) are the two words for the internal state of SIMECK, \(k_{i}\) is the round key, and the function \(f\) is defined in Equation (2).  
\[f(m_{i})=(m_{i}\odot(m_{i}\lll 5)\oplus(m_{i}\lll 1)) \tag{2}\]  
In Equation (2), \(\odot\) shows the bitwise AND operation of \(m_{i}\) with \((m_{i}\lll 5)\). Moreover, \(\lll\) determines the cyclic shift towards the left. So, the expression \(m_{i}\lll 5\) means the cyclic shift of \(m_{i}\) to the left by 5 bits. Similarly, the expression \(m_{i}\lll 1\) means the cyclic shift of \(m_{i}\) to the left by 1 bit. Alike to the round function, the key schedule block of SIMECK is responsible to generate a distinct round key (i.e., \(k_{i}\)). Therefore, the master key (K) is split into four words and each word is needed to be stored in buffers, i.e., \(b_{2}\), \(b_{1}\), \(b_{0}\), \(k_{0}\). The lowest word of \(K\) is loaded into \(k_{0}\) while the highest word is needed to be stored in \(b_{2}\). Then, the round function is used as given in Equation (3) for updating the key values.  
\[k_{i+1}=b_{i}\ and\ t_{i+3}=k_{i}\oplus f(b_{i})\oplus C\oplus(Z_{j})_{i} \tag{3}\]  
where \(0\leq i\leq T-1\). In Equation (3), the value \(k_{i}\) is utilized as the round key of the \(i\)th round. The value of the constant \(C\) is defined by \(C=2^{n}-4\), where \(n\) is the word size. \((Z_{j})_{i}\) denotes the \(i\)th bit of sequence \(Z_{j}\). For further descriptions of round function and key schedule blocks, we refer readers to [22; 31]. Subsequently, the variants of the SIMECK family of a block cipher are presented in Table 1. Column one provides the design specifications. The word size (\(n\)) is shown in column two. Column three shows the block size (\(2n\)). The supported key length (\(mn\)) is illustrated in column four. Finally, the total number of rounds (\(T\)) is given in the last column (i.e., five).