OCP_DatacenterSSD

OCP_DCSSD_LogPage_CmdsSupportedEffects.py

This script will run the following tests:
  1. Do GetLogPage for LID 5h

  2. Check UUID, CSE, CCC, NIC, NCC, LBCC, CSUPP field values for admin and I/O commands

Pass/Fail: Script passes if all tests pass

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

STD-LOG-6

LogPageCheckBitValue(cmd_dict, tag, bit_fieldname, exp_value)

Check value of a particular bit

Parameters
  • cmd_dict (dict) – Command dictionary to use

  • tag (str) – Bit field name

  • bit_fieldname (str) – Bit field abbreviation

  • exp_value (int) – Expected bit value

Returns

Return type

None

OCP_DCSSD_FWUpdate_NoDataLoss.py

This script will run the following tests:
  1. Get Log Page command with Log Page ID = 03h

  2. Identify Namespace with CNS = 0 and NSID under test

  3. Identify command with CNS = 1

  4. Firmware Download command

  5. Firmware Commit command

  6. 128KB Sequential Reads

  7. 128k Sequential Writes using QD 128 using data pattern 5A5A5A5Ah

Pass/Fail: Script passes if all tests pass

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

FWUP-10, FWUP-2, MS-CONF-6

download_commit(dut, prev_fw_fn, numd, alt_slot, start_step)

Display the value of a log page field, and if it’s a static value, verify it’s correct

Parameters
  • dut (XML_API) – Device object under test

  • prev_fw_fn (str) – Previous firmware filename

  • numd (int) – Value of NUMD

  • alt_slot (int) – Alternate firmware slot

  • start_step (int) – Number of the first test step in the function

Returns

Return type

None

OCP_DCSSD_SetGetFeatures_ROWTM.py

This script will run the following tests:

  1. Issue Get Features with various SEL values and verify returned values

  2. Issue Set Features to set write through mode

  3. Issue Get Features with various SEL values and verify returned values

  4. Power cycle the drive

  5. Issue Get Features with various SEL values and verify returned values

  6. Issue Set Features to set read only mode

  7. Issue Get Features with various SEL values and verify returned values

  8. Power cycle the drive

  9. Issue Get Features with various SEL values and verify returned values

Pass/Fail: Script passes if all tests pass

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

ROWTM-1, SROWTM-1-15, GROWTM-1-15, GETF-1/2

get_feat_fid_c2(dut, step_num, sel_val, ocp_ver)

Do GetFeatures with SEL value and verify returned info is correct

Parameters
  • dut (XML_API) – Device object under test

  • step_num (int) – Step number from testplan

  • sel_val (int) – SEL value

  • ocp_ver (int) – OCP version supported by the controller

Returns

Return type

None

set_feat_fid_c2(dut, dword11_val)

Do SetFeatures with Dword 11 value and verify it passed

Parameters
  • dut (XML_API) – Device object under test

  • dword11_val (hex) – Dword11 value

Returns

Return type

None

OCP_DCSSD_SMBus_CmdCode00.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 0 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3

OCP_DCSSD_LogPage_SMART_WriteRead.py

This script will run the following tests:
  1. Do GetLogPage for LID 2h and get values of various fields

  2. Perform 4KB random reads and writes for 65 minutes

  3. Do GetLogPage for LID 2h and verify the various fields increased

Pass/Fail: Script passes if all tests pass

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

STD-LOG-2, SLOG-5

compare_fields(field_name, value_before, value_after)

Compare field values before and after I/O test

Parameters
  • field_name (str) – Field name

  • value_before (int) – Field value before I/O

  • value_after (int) – Field value after I/O

Returns

Various fields

Return type

list

get_smart_logpage_fields(dut, logpage_nsid)

Get log page field values

Parameters
  • dut (XML_API) – Device object under test

  • logpage_nsid (int) – NSID to use

Returns

Various fields

Return type

list

OCP_DCSSD_LogPage_SMARTCloudHealth_PLPCount.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h and get PLP Start Count field value

  2. Power cycle the drive

  3. Do GetLogPage for LID C0h and get PLP Start Count field value and verify it increased by 1

Pass/Fail: Script passes if all tests pass

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

SMART-24

OCP_DCSSD_ContConfig_FatalStatus.py

This script will run the following tests:
  1. Obtain CSTS.CFS and verify it’s set to zero

Pass/Fail: Script passes if register value is set to zero

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

NVMe-CFG-3

OCP_DCSSD_PCIe_MaxPayloadSize.py

This script will run the following tests:
  1. Verify PCI express Device Capabilities register (04h) max payload size

  2. Verify PCI Express Link Status register (08h) max read request size through power cycle

Pass/Fail: Script passes if all tests pass

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

PCI-1

OCP_DCSSD_Reliability_FatalStatus.py

This script will run the following tests:
  1. Obtain CSTS.CFS and verify it’s set to zero

Pass/Fail: Script passes if register value is set to zero

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

NVMe-CFG-3

OCP_DCSSD_IOCmds_TimeVerification.py

This script will run the following tests:
  1. Run I/O profile for 1 hour

  2. Verify no I/Os took longer than 8 seconds to complete

  3. Verify 7 or fewer I/Os took more than 2 seconds to complete

  4. Verify remaining I/Os took 2 or less seconds to complete

  5. Repeat previous steps for each I/O profile

Pass/Fail: Script passes if all tests pass

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

CTO-3

check_io_test_status(dut, test_id)

Check I/O test status result

Parameters
  • dut (XML_API) – Device object under test

  • test_id (str) – I/O testname

Returns

io_test_flag – 0 = test failed, 1 = test didn’t fail

Return type

int

get_sb_filter_timestamp(dut, test_id, timestamp_type)

