OCP_DatacenterSSD_2_0_UserInput

OCP_DCSSD_2_0_Thermal_CompositeTemperature.py

NOTE: Two identical drives are required to run this script – same vendor, same model, same capacity, same firmware version

This script will run the following tests:
  1. Precondition both drives with 128KiB sequential writes

  2. Have the user insert DUT1 and power it on

  3. Wait 10 minutes for DUT1 to reach idle steady state

  4. Issue GetLogPage for LID 2h and record composite temperature

  5. Start 100% 128KiB sequential writes and wait for steady state

  6. Every 10 minutes for 2 hours, compute mininum, maximum, and average composite temperature values, and verify mininum and maximum delta is <= 2 degrees C

  7. Stop I/O

  8. Have the user replace DUT1 with DUT2 and power it on

  9. Repeat steps 3-8

  10. Verify delta for idle, mininum, maximum, and average composite temperature values, respectively, between both drives is <= 2 degrees C

  11. Have the user replace DUT2 with DUT1 and power it on

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

TRPT-2/3

OCP_DCSSD_2_0_Labeling_IdentifyCommand.py

This script will run the following tests:
  1. Get various fields from Identify Controller

  2. Have the user verify model number is same between identify controller, adaptation parameters, and label

  3. Have the user verify serial number is same between identify controller, adaptation parameters, and label

  4. Have the user verify firmware version is same between identify controller, adaptation parameters, and label

  5. Have the user verify drive capacity is same between identify controller, adaptation parameters, and label

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

LABL-1/4/11/12

OCP_DCSSD_2_0_FormFactor_M2_ManualInspection.py

This script will run the following tests:
  1. Have the user check drive dimensions

  2. Have the user check drive uses M key

  3. Have the user check drive label placement

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FFM2-1/2/3/4/11

OCP_DCSSD_2_0_Thermal_TemperatureSensors.py

This script will run the following tests:
  1. Precondition the drive with 128KiB sequential writes

  2. Let drive reach idle steady state

  3. Issue GetLogPage for LID 2h and record composite temperature field value

  4. Based on temperature sensor count from adaptation data, verify temperature sensors are > 0

  5. Have the user calculate composite temperature using vendor-specific equation and verify it agrees with composite temperature from LID 2h (15 minutes will be allowed to do this)

  6. Perform 128KiB sequential writes

  7. After workload reaches steady state, repeat steps 3-5

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

TRPT-1/4

get_user_input_value(question)

Ask user a question and wait for input, and verify it’s an integer or float value

Parameters

question (str) – Question to ask the user

Returns

input_value – Value entered by the user

Return type

int or float

OCP_DCSSD_2_0_FormFactor_E1S_1CConnector.py

This script will run the following tests:
  1. Verify PCI Express Link Capabilities register (0Ch) lane width supports at least x4

  2. Have the user verify the device only has a 1C connector

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FFE1S-12

OCP_DCSSD_2_0_FormFactor_E1L_HotSwap.py

This script will run the following tests:
  1. Run sequential read and write I/O test for 5 minutes

  2. Verify performance is within 5% of performance numbers supplied in adaptation parameters

  3. Run sequential write I/O test

  4. Have the user unplug and plugin the drive

  5. Do a sequential read and verify there’s no miscompare

  6. Stop sequential write I/O test

  7. Run sequential read and write I/O test for 5 minutes

  8. Verify performance is within 5% of performance numbers supplied in adaptation parameters

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

GFF-5

OCP_DCSSD_2_0_FormFactor_E1S_HotSwap.py

This script will run the following tests:
  1. Run sequential read and write I/O test for 5 minutes

  2. Verify performance is within 5% of performance numbers supplied in adaptation parameters

  3. Run sequential write I/O test

  4. Have the user unplug and plugin the drive

  5. Do a sequential read and verify there’s no miscompare

  6. Stop sequential write I/O test

  7. Run sequential read and write I/O test for 5 minutes

  8. Verify performance is within 5% of performance numbers supplied in adaptation parameters

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

GFF-5

OCP_DCSSD_2_0_Unsupported_Feature.py

This script will run the following tests:
  1. Do SetFeatures and GetFeatures for every reserved FID in the table and verify “invalid field in command” error is returned

  2. Do SetFeatures and GetFeatures for every unsupported optional FID in the table and verify “invalid field in command” error is returned

  3. Do SetFeatures and GetFeatures for every supported optional FID in the table and verify success is returned

  4. Do SetFeatures and GetFeatures for every vendor unique FID in the table and verify “invalid field in command” error is returned

  5. Have the user perform challenge-response device authentication if supported, otherwise exit script

  6. Do SetFeatures and GetFeatures for every unsupported vendor unique FID in the table and verify “invalid field in command” error is returned

  7. Do SetFeatures and GetFeatures for every supported vendor unique FID in the table and verify success is returned

  8. Execute a controller reset

  9. Do SetFeatures and GetFeatures previously unlocked vendor unique FIDs and verify “invalid field in command” error is returned

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

