raNVMe-IP Data Stream Demo Instruction

Rev1.1 5-Jul-23

 

 

1     Overview.. 2

2     Test Menu.. 3

2.1     Identify Command. 3

2.2     Start Write Command. 4

2.3     Start Read Command. 7

2.4     SMART Command. 9

2.5     Flush Command. 10

2.6     Shutdown Command. 10

3     Revision History. 11

 


 

1       Overview

 

This document describes the instruction to run raNVMe-IP for transferring data stream, controlled by start/stop instead of transfer size. Similar to the standard raNVMe-IP demo, it can access one SSD for operating six commands, i.e., Identify, Write, Read, SMART, Flush or Shutdown command. But total transfer size is not set when running Write or Read command. User controls test operation via FPGA console.

 

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

https://dgway.com/products/IP/NVMe-IP/dg_nvmeip_fpgasetup_xilinx_en.pdf

 

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 data stream 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

 

After finishing the operation, the SSD information output from Identify command is displayed. The console shows two values.

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

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

 

Figure 22 Error when LBA unit of SSD is not supported

 

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


 

2.2      Start Write Command

 

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

 

Figure 23 Test result when running Start write test

 

Before running Start write test, user sets two parameters: Start address and Test pattern.

1)  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. According to raNVMe-IP specification, this input must be aligned to 8 for 4-Kbyte alignment.

2)  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.

 

After that, the IP starts writing the data to SSD if all inputs are valid. Otherwise, the operation is cancelled. During writing data, total transmit size is displayed on the console every second to be the test progress. The test can be stopped when the user enters ‘x’ or ‘X’.

 

After the system completely stops the operation, test result, i.e., total size, total time usage and test speed are displayed on the console.

 

Note: If the user does not stop the operation and the last address of SSD is written, the test system reset the next address for storing the next data will be equal to 0.

 


 

Figure 24 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 unique header is not included when running all-0 or all-1 pattern.

 

The left window of Figure 2‑4 shows the example when using 32-bit incremental pattern while the right window shows the example when using 32-bit LFSR pattern.

 


 

During running the test, if user enters other keys (not ‘x’ or ‘X’) to stop the operation, the warning message (“Press ‘x’ to stop”) is displayed on the console. After that, the test is still run, as shown in Figure 2‑5.

 

Figure 25 Other keys are received during running the write test

 

Figure 2‑6 shows the example error message when the input from the user is invalid. It may be caused from out-of-range input or the address is not aligned to 8. “Invalid input” is displayed as the error message and the operation is cancelled before returning to the main menu.

 

Figure 26 Error message from the invalid input

 

 


 

2.3      Start Read Command

 

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

 

Figure 27 Test result when running start read test

 

Similar to Start write test, user needs to set two parameters: Start address and Test pattern for running Start read test.

1)  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. According to raNVMe-IP specification, this input must be aligned to 8 for 4-Kbyte alignment.

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

 

After that, the IP starts reading the data from SSD if all inputs are valid. Otherwise, the operation is cancelled. During reading data, total receive size is displayed on the console every second to be the test progress. The test can be stopped when the user enters ‘x’ or ‘X’.

 

After the system completely stops the operation, test result, i.e., total size, total time usage and test speed are displayed on the console.

 

Note: If the user does not stop the operation and the last address of SSD is read, the test system reset the next address for reading the next data will be equal to 0.

 


 

Figure 2‑8 shows the error message when data verification is failed. “Verify fail” is displayed with the information of the 1st failure data, i.e., the error byte address, the expected value and the read value. However, the operation does not stop until user enters ‘x’ or ‘X’.

 

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

 

After finishing the operation, SMART/Health Information (output from SMART command) is displayed as shown in Figure 2‑9. The console shows six parameters, described as follows.

1)   Temperature in °C unit.

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

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

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

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

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


 

2.5      Flush Command

 

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

 

Figure 210 Test result when running Flush command

 

“Flush Command Complete” is displayed after finishing Flush operation.

 

 

2.6       Shutdown Command

 

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

 

Figure 211 Test result when running Shutdown command

 

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.0

27-Nov-20

Initial version release

1.1

12-Jan-21

Update test result by new SSD model