Symmetric Cryptographic Intel FPGA Hard IP User Guide

ID 714305
Date 10/02/2023
Public
Document Table of Contents

5.3.4. TKEEP and LAST_SEGMENT Signals Generation

The AES/SM4 Inline Cryptographic Accelerator, through the tuser.num_empty_bytes signal, indicates the number of empty bytes when the tlast signal is asserted.

The soft logic performs the conversion of the number of empty bytes to the tkeep signal. For example, num_empty_bytes = 60 is equivalent to tkeep = 64'h0000_0000_0000_000F.

The example below showcases the tkeep signal assignments based on EOP locations. The signal assignment is identical for all available profiles.

Table 29.  TKEEP Signals Assignments
Profile All All All All
tlast 1 1 1 1
tuser_last_segment0 0 0 0 0
tuser_last_segment1 0 0 0 0
tuser_last_segment2 0 0 0 0
tuser_last_segment3 0 0 0 0
tkeep

{48'b0 MSB,

(16 bytes showing number of valid bytes)}

{32'b0 MSB,

(16 bytes showing number of valid bytes),

1111_1111

1111_1111}

{16'b0 MSB,

(16 bytes showing number of valid bytes),

1111_1111

1111_1111

1111_1111

1111_1111}

{(16 bytes showing number of valid bytes),

1111_1111

1111_1111

1111_1111

1111_1111

1111_1111

1111_1111}

DATA
tdata[127:0] EOP Data Data Data
tdata[255:128] IDLE EOP Data Data
tdata[391:256] IDLE IDLE EOP Data
tdata[511:392] IDLE IDLE IDLE EOP

The below example depicts a scenario of a multiple packet mode where SOP follows the EOP within the same cycle. The Symmetric Cryptographic IP core asserts the tuser_last_segment0/1/2/3 signals.

Table 30.  TKEEP Signals Generation in the Multiple Packet Mode
Profile MACsec and IPsec MACsec and IPsec MACsec and IPsec MACsec and IPsec MACsec and IPsec MACsec and IPsec
tlast 1 1 1 1 1 1
tkeep

{0000_0000

0000_0000

0000_0000

0000_0000

1111_1111

1111_1111,

(16 bytes showing number of valid bytes)}

{0000_0000

0000_0000

1111_1111

1111_1111

0000_0000

0000_0000,

(16 bytes showing number of valid bytes)}

{1111_1111

1111_1111

0000_0000

0000_0000

0000_0000

0000_0000,

(16 bytes showing number of valid bytes)}

{1111_1111

1111_1111

1111_1111

1111_1111,

(16 bytes showing number of valid bytes),

1111_1111

1111_1111}

{1111_1111

1111_1111

0000_0000

0000_0000,

(16 bytes showing number of valid bytes),

1111_1111

1111_1111}

{1111_1111

1111_1111,

(16 bytes showing number of valid bytes),

1111_1111

1111_1111

1111_1111

1111_1111}

tuser_last_segment0 1 1 1 0 0 0
tuser_last_segment1 0 0 0 1 1 1
tuser_last_segment2 0 0 0 0 0 1
tuser_last_segment3 0 0 0 0 0 0
DATA
tdata[127:0] EOP EOP EOP Data Data Data
tdata[255:128] SOP IDLE IDLE EOP EOP Data
tdata[391:256] Data SOP IDLE SOP IDLE EOP
tdata[511:392] Data Data SOP Data SOP SOP