Get the starting or ending timestamp and format it for use in sb_filter

Parameters
  • dut (XML_API) – Device object under test

  • test_id (str) – I/O testname

  • timestamp_type (str) – “StartTime” or “EndTime”

Returns

timestamp – Timestamp formatted for sb_filter

Return type

str

OCP_DCSSD_PCIe_ErrorLogging.py

This script will run the following tests:
  1. Record PCIe Correctable Error Statuses from AERCAP + 10h register and verify sum is equal to PCIe Correctable Error Count of LID C0h

Pass/Fail: Script passes if all tests pass

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

PCIERR-1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16

OCP_DCSSD_FormFactor_E1L_PCIeSpeedLaneWidth.py

This script will run the following tests:
  1. Verify PCI Express Link Capabilities register (0Ch) lane width and speed

  2. Verify PCI Express Link Status register (12h) lane width and speed

Pass/Fail: Script passes if all tests pass

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

FFE1L-2

OCP_DCSSD_Security_UnsuppCmds.py

This script will run the following tests:
  1. Do a generic command for every unsupported Admin and NVM command opocde in the table and verify “invalid command opcode” error is returned

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_unsupp_cmd(dut, nvme_ver, ocp_ver, num_cmds_supp, cmds_supp, cmds_supp_len, range_start, range_end, admin_nvm_flag)

Verify unsupported command opcode returns INVALID_OPCODE error

