SPRUJ17H March 2022 – October 2024 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1
The GF2m Engine is build to perform GF(2m) operations with a maximum field size of 571 bits. The operand and polynomial registers are one bit wider (because the upper bit of the operand and polynomial is used for the SXL operation, see Section 7.3.4.4.1.6.5) than the supported field size, but for the multiplication, only the lower 571 bits of these registers are used (bit 571 should always be written with value 0b). The operands must always be written with the MSB in the upper word of the operand registers. For 571 bits vectors this is straight forward, but for smaller field sizes, the operands need to be loaded in shifted form. Since the PKA module has embedded PKCP engine, this operand shifting can easily be performed by making use of that engine.
The exact LSB and MSB locations for correct operand loading can be derived using the following formulas:
The PKA module has an operand_size of 571 and a mul_depth of 4.
Any remaining bits in the operand registers must be written with zeroes. This can be done using the operand clear operation prior to loading the operand. A description of the operand clear operation can be found in Section 7.3.4.4.1.6.1, GF2m CLR Operation. Figure 7-107 shows some operand loading examples for some commonly used GF(2m) field sizes (409, 283, 233 and 163 bits), for a multiplier depth (mul_depth) of 4.
When the multiplication operation is done, the result is also returned in the same (shifted) form.