raNVMe-IP with multiple-user Demo Instruction

Rev1.1 5-Jul-23

 

1     Overview.. 2

2     Test Menu.. 3

2.1     Identify Command. 3

2.2     Write Command. 5

2.3     Read Command. 8

2.4     SMART Command. 10

2.5     Flush Command. 11

2.6     Shutdown Command. 12

3     Revision History. 13

 

 

1       Overview

 

This document describes the instruction to run raNVMe-IP with multiple-user demo on FPGA development board for accessing one NVMe SSD. Up to 4 users are supported in the reference design. There are six commands in the main menu, controlled via FPGA console, as shown in Figure 1‑1.

 

To setup FPGA test environment, user can follow the instruction in “dg_nvmeip_fpgasetup” document which is the setup document for the standard NVMe-IP.

 

After finishing the board setup, the main menu is displayed and the user inputs to the console for selecting test operation.

 

Figure 11 Main menu of raNVMe-IP with multiple user demo


 

2       Test Menu

 

2.1      Identify Command

 

Select ‘0’ to send Identify command to NVMe SSD.

 

Figure 21 Test result when running Identify command

 

There are two inputs for running Identify command, described as follows.

1)  Number of users: Enter number of users to send command. Valid from 1 to 4 users.

2)  The first user: Select the first user to operate the command. Valid from 0 to 3.

 

If all inputs are valid, the operation is started. Identify command of the first user is sent to the SSD and the SSD information output from Identify command is displayed on the console, i.e., SSD model number and SSD capacity.

1)  SSD model number: This value is decoded from Identify controller data.

2)  SSD capacity: This value is signal output from raNVMe-IP.

 

If the current user is not the last user, repeat to send Identify command for the next user and display the result on the console.

 

Note: All users access the same NVMe SSD, so the information that is returned to all users are similar.


 

If the user input is out-of-range, error message is displayed on the console, as shown in Figure 2‑2.

 

Figure 22 Error message from the invalid user

 

When the SSD operates in LBA unit which is not equal to 512 bytes, the error message is shown in the console and the system stays inactive status, as shown in Figure 2‑3. User needs to reset the system to restart the demo.

 

Figure 23 Error when LBA unit does not support

 


 

2.2      Write Command

 

Select ‘1’ to send Write command to NVMe SSD.

Figure 24 Test result when running Write command

 

There are five input parameters for running Write command, described as follows.

1)  Number of users: Enter the number of users to write data. Valid from 1 to 4 users.

2)  The first user: Select the first user to operate the command. Valid from 0 to 3.

3)  Start Address: Input start address to write SSD as 512-byte unit. The input is decimal unit

when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

4)  Transfer Length: Input total transfer size as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

5)  Test pattern: Select test data pattern for writing to SSD. There are five patterns, i.e., 32-bit incremental, 32-bit decremental, all 0, all 1, and 32-bit LFSR counter.

When all inputs are valid, the operation begins. During writing data, the current amount of transferred data of each user and the sum of transfer data size of all users are displayed on the console every second. Finally, total size, total time usage, and test speed are displayed on the console as a test result.

 

Note: If Number of users more than 1, the firmware will calculate start address and length for each user. The result of the calculation is displayed on console.


 

Figure 25 Example Test data of the 1st and 2nd 4Kbyte data by using incremental/LFSR pattern

 

Test data in SSD is split into 4096-byte (4K) unit. For incremental, decremental, and LFSR pattern, each 4K-byte data has a unique 64-bit header consisting of 48-bit address in 512-byte unit and 16-bit zero value. The header is the same value for every test pattern. The data after 64-bit header is the test pattern which is selected by user.

 

The left window of Figure 2‑5 shows the example when using 32-bit incremental pattern while the right window shows the example when using 32-bit LFSR pattern. The unique header is not included when running all-0 or all-1 pattern.

 


 

Figure 2‑6 shows the example error message when the input from the user is invalid. For example, the input is out-of-range or not aligned to 8 for some parameters. “Invalid input” is displayed as the error message and the operation is cancelled. After that, it returns to the main menu.

 

Figure 26 Error message from the invalid input


 

2.3      Read Command

 

Select ‘2’ to send Read command to NVMe SSD.