SEC-19

check_fid_optional(dut, fid_list, num_fids_supp, fids_supp, fids_supp_len)

Verify unsupported optional FID returns INVALID_FIELD error, and supported optional FID doesn’t return that error

Parameters
  • dut (XML_API) – Device object under test

  • fid_list (list) – List of FIDs (in integer format) to loop through

  • num_fids_supp (int) – Value of NUM_OPT_FIDS_SUPPORTED or NUM_VU_FIDS_SUPPORTED

  • fids_supp (list) – List of OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED

  • fids_supp_len (int) – Length of OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED

Returns

Return type

None

check_fid_reserved(dut, nvme_ver, fid_list)

Verify reserved FID returns INVALID_FIELD error

Parameters
  • dut (XML_API) – Device object under test

  • nvme_ver (int) – NVMe version supported by the controller

  • fid_list (list) – List of FIDs (in integer format) to loop through

Returns

Return type

None

check_fid_vendor_unique(dut, fid_list, num_fids_supp, fids_supp, fids_supp_len, chall_flag)

Verify vendor unique FID returns INVALID_FIELD error when locked. When unlocked, verify supported vendor unique FID doesn’t fail with INVALID_FIELD error.

Parameters
  • dut (XML_API) – Device object under test

  • fid_list (list) – List of FIDs (in integer format) to loop through

  • num_fids_supp (int) – Value of NUM_OPT_FIDS_SUPPORTED or NUM_VU_FIDS_SUPPORTED

  • fids_supp (list) – List of OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED

  • fids_supp_len (int) – Length of OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED

  • chall_flag (int) – 1 = Verify supported FIDs don’t fail with INVALID_FIELD, 0 = Verify supported FIDs do fail with INVALID_FIELD

Returns

Return type

None

print_fids_supp_hex(param_name, fids_supp_hex, fids_supp_len_hex)

Print a hexadecimal list of controller-supported FIDs

Parameters
  • param_name (str) – Parameter name (e.g. OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED)

  • fids_supp_hex (list) – List of OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED

  • fids_supp_len_hex (int) – Length of OPT_FIDS_SUPPORTED or VU_FIDS_SUPPORTED

Returns

Return type

None

OCP_DCSSD_2_0_FormFactor_E1S_GreenLED.py

This script will run the following tests:
  1. Have the user check drive green activity LED is lit solidly

  2. Start write I/O and have the user check drive green activity LED is flashing while I/O is running

  3. Start read I/O and have the user check drive green activity LED is flashing while I/O is running

  4. Power off drive and have the user check drive green activity LED is off

  5. Power on drive and have the user check drive green activity LED is lit solidly

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FFE1S-3/4

OCP_DCSSD_2_0_FormFactor_U2U3_LED.py

This script will run the following tests:
  1. Have the user check drive activity LED is off

  2. Start write I/O and have the user check drive activity LED is flashing while I/O is running

  3. Start read I/O and have the user check drive activity LED is flashing while I/O is running

  4. Power off drive and have the user check drive activity LED is off

  5. Power on drive and have the user check drive activity LED is off

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FF8639-3/4

OCP_DCSSD_2_0_FormFactor_M2_LED.py

This script will run the following tests:
  1. Have the user check drive activity LED is lit solidly

  2. Start write I/O and have the user check drive activity LED is flashing while I/O is running

  3. Start read I/O and have the user check drive activity LED is flashing while I/O is running

  4. Power off drive and have the user check drive activity LED is off

  5. Power on drive and have the user check drive activity LED is lit solidly

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FFM2-6/7

OCP_DCSSD_2_0_Unsupported_LogPage.py

This script will run the following tests:
  1. Do GetLogPage for every reserved LID in the table and verify “invalid log page” error is returned

  2. Do GetLogPage for every unsupported optional LID in the table and verify “invalid log page” error is returned

  3. Do GetLogPage for every supported optional LID in the table and verify success is returned

  4. Do GetLogPage for every vendor unique LID in the table and verify “invalid log page” error is returned

  5. Have the user perform challenge-response device authentication if supported, otherwise exit script

  6. Do GetLogPage for every unsupported vendor unique LID in the table and verify “invalid log page” error is returned

  7. Do GetLogPage for every supported vendor unique LID in the table and verify success is returned

  8. Execute a controller reset

  9. Do GetLogPage previously unlocked vendor unique LIDs and verify “invalid log page” error is returned

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