Parameters
  • dut (XML_API) – Device object under test

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

  • ocp_ver (int) – OCP version supported by the controller

  • num_cmds_supp (int) – Value of NUM_OPT_ADM_CMDS_SUPPORTED or NUM_OPT_NVM_CMDS_SUPPORTED or NUM_VU_ADM_CMDS_SUPPORTED or NUM_VU_NVM_CMDS_SUPPORTED

  • cmds_supp (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 (int) – Length of OPT_ADM_CMD_OPCODES or OPT_NVM_CMD_OPCODES or VU_ADM_CMD_OPCODES or VU_NVM_CMD_OPCODES

  • range_start (int) – First command opcode in range to test

  • range_end (int) – Last command opcode in range to test

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

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_LogPage_SMART_LittleEndian.py

This script will run the following tests:
  1. Do GetLogPage for LID 2h and get values of Data Units Read/Written, Host Read/Write Commands, Controller Busy Time, Power Cycles, Power On Hours, and Unsafe Shutdowns fields

  2. Issue four write and read commands, each with 251 blocks

  3. Do GetLogPage for LID 2h and verify Data Units Read/Written and Host Read/Write Commands values increased by at least 1

  4. Surprise power cycle the drive

  5. Do GetLogPage for LID 2h and verify Power Cycle Count and Unsafe Shutdowns values increased by at least 1

  6. Perform 4KB random reads and writes for 65 minutes

  7. Do GetLogPage for LID 2h and verify Power On Hours value increased by at least 1

  8. Verify Controller Busy Time value stayed the same or increased by at least 1

Pass/Fail: Script passes if all tests pass

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

STD-LOG-2, SLOG-3/5

compare_values(field_name, field_value1, field_value2)

Compare field values before and after various testing

Parameters
  • field_name (str) – Field name

  • field_value1 (int) – Original field value

  • field_value2 (int) – New field value

Returns

Return type

None

get_smart_logpage_fields(dut, logpage_nsid)

Get log page field values

Parameters
  • dut (XML_API) – Device object under test

  • logpage_nsid (int) – NSID to use

Returns

Various fields

Return type

int

OCP_DCSSD_FormFactor_E1S_PWRDIS.py

This script will run the following tests:
  1. Assert PWRDIS and wait for device to shutdown

  2. De-assert PWRDIS and wait for device to come up

  3. Start sequential write I/O test and assert PWRDIS and wait for device to shutdown

  4. De-assert PWRDIS and wait for device to come up

  5. Run sequential read I/O test for 5 minutes and verify there are no miscompares

  6. Run sequential write I/O test for 5 minutes

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

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

Pass/Fail: Script passes if all tests pass

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

FFE1S-9

wait_assert(dut)

Wait for PWRDIS signal to be asserted

Parameters

dut (XML_API) – Device object under test

Returns

Return type

None

wait_deassert(dut)

Wait for PWRDIS signal to be de-asserted

Parameters

dut (XML_API) – Device object under test

Returns

Return type

None

OCP_DCSSD_Reset_ContReset.py

This script will run the following tests:
  1. Execute controller reset

  2. Verify AQA, ASQ, ACQ, CMBMSC and PMRMSC registers didn’t change

Pass/Fail: Script passes if all tests pass

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

NVMeR-2

CompareRegisters(reg_name, reg1, reg2, flag1, flag2, cont_reset, nvme_ver_cap=140)

Compare register values from before and after a reset

Parameters
  • reg_name (str) – Register name

  • reg1 (int) – First register value

  • reg2 (int) – Second register value

  • flag1 (int) – Flag value corresponding to the first register value

  • flag2 (int) – Flag value corresponding to the second register value

  • cont_reset (int) – 1 = controller reset was executed, 0 = controller disable was executed

  • nvme_ver_cap (int) – NVMe version supported by the controller for use with CAP register (default is v1.4.0)

Returns

Return type

None

GetRegisterValue(dut, reg_name, reg_offset, num_bits)

Get register value and return it along with a pass/fail value

Parameters
  • dut (XML_API) – Device object under test

  • reg_name (str) – Register name

  • reg_offset (int) – Register offset

  • num_bits (int) – Register size (32 or 64)

Returns

reg_val, flag

Return type

list

VerifyRegisterIsZero(reg_name, reg1, flag1)

Verify register value is set to zero

Parameters
  • reg_name (str) – Register name

  • reg1 (int) – Register value

  • flag1 (int) – Flag value corresponding to the register value

Returns

Return type

None

OCP_DCSSD_FormFactor_E1L_PWRDIS.py

This script will run the following tests:
  1. Assert PWRDIS and wait for device to shutdown

  2. De-assert PWRDIS and wait for device to come up

  3. Start sequential write I/O test and assert PWRDIS and wait for device to shutdown

  4. De-assert PWRDIS and wait for device to come up

  5. Run sequential read I/O test for 5 minutes and verify there are no miscompares

  6. Run sequential write I/O test for 5 minutes

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

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

Pass/Fail: Script passes if all tests pass

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

FFE1L-9

wait_assert(dut)

Wait for PWRDIS signal to be asserted

Parameters

dut (XML_API) – Device object under test

Returns

Return type

None

wait_deassert(dut)

Wait for PWRDIS signal to be de-asserted

Parameters

dut (XML_API) – Device object under test

Returns

Return type

None

OCP_DCSSD_Security_UnsuppFIDs.py

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

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_unsupp_fid(dut, nvme_ver, ocp_ver, num_fids_supp, fids_supp, fids_supp_len, range_start, range_end)

Verify unsupported FID returns INVALID_FIELD error

Parameters
  • dut (XML_API) – Device object under test

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

  • ocp_ver (int) – OCP version supported by the controller

  • 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

  • range_start (int) – First FID in range to test

  • range_end (int) – Last FID in range to test

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_ContConfig_EUI64_NGUID.py

This script will run the following tests:
  1. Verify Number of Namespaces (NN) >= number of valid NSIDs (from Identify with CNS=2h)

  2. Verify EUI64 and NGUID are both non-zero for each active namespace

Pass/Fail: Script passes if all tests pass

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

NVMe-CFG-7, NVMe-CFG-8

OCP_DCSSD_SMBus_CmdCode00_255.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure with offset 0 and length 154 bytes

  2. Get MI Basic subsystem management data structure with offset 154 and length 102 bytes

  3. Verify various fields return correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3/5/6

check_basic_mgmt_value(output_cmd, field_name, field_name_descr, exp_value)

Verify a field value is correct

Parameters
  • output_cmd (dict) – Data structure to check

  • field_name (str) – Name of parameter in data structure to check

  • field_name_descr (str) – Name of parameter to print in the report

  • exp_value (int) – Expected value of parameter

Returns

Return type

None

check_cmdcode_154_167(output_cmd, field_name, field_name_descr, exp_value)

Check field value and return flag value based on success/failure

Parameters
  • output_cmd (dict) – Data structure to check

  • field_name (str) – Name of parameter in data structure to check

  • field_name_descr (str) – Name of parameter to print in the report

  • exp_value (int) – Expected value of parameter

Returns

Return type

Flag value (1 = passed, 0 = failed)

OCP_DCSSD_Security_UnsuppLIDs.py

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

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_unsupp_lid(dut, nvme_ver, ocp_ver, num_lids_supp, lids_supp, lids_supp_len, range_start, range_end)

Verify unsupported LID returns INVALID_LOG_PAGE error

Parameters
  • dut (XML_API) – Device object under test

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

  • ocp_ver (int) – OCP version supported by the controller

  • 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

  • range_start (int) – First LID in range to test

  • range_end (int) – Last LID in range to test

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_Sector_Size.py

This script will run the following tests:
  1. Check for LBA Formats with LBADS fields set to indicate support for 512 and 4096 bytes.

  2. Format DUT for 4096 byte LBA size and check Identify Namespace reports used LBA Format in FLBAS.

  3. Format DUT for 512 byte LBA size and check Identify Namespace reports used LBA Format in FLBAS.

Pass/Fail: Script passes if all tests pass

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

SECTOR-4, MS-CONF-1/2

OCP_DCSSD_Endurance_Data.py

This script will run the following tests:
  1. Do GetLogPage for LID 2h and get values of Percentage Used and Data Units Written fields

  2. Verify Percentage Used >= 100

  3. Verify Data Units Written >= adapation parameter Total Bytes Written at EOL value

Pass/Fail: Script passes if all tests pass

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

ENDUD-3

get_smart_logpage_fields(dut, logpage_nsid)

Get log page field values

Parameters
  • dut (XML_API) – Device object under test

  • logpage_nsid (int) – NSID to use

Returns

Various fields

Return type

int

OCP_DCSSD_ContConfig_Arbitration.py

This script will run the following tests:
  1. Verify CAP.AMS=1b and CC.AMS=0b

  2. Set number of Urgent queues > 0, restart controller, verify CC.AMS=1b

  3. Set number of Urgent queues = 0, restart controller, verify CC.AMS=0b

Pass/Fail: Script passes if all tests pass

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

NVMe-CFG-1

set_cc_ams(dut, reg_bin_final)

Set CC.AMS value in CC register

Parameters
  • dut (XML_API) – Device object under test

  • reg_bin_final (int) – Integer value to set CC register to

Returns

Return type

None

verify_cc_ams(dut, ams_val)

Verify CC.AMS=0 or 1

Parameters
  • dut (XML_API) – Device object under test

  • ams_val (int) – CC.AMS value to check (0 or 1)

Returns

Return type

None

verify_cc_en_csts_rdy_0(dut, start_step)

Verify CC.EN=0 and CSTS.RDY=0

Parameters
  • dut (XML_API) – Device object under test

  • start_step (int) – Number of the first test step in the function

Returns

cc_reg

Return type

str

verify_cc_en_csts_rdy_1(dut, start_step)

Verify CC.EN=1 and CSTS.RDY=1

Parameters
  • dut (XML_API) – Device object under test

  • start_step (int) – Number of the first test step in the function

Returns

Return type

None

OCP_DCSSD_FormFactor_E1S_PCIeSpeedLaneWidth.py

This script will run the following tests:
  1. Verify PCI Express Link Capabilities register (0Ch) lane width and speed

  2. Verify PCI Express Link Status register (12h) lane width and speed

Pass/Fail: Script passes if all tests pass

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

FFE1S-2

OCP_DCSSD_LogPage_SMARTCloudHealth_Persistence.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h and verify various fields match expected fixed or reserved values

  2. Check Throttling Status and Capacitor Health fields

  3. Check Security Version field against parameterization data

  4. Wait 10 minutes and then power cycle the drive

  5. Verify fixed or reserved values are unchanged

  6. Verify dynamic values are unchanged or have increased

  7. Do controller reset and repeat steps 5-6

  8. Do NSSR and repeat steps 5-6

  9. Do FLR and repeat steps 5-6

Pass/Fail: Script passes if all tests pass

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

SLOG-1/4/10, SMART-12/13/15/16/18-20/22/25-28

check_csts_rdy(dut)

Verify CSTS.RDY=1 after reset or power cycle

Parameters

dut (XML_API) – Device object under test

Returns

Return type

None

compare_field_value(field_name, field_value, field_value_expected)

Display the value of a log page field, and if it’s a static value, verify it’s correct

Parameters
  • field_name (str) – Name of log page field

  • field_value (int) – Value of log page field

  • field_value_expected (int) – Expected value of log page field

Returns

Return type

None

display_value(field_name, field_value, ocp_ver=100)

Display the value of a log page field

Parameters
  • field_name (str) – Name of log page field

  • field_value (int) – Value of log page field

Returns

Return type

None

verify_dynamic_fields(value_orig, value_new, field_name)

Verify dynamic field values either increased or didn’t change

Parameters
  • value_orig (int) – Field’s original value

  • value_new (int) – Field’s new value

  • field_name (str) – Name of log page field

Returns

Return type

None

verify_static_fields(value_orig, value_new, field_name)

Verify static field values didn’t change

Parameters
  • value_orig (int) – Field’s original value

  • value_new (int) – Field’s new value

  • field_name (str) – Name of log page field

Returns

Return type

None

OCP_DCSSD_SMBus_CmdCode32.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 32 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3

OCP_DCSSD_IOCmds_ReadWriteFlushVWC.py

This script will run the following tests:
  1. Verify Read/Write/Flush commands are successful

  2. Verify sequential write I/O performance with FUA=0 and FUA=1 is within 5% of each other

  3. Execute Flush during sequential write I/O and verify both pass

  4. Do sequential write/read I/O with FUA=0 for both; then do sequential write/read I/O with FUA=0 for write and FUA=1 for read, and verify performance is within 5% of each other

  5. If supported, disable volatile write cache, do sequential write I/O, and verify performance is within 5% of the value in step 2

  6. If supported, enable volatile write cache and verify it was successful

Pass/Fail: Script passes if all tests pass

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

NVMe-IO-1/3, GETF-2

calc_difference(value1, value2)
Parameters
  • value1 – Float value

  • value2 – Float value

Returns

Percentage change between values 1 and 2

FORMULA:

( value1 - value2 )

—————————- * 100 = % diff

( value1 + value 2 ) * 2

OCP_DCSSD_FormFactor_M2_PCIeSpeedLaneWidth.py

This script will run the following tests:
  1. Verify PCI Express Link Capabilities register (0Ch) lane width and speed

  2. Verify PCI Express Link Status register (12h) lane width and speed

Pass/Fail: Script passes if all tests pass

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

FFM2-5

OCP_DCSSD_FWSlotInfo_LogPage.py

This script will run the following tests:
  1. Send MI Basic Management Command for Command Code 90 and Verify Firmware Update Flags

  2. Get firmware slot info from LID 3h

  3. Get FRMW from Identify Controller and compare to number of firmware slots supported in adaptation parameters

  4. Get firmware slot info from LID 3h

  5. Download and commit the previous firmware image to the starting firmware slot

  6. Verify FRS field for appropriate slot in LID 3h matches the previous firmware image

  7. Verify current and next active firmware slots in LID 3h

  8. Disable/enable controller

  9. Verify current firmware slot in LID 3h

  10. Repeat steps 4-9 for all supported firmware slots

  11. Download and commit the current firmware image to the current firmware slot

  12. Clear firmware update history (FID C1h) and verify it’s successful

Pass/Fail: Script passes if all tests pass

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

STD-LOG-5, MS-CONF-6

verify_slot(dut, timeout, start_fw_slot, PARAMS, prev_fw_fn)

Verifies that

Parameters
  • dut (XML_API) – Device object under test

  • timeout (int) – timeout value recorded from CAP.TO

  • start_fw_slot (int) – Initial FW slot being tested

  • PARAMS (dict) – Adaptation Parmeters

Returns

numd_flag

Return type

int

OCP_DCSSD_SMBus_CmdCode90.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 90 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3/4

OCP_DCSSD_NS_Support.py

This script will run the following tests:
  1. Issue Identify Controller, verify NN of of id-ctrl is >= 1.

  2. Issue Identify Active NSID List, verify list contains only one entry.

Pass/Fail: Script passes if all tests pass

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

SECTOR-3

OCP_DCSSD_FormFactor_IdlePower.py

This script will run the following tests:
  1. Verify NPSS >= 9

  2. Verify IDLP multiplied by IPS = 5W

  3. Set power state to the current power state in the loop and verify it was set correctly

  4. Collect 30 idle power measurements at 1 second intervals

  5. Compute average idle power of the measurements and verify it’s 5W +/- 5% margin

  6. Repeat steps 2-5 for each operational power state

Pass/Fail: Script passes if all tests pass

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

PWR-1/6

OCP_DCSSD_FormFactor_PowerManagement.py

This script will run the following tests:
  1. Do SetFeaturesSave to set power state to the current power state in the loop

  2. Do GetFeatures and verify saved and current feature value is the power state that was set previously

  3. Power cycle the drive

  4. Do GetFeatures and verify current feature value is the power state that was set previously

  5. Repeat previous steps for each operational power state

Pass/Fail: Script passes if all tests pass

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

PWR-1/2/5

OCP_DCSSD_SMBus_CmdCode96.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 96 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3

OCP_DCSSD_FW_Update.py

This script will run the following tests:
  1. Verify FWUP-7 Partial

  2. Verify FWUP-6, FWUP-4

  3. Verify FWUP-3 Commit Action 0, FWUP-4

  4. Verify FWUP-3 Commit Action 1, FWUP-4

  5. Verify FWUP-3 Commit Action 2

  6. Verify FWUP-3 Commit Action 3, FWUP-4, FWUP-7 Partial

Pass/Fail: Script passes if all tests pass

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

FWUP-3/4/5/6/7, MS-CONF-6

OCP_DCSSD_SMBus_CmdCode248.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 248 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3

check_basic_mgmt_value(output_cmd, field_name, field_name_descr, exp_value)

Verify a field value is correct

Parameters
  • output_cmd (dict) – Data structure to check

  • field_name (str) – Name of parameter in data structure to check

  • field_name_descr (str) – Name of parameter to print in the report

  • exp_value (int) – Expected value of parameter

Returns

Return type

None

OCP_DCSSD_AdminCmds_NSManagement.py

This script will run the following tests:
  1. Verify ability to create maxmimum allowed namespaces on DUT, accounting for NS Granularity

  2. Verify namespace management behavior across all namespaces.

  3. Verify Identify data updates accordingly with unattached namespaces.

Pass/Fail: Script passes if all tests pass

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

NVMe-AD-3, NSM-1/2

OCP_DCSSD_AdminCmds_TimeVerification.py

This script will run the following tests:
  1. NVMe Abort command

  2. NVMe Get Feature

  3. NVMe Set Feature

  4. NVMe Identify

  5. NVMe Get Log

  6. NVMe Namespace Detach/Attach

  7. NVMe Namespace Delete/Create

  8. NVMe Firmware Download

  9. NVMe Firmware Commit

  10. Create/Delete IO Submission/Completion Queue

  11. Verify each command completes within a given time limit

Pass/Fail: Script passes if all tests pass

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

CTO-1

OCP_DCSSD_SetGetFeatures_CPCIE.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h and get PCIe Correctable Error Count field value

  2. Issue Set Features to clear PCIe correctable error count

  3. Verify the command was successful or that an INVALID_FIELD error was returned if the feature isn’t supported (at which point, exit the test)

  4. Do GetLogPage for LID C0h and verify PCIe Correctable Error Count is zero

  5. Power cycle the drive

  6. Do GetLogPage for LID C0h and verify PCIe Correctable Error Count is zero

Pass/Fail: Script passes if all tests pass

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

CPCIE-1-15, GETF-2

OCP_DCSSD_SMBus_CmdCode08.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 8 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3

OCP_DCSSD_LogPage_SMART.py

This script will run the following tests:
  1. Do GetLogPage for LID 2h with different NSIDs

  2. Check various field values

  3. Wait 10 minutes and then power cycle the drive

  4. Repeat steps 1-2

  5. Do controller reset and repeat steps 1-2

  6. Do FLR and repeat steps 1-2

  7. Do NSSR and repeat steps 1-2

Pass/Fail: Script passes if all tests pass

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

STD-LOG-2/3, SLOG-1/4/5/10/11

get_smart_logpage(dut, logpage_nsid)

Issue SMART log page command and return the data structure

Parameters
  • dut (XML_API) – Device object under test

  • logpage_nsid (int) – NSID to use

Returns

output_cmd

Return type

list

smart_logpage_compare_field_values(data_struct1, data_struct2, start_byte, end_byte, tag, method)

Compare SMART log page field value between two data structures

Parameters
  • data_struct1 (list) – First data structure to compare

  • data_struct2 (list) – Second data structure to compare

  • start_byte (int) – Starting byte number in list

  • end_byte (int) – Ending byte number in list

  • tag (str) – Log page field name

  • method (int) – Testing method to use (0 = verify values match, 1 = allow for second value to be less than the first, 2 = allow second value to be greater than the first, 3 = allow second value to be one greater than the first)

Returns

Return type

None

smart_logpage_field_value_is_zero(data_struct, start_byte, end_byte, tag, method)

Check if SMART log page field value is set to zero

Parameters
  • data_struct (list) – Data structure to check

  • start_byte (int) – Starting byte number in list

  • end_byte (int) – Ending byte number in list

  • tag (str) – Log page field name

  • method (int) – Testing method to use (1 = check single byte, 2 = check multiple bytes)

Returns

Return type

None

OCP_DCSSD_SMBus_FW_Update.py

This script will run the following tests:
  1. Verify disabling Firmware Update using Basic Management SMBus Block Write command and verifying using SMBus Read Byte command.

  2. Verify enabling Firmware Update using the SMBus Write Byte protocol

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/3/4/5/6/7

OCP_DCSSD_SecureBoot_UnsecuredDrive.py

This script will run the following tests:
  1. Verify firmware update fails and DUT firmware remains unchanged with a signed firmware image on an unsecure drive.

  2. Verify firmware update passes and DUT firmware changes with an unsigned firmware image on an unsecured drive.

Pass/Fail: Script passes if all tests pass

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

SEC-1/5

check_c2_fw_rev(log_page, expected_value, skip_flag)

Check latest FAHE of log page C2h for expected firmware revision.

Parameters
  • log_page (Dict) – C2h Log Page

  • expected_value (String) – Firmware Revision expected to be found in latest FAHE

  • skip_flag (int) – Flag value

Returns

  • Firmware Activation Count (int)

  • skip_flag (int)

OCP_DCSSD_LogPage_SMARTCloudHealth_UnalignedIO.py

This script will run the following tests:
  1. Power cycle the device

  2. Do GetLogPage for LID C0h and verify Unaligned I/O field is 0

  3. Send 10 4KB sequential write I/O commands starting at LBA 1

  4. Do GetLogPage for LID C0h and verify Unaligned I/O field increased by at least 10

  5. Power cycle the device

  6. Do GetLogPage for LID C0h and verify Unaligned I/O field is 0

Pass/Fail: Script passes if all tests pass

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

SMART-21

verify_logpage_field(dut, lid, field_name, method)

Verify log page field value is correct

Parameters
  • dut (XML_API) – Device object under test

  • lid (int) – LID value

  • field_name (str) – Log page field name

  • method (int) – Whether to check if field value is 100% or not (0 = verify value is not 0, 1 = verify value is 0)

Returns

Return type

None

OCP_DCSSD_LogPage_SMARTCloudHealth_Endianness.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h

  2. Check that byte 0 of Security Version Number and Log Page Version fields is correct

  3. Verify Log Page GUID is correct

Pass/Fail: Script passes if all tests pass

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

SLOG-3, SMART-22/27/28

OCP_DCSSD_FWActHistory.py

This script will run the following tests:
  1. SMBUS Basic management command with Command Code 90, length 6

  2. Read and write from/to registers

  3. Get Log Page commands with LIDs 02h, 03h, and C2h

  4. Set-Features with FID C1h

  5. Firmware Commit Commands with actions 02h, and 03h

  6. Firmware Download Command

Pass/Fail: Script passes if all tests pass

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

FWUP-1, FWHST-LOG-1, FWHST-LOG-3, FWHST-LOG-4, MS-CONF-6

commit_and_check(dut, timeout)

Send FW Commit Command and check register values :param dut: Device object under test :type dut: XML_API :param timeout: timeout value recorded from CAP.TO :type timeout: int

Returns

Return type

None

OCP_DCSSD_LogPage_SMARTCloudHealth_SecVerNumber.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h

  2. Check Security Version field against parameterization data

Pass/Fail: Script passes if all tests pass

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

SMART-22

OCP_DCSSD_SMBus_CmdCode242.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 242 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3/5

check_basic_mgmt_value(output_cmd, field_name, field_name_descr, exp_value)

Verify a field value is correct

Parameters
  • output_cmd (dict) – Data structure to check

  • field_name (str) – Name of parameter in data structure to check

  • field_name_descr (str) – Name of parameter to print in the report

  • exp_value (int) – Expected value of parameter

Returns

Return type

None

OCP_DCSSD_Reset_NSSR.py

This script will run the following tests:
  1. Execute NSSR

Pass/Fail: Script passes if NSSR is successful

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

NVMeR-1

CompareRegisters(reg_name, reg1, reg2, flag1, flag2, nvme_ver_cap=140)

Compare register values from before and after a reset

Parameters
  • reg_name (str) – Register name

  • reg1 (int) – First register value

  • reg2 (int) – Second register value

  • flag1 (int) – Flag value corresponding to the first register value

  • flag2 (int) – Flag value corresponding to the second register value

  • nvme_ver_cap (int) – NVMe version supported by the controller for use with CAP register (default is v1.4.0)

Returns

Return type

None

GetRegisterValue(dut, reg_name, pci, output_cmd, regex)

Get register value from the register dump that occurs during NSSR

Parameters
  • dut (XML_API) – Device object under test

  • reg_name (str) – Register name

  • pci (str) – PCI ID of DUT

  • output_cmd (str) – Output of NSSR command

  • regex (str) – Regular expression to extract register value from output_cmd

Returns

reg_val, flag

Return type

tuple

GetRegisterValueBaseline(dut, reg_name, reg_offset, num_bits)

Get register value and return it along with a pass/fail value

Parameters
  • dut (XML_API) – Device object under test

  • reg_name (str) – Register name

  • reg_offset (int) – Register offset

  • num_bits (int) – Register size (32 or 64)

Returns

reg_val, flag

Return type

list

VerifyRegisterIsZero(reg_name, reg1, flag1)

Verify register value is set to zero

Parameters
  • reg_name (str) – Register name

  • reg1 (int) – Register value

  • flag1 (int) – Flag value corresponding to the register value

Returns

Return type

None

OCP_DCSSD_SetGetFeatures_ClearFW_UpdateHist.py

This script will run the following tests:
  1. Get Log Page commands with LIDs 03h and C2h

  2. Set-Features with FID C1h

  3. Firmware Commit Commands with action 03h

  4. Power cycles

Pass/Fail: Script passes if all tests pass

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

OCP CFUH-1 to OCP CFUH-15, GETF-2

OCP_DCSSD_AdminCmds_NSBasic.py

This script will run the following tests:
  1. If from Factory:
    1. Verify DUT namespace data matches one to one with vendor provided ADP data file.

    2. Verify LBAF0 is in use.

    3. Verify DUT only has one namespace created.

  2. If not from Factory:
    1. Verify static fields of DUT namespace data match one to one with vendor provided ADP data file.

Pass/Fail: Script passes if all tests pass

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

NSM-2

OCP_DCSSD_AdminCmds_ExtTimeVerification.py

This script will run the following tests:
  1. Format NVM command with various SES values

  2. TCG Revert command

  3. TCG RevertSP command

  4. TCG GenKey command

  5. Verify each command completes within a given time limit

NOTE: Modify “tcg_password” variable if the DUT uses a password other than ‘12345678’

Pass/Fail: Script passes if all tests pass

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

CTO-2

check_cmd_status(output_cmd)

Check command output and print the success or error string

Parameters

output_cmd (list) – Command output

Returns

cmd_flag – 0 = command failed, 1 = commmand passed

Return type

int

OCP_DCSSD_PCIe_TLPCompletionTimeout.py

This script will run the following tests:
  1. The TLP completion timeout is programmable to different supportable ranges by programming the timeout to a different subset range.

  2. Disable the TLP completion timeout and verify that it was successful.

Pass/Fail: Script passes if all tests pass

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

PCI-2/3/4

OCP_DCSSD_LogPage_ErrorInfo.py

This script will run the following tests:
  1. Get ELPE field

  2. Do GetLogPage for LID 1h to get error count for each entry

  3. Reset controller

  4. Do IdentifyController

  5. Do GetLogPage for LID 1h to get error count for each entry

Pass/Fail: Script passes if all tests pass

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

STD-LOG-1

OCP_DCSSD_LogPage_SMARTCloudHealth_NUSE.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h and Identify Namespace and verify NUSE field values are identical if only a single NS exists; otherwise report the values if multiple NS exist

  2. Delete all NSIDs and create a single NS

  3. Do GetLogPage for LID C0h and Identify Namespace and verify NUSE field values are identical

  4. Attach NS and perform 128KB sequential writes for 10 minutes

  5. Do GetLogPage for LID C0h and Identify Namespace and verify NUSE field values are identical and > 0

Pass/Fail: Script passes if all tests pass

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

SMART-23

get_nuse_values(dut, step_num)

Get NUSE value from LID C0h and Identify Namespace

Parameters
  • dut (XML_API) – Device object under test

  • step_num (int) – Step number from testplan for doing GetLogPage for LID C0h

Returns

  • lid_flag (int) – 0 = Get Log Page failed, 1 = Get Log Page passed

  • ident_flag (int) – 0 = Identify Namespace failed, 1 = Identify Namespace passed

  • field_value1 (int) – Field value

  • field_value2 (int) – NUSE value

OCP_DCSSD_PCIe_BootRequirements.py

This script will run the following tests:
  1. Read “Expansion ROM Base Address” register and verify that “Option ROM” is not included.

Pass/Fail: Script passes if all tests pass

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

BOOT-2

OCP_DCSSD_AdminCmds_NSAttach.py

This script will run the following tests:
  1. Verify Identify data appropriately updates based on current state of namespaces.

  2. Verify that when attaching an namespace to a controller that it shifts to active.

  3. Verify that when deleting an attached namespace from an controller that it shifts to inactive.

  4. Verify maximum allowed namespaces can be created, attached, and appropriate Identify data reflects changes.

  5. Based on support, see if EUI64 and NGUID differs from stored namespace data of vendor parameters file.

Pass/Fail: Script passes if all tests pass

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

NSM-2, NVMe-AD-4, NUSE-1

OCP_Library.py

OCP_DCSSD_ContConfig_MDTS.py

This script will run the following tests:
  1. Verify MDTS >= 256KB

  2. Verify NPWG and NOWS <= MDTS

  3. Do Write commands with transfer size < MDTS, = MDTS and > MDTS

Pass/Fail: Script passes if all tests pass

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

NVMe-CFG-2

OCP_DCSSD_LogPage_SMART_UnsafeShutdowns.py

This script will run the following tests:
  1. Do GetLogPage for LID 2h and get Unsafe Shutdowns field value

  2. Surprise power cycle the drive 10 times

  3. Do GetLogPage for LID 2h and get Unsafe Shutdowns field value and verify it increased by 1

Pass/Fail: Script passes if all tests pass

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

STD-LOG-2, SLOG-5

OCP_DCSSD_Reliability_ShutdownNotificationStatus.py

This script will run the following tests:
  1. Do Identify Controller and verify it’s successful

  2. Check RTD3 Entry Latency field value

  3. Execute normal shutdown process and verify CC.SHN and CSTS.SHST values

  4. Execute abrupt shutdown process and verify CC.SHN and CSTS.SHST values

Pass/Fail: Script passes if all tests pass

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

TTR-5, TTR-6

OCP_DCSSD_FWActHistory_LogPage_Format.py

This script will run the following tests:
  1. SMBUS Basic management command with Command Code 90, length 6

  2. Read and write from/to registers

  3. Get Log Page commands with LIDs 03h, and C2h

  4. Set-Features with FID C1h

  5. Firmware Commit Commands with actions 02h, and 03h

  6. Firmware Download Command

Pass/Fail: Script passes if all tests pass

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

FAHL-1, FAHL-2, FAHL-3, FAHL-4, FAHL-5, FAHL-6, FAHL-7, MS-CONF-6

OCP_DCSSD_PCIe_LowPowerModes.py

This script will run the following tests:
  1. If Active State Power Management (ASPM) is supported, the default firmware state shall be disabled. Verify this by reading ASPMS and ASPMC.

Pass/Fail: Script passes if all tests pass

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

LWPR-1

OCP_DCSSD_SetGetFeatures_IEEE1667.py

This script will run the following tests:
  1. Check default state of IEEE1667 from Adaptation Parameter File

  2. Disable/Enable IEEE1667 Silo, check from get feature that current state and saved state match

  3. Check again after power cycle

  4. Default state should match

  5. Reverse state of IEEE1667 (Disable/Enable), check from get feature that current state and saved state match

  6. Check again after power cycle

  7. Default state should match

Pass/Fail: Script passes if all tests pass

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

S1667-1/2/3/4/5/6/7/8/9/10/11/12/13/14/15, GETF-1/2

OCP_DCSSD_ContConfig_ModelNumber.py

This script will run the following tests:
  1. Obtain model number from Identify Controller and verify it contains only ASCII characters

Pass/Fail: Script passes if all model number characters are ASCII

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

NVMe-CFG-4, LABL-11

OCP_DCSSD_SMBus_DataTTRVerify.py

This script will run the following tests:
  1. Get timestamp

  2. Do a power cycle

  3. Poll MI Basic subsystem management data structure command code 0 until it’s successful

  4. Get timestamp

  5. Verify MI Basic subsystem management data structure command code 0 info is correct

  6. Verify difference between timestamps is within CAP.TO

  7. Repeat steps 1-6 using controller reset

  8. Repeat steps 1-6 using NSSR

  9. Repeat steps 1-6 using FLR

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3/4/7

basic_mgmt_status_during_reset(dut, mi_dut, step_num, mi_ver, cap_to_secs)

Do Basic Management Status command during a reset and verify it finished within CAP.TO

Parameters
  • dut (XML_API) – Device object under test

  • mi_dut (XML_API) – Device MI object under test

  • step_num (int) – Step number of the start timestamp step

  • mi_ver (int) – MI version supported by the controller

  • cap_to_secs (int) – CAP.TO value in seconds

Returns

Return type

None

verify_basic_mgmt_status_output(dut, mi_output_cmd, mi_ver, power_cycle_flag)

Do GetFeatures with SEL value and verify returned info is correct

Parameters
  • dut (XML_API) – Device object under test

  • mi_output_cmd (dict) – Output of MI command

  • mi_ver (int) – MI version supported by the controller

  • power_cycle_flag (int) – 1 = power cycle was executed, 0 = other reset was executed

Returns

Return type

None

OCP_DCSSD_LogPage_SMARTCloudHealth_EnduranceEst.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h and get Endurance Estimate field value

  2. If endurance groups are suppoted, do GetLogPage for LID 9h and get Endurance Estimate field value

  3. Verify both values are the same

Pass/Fail: Script passes if all tests pass

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

SMART-25

OCP_DCSSD_SMBus_CmdCode50.py

This script will run the following tests:
  1. Get MI Basic subsystem management data structure command code 50 and verify it returns correct info

Pass/Fail: Script passes if all info is correct

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

SMBUS-1/2/3

OCP_DCSSD_FWActHistory_EntryFormat.py

This script will run the following tests:
  1. Send MI Basic Management Command for Command Code 90 and Verify Firmware Update Flags

  2. Issue Identify Controller and check Firmware Revision

  3. Retrieve Current Firmware Slot with Get Log using LID 03h

  4. Clear FW Update History

  5. Do SMART Health Log (Controller Scope) and Record Power Cycles

  6. Firmware Download/Commit

  7. Record timestamp

  8. Do Get Log with LID C2h, verify static fields

  9. Verify previously recorded fields match fields in LID C2h

  10. Clear FW Update History

  11. Firmware Download/Commit

  12. Do Get Log with LID C2h, verify Firmware Activation Count has incremented by 1

  13. Clear FW Update History

Pass/Fail: Script passes if all tests pass

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

FAHE-1/2/3/4/5/6/7/8/9/10/11/12/13, MS-CONF-6

OCP_DCSSD_ContConfig_Queues.py

This script will run the following tests:
  1. Verify SQES and CQES values

  2. Verify CC.IOSQES and CC.IOCQES values

  3. Verify CAP.MQES value

  4. Create 64 queues with a queue depth of 1024

Pass/Fail: Script passes if all tests pass

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

NVMe-CFG-5, NVMe-CFG-6

OCP_DCSSD_LogPage_SMARTCloudHealth_UnitsRW.py

This script will run the following tests:
  1. Do GetLogPage for LID C0h and get physical media units written and read values

  2. Perform 128KB sequential writes for 5 minutes

  3. Perform 128KB sequential reads for 5 minutes

  4. Do GetLogPage for LID C0h and verify physical media units written and read values increased

Pass/Fail: Script passes if all tests pass

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

SMART-1/2

get_logpage_fields(dut, lid, field_name1, field_name2, print_msgs)

Verify log page field value is correct

Parameters
  • dut (XML_API) – Device object under test

  • lid (int) – LID value

  • field_name1 (str) – First log page field name

  • field_name2 (str) – Second log page field name

  • print_msgs (int) – 1 = print messages, 0 = don’t print messages

Returns

  • lid_flag (int) – 1 = pass, 0 = fail

  • logpage_field1 (int) – Physical Media Units Written value

  • logpage_field2 (int) – Physical Media Units Read value

OCP_DCSSD_FWActHistory_EntryFormat_Factory.py

This script will run the following tests:
  1. Get Log Page Command with LID = C2h

  2. Parse all 20 FW Activation History Entries

  3. Verify every entry is cleared to 0

Pass/Fail: Script passes if all Firmware Activation History Entry are cleared to 0x0

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

FAHE-4

OCP_DCSSD_FWActHistory_Factory.py

This script will run the following tests:
  1. Get Log Page Command with LID = C2h and record Valid Firmware Activation History Entries field

  2. Verify value is 0 if factory state flag is set

Pass/Fail: Script passes if the Valid Firmware Activation History Entries field is cleared to 0x0

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

FWHST-LOG2