OCP_2_6_Group_6

DSSD_26_Idle_Power_Verification_Test_Case.py

The objective of this test case is to verify the following:

  1. That IDLP field in each power state descriptor returned in the Identify Controller data contains either 0, if not reported, or a nonzero value that when multiplied by the value in the Idle Power Scale field lists 5W as the IDLE power for the power state.

  2. That for each supported power state with a non-zero IDLP value, when the device is in the idling operational state as defined in this document, the average power measured, as defined by NVMe for Idle Power, is <= 5W+5%.

Pass/Fail: Script passes if all tests pass

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

PWR-1/6/9

DSSD_26_Maximum_Average_Power_Verification_Test_Case.py

The objective of this test case is to verify the following:

  1. for each power state supported by the device, and regardless of the workload being run, the power consumption measured over the test interval defined in Adaptation data never exceeds the power descriptor MP value for any continuous 1s window.

Pass/Fail: Script passes if all tests pass

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

PCM-1, PWR-1/3, FFM2-14

execute_io_profile(dut, test_type, io_profile, io_runtime=-1, io_pattern=1)
Executes each of the IO Profiles listed in Table 4
  1. Sequential Read (MiB/s) (128kiB, QD = 128)

  2. Sequential Write (MiB/s) (128kiB, QD = 128)

  3. Random Read (KIOPS) (4kiB, QD = 128)

  4. Random Writes (KIOPS) (4kiB, QD = 128)

  5. Random 70R:30W mix (KIOPS) (4kiB, QD = 128)

Parameters:
  • dut (XML_API) – Device object under test

  • test_type (str) – Either ‘Sequential’ | ‘Random’

  • io_profile (str) – IO Profile to be executed

  • io_runtime (int) – Time in seconds for IO to execute

  • io_pattern (int) – Pattern for io to be executed

Return type:

dict

DSSD_26_Peak_Power_Verification_Test_Case.py

The objective of this test case is to verify the following:

a.That no measured power sample ever exceeds
  1. 150% of the average maximum power measured for the power state If maximum power measured is <= 25W .

  2. 37.5W If maximum power measured is >25W and <=29W.

  3. 130% of the average maximum power measured for the power state If maximum power measured is >29W.

b.That for each power state supported by the device, and regardless of the workload being run,

the power samples measured over the test interval defined in Adaptation data never exceeds the average maximum power for any continuous 100us window.

Pass/Fail: Script passes if all tests pass

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

PCM-2/3, PWR-1/3, FFM2-14

execute_io_profile(dut, test_type, io_profile, io_runtime=0, io_pattern=1)
Executes each of the IO Profiles listed in Table 4
  1. Sequential Read (MiB/s) (128kiB, QD = 128)

  2. Sequential Write (MiB/s) (128kiB, QD = 128)

  3. Random Read (KIOPS) (4kiB, QD = 128)

  4. Random Writes (KIOPS) (4kiB, QD = 128)

  5. Random 70R:30W mix (KIOPS) (4kiB, QD = 128)

Parameters:
  • dut (XML_API) – Device object under test

  • test_type (str) – Either ‘Sequential’ | ‘Random’

  • io_profile (str) – IO Profile to be executed

  • io_runtime (int) – Time in seconds for IO to execute (Default 0 = Unlimited)

  • io_pattern (int) – Pattern for io to be executed

Return type:

dict

postcondition(dut, ps)

Sets the current power state back to the default value

Parameters:
  • dut (XML_API) – Device object under test

  • ps (int) – Power State to set device to

Return type:

None

DSSD_26_Power_Management_Feature_Test_Case.py

The objective of this test case are to verify the following:

a.Verify that the device uses a unique Maximum Power (MP) value in each supported NVMe Power State Descriptor.

b.That the Get/Set Features 02h and C7h commands are supported for the Power Management Feature.

c.That when a new power state is set using the set features command with the SV bit set, the new power state setting

is retained through power cycles and is reported as the current value following a power cycle.

d.That all valid power states reported in the power state descriptor table are supported by the device by

setting the power state via the set features command and verifying the power consumption changes to reflect the MP for the new power state.

e.That when an NVMe power state is set using set features 02h, the power state value is returned when using

get features 02h, but the corresponding DSSD power state is reported when using get features C7.

f.That when a DSSD power state is set using set features C7h, the DSSD power state is reported using get features C7,

but the corresponding NVMe power state is reported when using get features 02h.

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

PWR-1/5/8, DSSDPSS-1/2/3, SDSSDPS-1 to SDSSDPS-15, DSSDPSG-1/2, GDSSDPS-1/2, OCP 2.5 Section 4.8.11

get_dssd_power_state(result, nvme_power_state)

Return the DSSD Power State corresponding to the given NVMe Power State.

Multiple DSSD Power States may reference a single NVMe Power State. The purpose of this function is to return the DSSD Power State a drive should report upon the selection of an NVMe Power State as defined by DSSDPSG-2:

OCP 2.5 Requirement DSSDPSG-2 If a DSSD Power State (Feature Identifier C7h) Get Feature command is executed and the current NVMe Power State was not selected because of a DSSD Power State Set Feature command, the device shall report the lowest power DSSD Power State whose number is greater than or equal to the Maximum Power in watts of the current NVMe Power State

get_maximum_power_watts(result, nvme_power_state)

Calculate the Maximum Power, in watts, of the given NVMe Power State

get_nvme_power_state(result, dssd_power_state)

Return the NVMe Power State corresponding to the given DSSD Power State

postcondition(dut, ps)

Sets the current power state back to the default value

Parameters:
  • dut (XML_API) – Device object under test

  • ps (int) – Power State to set device to

Return type:

None

DSSD_26_Test_NSID_Values_In_Set_Features_C7h_Test_Case.py

This test case is intended to verify the following:

  1. That when using NSID = 0 in the Set Features command, the command completes successfully.

  2. That when using NSID = FFFFFFFFh in the Set Features command, the command fails with Invalid Field in Command status.

  3. That when using NSID = NN+1 (invalid NSID) in the Set Features command, the command fails with Invalid Namespace or Format status.

  4. That when using NSID = any inactive NSID in the Set Features command, the command fails with Invalid Field in Command status.

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

SDSSDPS-6