SEC-19

check_lid_optional(dut, lid_list, num_lids_supp, lids_supp, lids_supp_len)

Verify unsupported optional LID returns INVALID_LOG_PAGE error, and supported optional LID doesn’t return that error

Parameters
  • dut (XML_API) – Device object under test

  • lid_list (list) – List of LIDs (in integer format) to loop through

  • num_lids_supp (int) – Value of NUM_OPT_LIDS_SUPPORTED or NUM_VU_LIDS_SUPPORTED

  • lids_supp (list) – List of OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED

  • lids_supp_len (int) – Length of OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED

Returns

Return type

None

check_lid_reserved(dut, nvme_ver, lid_list)

Verify reserved LID returns INVALID_LOG_PAGE error

Parameters
  • dut (XML_API) – Device object under test

  • nvme_ver (int) – NVMe version supported by the controller

  • lid_list (list) – List of LIDs (in integer format) to loop through

Returns

Return type

None

check_lid_vendor_unique(dut, lid_list, num_lids_supp, lids_supp, lids_supp_len, chall_flag)

Verify vendor unique LID returns INVALID_LOG_PAGE error when locked. When unlocked, verify supported vendor unique LID doesn’t fail with INVALID_LOG_PAGE error.

Parameters
  • dut (XML_API) – Device object under test

  • lid_list (list) – List of LIDs (in integer format) to loop through

  • num_lids_supp (int) – Value of NUM_OPT_LIDS_SUPPORTED or NUM_VU_LIDS_SUPPORTED

  • lids_supp (list) – List of OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED

  • lids_supp_len (int) – Length of OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED

  • chall_flag (int) – 1 = Verify supported LIDs don’t fail with INVALID_LOG_PAGE, 0 = Verify supported LIDs do fail with INVALID_LOG_PAGE

Returns

Return type

None

print_lids_supp_hex(param_name, lids_supp_hex, lids_supp_len_hex)

Print a hexadecimal list of controller-supported LIDs

Parameters
  • param_name (str) – Parameter name (e.g. OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED)

  • lids_supp_hex (list) – List of OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED

  • lids_supp_len_hex (int) – Length of OPT_LIDS_SUPPORTED or VU_LIDS_SUPPORTED

Returns

Return type

None

OCP_DCSSD_2_0_Unsupported_Command.py

This script will run the following tests:
  1. Verify reserved Admin and NVM opcodes in the table return an “invalid command opcode” error

  2. Verify unsupported optional Admin and NVM opcodes in the table return an “invalid command opcode” error

  3. Verify supported optional Admin and NVM opcodes in the table return success

  4. Verify vendor unique Admin and NVM opcodes in the table return an “invalid command opcode” error

  5. Have the user perform challenge-response device authentication if supported, otherwise exit script

  6. Verify unsupported vendor unique Admin and NVM opcodes in the table return an “invalid command opcode” error

  7. Verify supported vendor unique Admin and NVM opcodes in the adaptation parameters file return success

  8. Execute a controller reset

  9. Execute a command for previously unlocked vendor unique Admin and NVM opcodes and verify an “invalid command opcode” error is returned

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

SEC-19

check_opcode_optional(dut, opcode_list, admin_nvm_flag, num_cmds_supp, cmds_supp, cmds_supp_len)

Verify unsupported optional opcode returns INVALID_OPCODE error, and supported optional opcode doesn’t return that error

Parameters
  • dut (XML_API) – Device object under test

  • opcode_list (list) – List of opcodes (in integer format) to loop through

  • admin_nvm_flag (int) – 0 = Execute Admin command, 1 = Execute NVM command

  • num_cmds_supp (int) – Value of NUM_OPT_ADM_CMDS_SUPPORTED or NUM_OPT_NVM_CMDS_SUPPORTED

  • cmds_supp (list) – List of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES

  • cmds_supp_len (int) – Length of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES

Returns

Return type

None

check_opcode_reserved(dut, nvme_ver, opcode_list, admin_nvm_flag)

Verify reserved opcode returns INVALID_OPCODE error

Parameters
  • dut (XML_API) – Device object under test

  • nvme_ver (int) – NVMe version supported by the controller

  • opcode_list (list) – List of opcodes (in integer format) to loop through

  • admin_nvm_flag (int) – 0 = Execute Admin command, 1 = Execute NVM command

Returns

Return type

None

check_opcode_vendor_unique(dut, opcode_list, admin_nvm_flag, num_cmds_supp, cmds_supp, cmds_supp_len, chall_flag)