Figure 27 Test result when running Read command

 

There are five inputs parameters for running Read command, described as follows.

1)  Number of users: Enter the number of users to write data. Valid from 1 to 4 users.

2)  The first user: Select the first user to operate the command. Valid from 0 to 3.

3)  Start Address: Input start address to read SSD as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit, this input must be aligned to 8 for 4-Kbyte alignment.

4)  Transfer Length: Input total transfer size as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

5)  Test pattern: Select test data pattern for verifying to SSD. There are five patterns, i.e., 32-bit incremental, 32-bit decremental, all 0, all 1, and 32-bit LFSR counter.

Similar to Write command operation, the progress of the test such as the amount of transferred data is displayed on the console every second. Finally, total size, total time usage, and test speed are displayed on the console as a test result.

 

Note: If Number of users more than 1, the firmware will calculate start address and length for each user. The result of the calculation is displayed on console.

 


 

Figure 2‑8 shows the error message when data verification is failed. “Verify fail” is displayed with the information of the 1st failure data of each user, i.e., the error byte address, the expected value, and the read value.

 

User can press any key(s) to cancel read operation. Otherwise, the operation is still run until finishing Read command. After that, the output performance is displayed on the console.

 

After cancelling the operation, the read command still runs as the background process and

may not finish in a good sequence. It is recommended to restart system before starting a

new test

 

Figure 28 Data verification is failed

 

 


 

2.4      SMART Command

 

Select ‘3’ to send SMART command to NVMe SSD.

 

Figure 29 Test result when running SMART command

 

There are two inputs for running SMART command, described as follows.

1)  Number of users: Enter number of users to send command. Valid from 1 to 4 users.

2)  The first user: Select the first user to operate the command. Valid from 0 to 3.

 

If all inputs are valid, the operation is started. SMART command of the first user is sent to the SSD. After the operation is done, SMART/Health Information (output from SMART command) is displayed as shown in Figure 2‑9. The console shows Health status and SMART log information. Health status shows the remaining life of the SSD in percent unit which is calculated from Percentage Used in the SMART log information.

 

The SMART log information shows seven parameters as follow.

1)   Percentage used: Display SSD usage in percent unit.

2)   Temperature in °C unit.

3)   Total Data Read decoded as GB/TB unit. Also, raw data without decoding is displayed as 128-bit hexadecimal unit. The unit size of raw data is 512,000 bytes.

4)   Total Data Written decoded as GB/TB unit. Also, raw data without decoding is displayed as 128-bit hexadecimal unit. The unit size of raw data is 512,000 bytes.

5)   Power On Cycles: Display the number of power cycles.

6)   Power On Hours: Display the period of time in hours to show how long the SSD has been powered on.

7)   Unsafe Shutdowns: Display the number of unsafe shutdowns of SSD

 

If the current user is not the last user, repeat to send SMART command for the next user and display the result on the console.


 

2.5      Flush Command

 

Select ‘4’ to send Flush command to NVMe SSD.

 

Figure 210 Test result when running Flush command

 

There are two inputs for running Flush command, described as follows.

1)  Number of users: Enter number of users to send command. Valid from 1 to 4 users.

2)  The first user: Select the first user to operate the command. Valid from 0 to 3.

 

If all inputs are valid, the operation is started. After finishing Flush operation, the massage “Flush Command Complete” is displayed. If the current user is not the last user, repeat to send Flush command for the next user. The complete message is displayed on the console after the operation of each user is done.

 


 

2.6       Shutdown Command

 

Select ‘5’ to send Shutdown command to NVMe SSD.

 

Figure 211 Test result when running Shutdown command

 

The shutdown command can run once in a system.

 

·      User selects the user for sending the command which is valid from 0 to 3. If the input is valid, the confirmation message is displayed on the console.

·      User enters ‘y’ or ‘Y’ to continue the operation or other keys to cancel the operation.

 

After finishing Shutdown operation, “Shutdown command is complete” is displayed on the console as the last message. Main menu is not displayed anymore. User needs to power off/on test system to start new test operation.

 


 

3       Revision History

Revision

Date

Description

1.1

31-May-22

Update SMART log information

1.0

12-Jan-21

Initial version release