2-Ch RAID0 (NVMeG3-IP) Demo Instruction
Rev1.0 3-Jul-23
This document describes the instruction to run 2-ch RAID0 demo on FPGA development board by using the AB17-M2FMC board. The demo is designed to write/verify data with two M.2 NVMe SSDs as RAID0 operation. It is recommended to use the same SSD model for all SSDs. User controls test operation through Serial console.
To run the demo on FPGA development board, please prepare following environment.
1) FPGA Development board: ZCU106, ZCU102
2) PC installing Xilinx programmer software (Vivado) and Serial console software such as TeraTerm.
3) AB17-M2FMC board, provided by Design Gateway.
4) Xilinx power adapter for FPGA board
5) Two M.2 NVMe SSDs, inserting to M.2 connector on AB17.
6) Two micro USB cables for programming FPGA and Serial console, connecting between FPGA board and PC
Figure 1‑1 NVMeG3-IP RAID0 demo setup by AB17 on ZCU106
Figure 1‑2 NVMeG3-IP RAID0 demo setup by AB17 on ZCU102
1) Power off system.
2) Connect two M.2 NVMe SSDs to Drive#1 and #2 connector on AB17-M2FMC
3) Connect AB17-M2FMC to HPC0 (J5) for ZCU106 or HCP1 (J4) for ZCU102 (J4), as shown in Figure 2‑1.
Figure 2‑1 Connect AB17 to FPGA board
4) Connect two micro USB cables between FPGA board and PC for FPGA programming and Serial console.
Figure 2‑2 USB cable connection
5) Power on FPGA development board.
6) On PC, additional COM port is detected after connecting USB cables to FPGA board. More than one COM ports are detected.
In case of ZCU106/ZCU102, select Interface 0 COM port as shown in Figure 2‑3.
On Serial console, the setting is as follows.
Baud rate=115,200, Data=8-bit, Non-Parity, and Stop = 1.
Figure 2‑3 Two COM ports from FPGA connection
7) Open Vivado TCL shell and change directory to download or directory that batch file is located. Next, type NVMeG3IPRaid0x2Test.bat_ZCU106/ZCU102.bat, as shown in Figure 2‑4.
Figure 2‑4 Command script to download demo file on Vivado TCL shell
8) Check LED status on FPGA board. The description of LED is as follows.
Table 2‑1 LED Definition
GPIO LED |
ON |
OFF |
0 |
Normal operation |
SSD is not good status |
1 |
System is busy |
Idle status |
2 |
IP Error detect |
Normal operation |
3 |
Data verification fail |
Normal operation |
9) After programming completely, LED[0] and LED[1] are ON during PCIe initialization process. Then, LED[1] changes to OFF after PCIe completes initialization process.
Figure 2‑5 LED status after programming configuration file and finishing PCIe initialization
10) On the console, the message is displayed to show current status as follows.
· “Waiting IP initialization” is displayed after PCIe is linked up.
· After RAID0 finishes initialization, main menu to run six commands is shown on the console.
Figure 2‑6 Main menu after RAID0 finishes initialization
When LBA size is 4 Kbyte, the error message is displayed on the console as shown in Figure 2‑7
Figure 2‑7 Error message when LBA does not support
Select ‘0’ to send Identify command to RAID0.
Figure 3‑1 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 of each SSD.
2) RAID capacity: This value is calculated by multiplying device capacity in channel#0 by 2.
Select ‘1’ to send Write command to RAID0.
Figure 3‑2 Test result when running Write command
User sets three parameters as follows.
1) Start Address: Start address to write RAID0 as 512-byte unit. The input is decimal unit when the input is only digit number. User can add “0x” as a prefix for hexadecimal unit.
2) Transfer Length: Total transfer size as 512-byte unit. The input is decimal unit when the input is only digit number. User can add “0x” as a prefix for hexadecimal unit.
3) Test pattern: Select test data pattern for writing RAID0. 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, current transfer size is displayed on the console every second to show that system is still alive. Finally, total size, total time usage, and test speed are calculated and displayed on the console as a test result.
Figure 3‑3 Example Test data of the 1st 512-byte of each SSD by using LFSR pattern
The stripe size in 2-ch RAID0 demo is 512-byte. For incremental, decremental, or LFSR pettern, each 512-byte data has unique 64-bit header which consists of 48-bit address (in 512-byte unit) and 16-bit zero value. The data after 64-bit header is the test pattern which is selected by user. The 1st stripe is mapped to the first 512-byte of SSD#0 while the 2nd stripe is mapped to the first 512-byte of SSD#1, as shown in Figure 3‑3. The unique header is not included when running all-0 or all-1 pattern.
Figure 3‑4 Error message from the invalid input
Figure 3‑4 shows the example when the input is not in the recommended range for each parameter. The console displays “Invalid input” and then the operation is cancelled.
Select ‘2’ to send Read command to RAID0.
Figure 3‑5 Input and result of Read Command menu
User inputs three parameters as follows.
1) Start Address: Start address to read SSD as 512-byte unit. The input is decimal unit when the input is only digit number. User can add “0x” as a prefix for hexadecimal unit.
2) Transfer Length: Total transfer size as 512-byte unit. The input is decimal unit when the input is only digit number. User can add “0x” as a prefix for hexadecimal unit
3) Test pattern: Select test data pattern to verify data from RAID0. Test pattern must be matched with the pattern using in Write Command menu. 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 menu, test system starts reading data from RAID0 when all inputs are valid. During reading data, current transfer size is displayed on the console every second to show that system is still alive. Total size, total time usage, and test speed are calculated and displayed after finishing data transferring.
Figure 3‑6 shows 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. User can press any key(s) to cancel read operation or wait until finishing Read command. Without cancelling the operation, the read operation runs until finish and displays the performance on the console as a test result.
When cancelling the operation, the read command still runs as the background process. So, the operation does not complete in the good sequence. It is recommended to power-off/on AB18/AB16 and then presses “RESET” button to restart system.
Figure 3‑6 Data verification is failed
Select ‘3’ to send SMART command to RAID0.
Figure 3‑7 Test result when running SMART command
When finishing the operation, SMART/Health Information (output from SMART command) is displayed as shown in Figure 3‑7. The console shows six values from each SSD, 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 byte.
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 byte.
4) Power On Cycles: Display the number of power cycles.
5) Power On Hours: Display 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
Select ‘4’ to send Flush command to RAID0.
Figure 3‑8 Test result when running Flush command
“Flush Command Complete” is displayed after finishing Flush operation.
Select ‘5’ to send Shutdown command to RAID0.
The confirmation message is displayed on the console. User enters ‘y’ or ‘Y’ to confirm the operation or enters 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 and user needs to power off/on the test system to start new test operation.
Revision |
Date |
Description |
1.0 |
17-Feb-20 |
Initial version release |