Verify vendor unique opcode returns INVALID_OPCODE error when locked. When unlocked, verify supported vendor unique opcode doesn’t fail with INVALID_OPCODE error.

Parameters
  • dut (XML_API) – Device object under test

  • opcode_list (list) – List of opcodes (in integer format) to loop through

  • admin_nvm_flag (int) – 0 = Execute Admin command, 1 = Execute NVM command

  • num_cmds_supp (int) – Value of NUM_OPT_ADM_CMDS_SUPPORTED or NUM_OPT_NVM_CMDS_SUPPORTED

  • cmds_supp (list) – List of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES

  • cmds_supp_len (int) – Length of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES

  • chall_flag (int) – 1 = Verify supported opcodes don’t fail with INVALID_OPCODE, 0 = Verify supported opcodes do fail with INVALID_OPCODE

Returns

Return type

None

print_cmds_supp_hex(param_name, cmds_supp_hex, cmds_supp_len_hex)

Print a hexadecimal list of controller-supported opcodes

Parameters
  • param_name (str) – Parameter name (e.g. OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES or VU_ADM_CMD_OPCODES or VU_NVM_CMD_OPCODES)

  • cmds_supp_hex (list) – List of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES or VU_ADM_CMD_OPCODES or VU_NVM_CMD_OPCODES

  • cmds_supp_len_hex (int) – Length of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES or VU_ADM_CMD_OPCODES or VU_NVM_CMD_OPCODES

Returns

Return type

None

OCP_DCSSD_2_0_Labeling_Barcodes.py

This script will run the following tests:
  1. Have the user verify barcode-1 scanned value

  2. Have the user verify model number is same between adaptation parameters, label, and barcode-1 scanned value

  3. Have the user verify serial number is same between adaptation parameters, label, and barcode-1 scanned value

  4. If adaptation parameter PSID Type is “unique”, have the user verify PSID is the same between label and barcode-2 scanned value

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

LABL-1/5/11/12/14/21

OCP_DCSSD_2_0_Thermal_Throttling.py

This script will run the following tests:
  1. Issue IdentifyController and get WCTEMP value

  2. Issue AER

  3. Have the user set the oven temperature to 25 degrees Celsius

  4. Issue GetLogPage for LID C0h and check thermal throttling status and count values

  5. Perform 128KB sequential writes

  6. Have the user increase the oven temperature 1 degree Celsius per minute

  7. Issue GetLogPage for LID 2h and get composite temperature

  8. Issue GetLogPage for LID C0h and check thermal throttling status and count values

  9. Repeat steps 7-8 until composite temperature reaches 77 degrees Celsius

  10. Verify AER completed successfully

  11. Issue GetLogPage for LID 2h and verify critical warning bit 1 is set to 1

  12. Issue GetLogPage for LID C0h and check thermal throttling status and count values

  13. Have the user set the oven temperature to 25 degrees Celsius

  14. Issue GetLogPage for LID 2h and verify composite temperature is below 77 degrees Celsius

  15. Stop I/O

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

TTROTTLE-2/3/5/6, SMART-12

wait_for_aen(dut, log_file)

Verify asynchronous event request completed and has the correct info

Parameters
  • dut (XML_API) – Device object under test

  • log_file (file) – /var/log/messages output

Returns

aer_flag – 0 = AER was successful, 1 = AER failed

Return type

int

OCP_DCSSD_2_0_FormFactor_E1L_1CConnector.py

This script will run the following tests:
  1. Verify PCI Express Link Capabilities register (0Ch) lane width supports at least x4

  2. Have the user verify the device only has a 1C connector

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FFE1L-12

OCP_DCSSD_2_0_Labeling_ManualInspection.py

This script will run the following tests:
  1. Have the user check drive label placement

  2. Have the user verify various fields are the same between adaptation parameters and label

  3. Have the user verify PSID is either on or not on the label

  4. Have the user verify either one or two barcodes are on the label

  5. Have the user verify vendor logo and storage device text are on the label

  6. Have the user check logos on the label

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

LABL-1/2/4/6/7/10/11/12/13/15/16/17/23

OCP_DCSSD_2_0_FormFactor_E1L_GreenLED.py

This script will run the following tests:
  1. Have the user check drive green activity LED is lit solidly

  2. Start write I/O and have the user check drive green activity LED is flashing while I/O is running

  3. Start read I/O and have the user check drive green activity LED is flashing while I/O is running

  4. Power off drive and have the user check drive green activity LED is off

  5. Power on drive and have the user check drive green activity LED is lit solidly

NOTE: The user is required to run this script from the CLI as Yes/No questions will need to be answered

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 requirements referenced by this script:

FFE1L-3/4