OCP_2_0_Group_6

DSSD_20_Idle_Power_Verification_Test_Case.py

This script will run the following tests:
  1. Loop over power states from 0 to NPSS

  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

DSSD_20_Maximum_Average_Power_Verification_Test_Case.py

This script will run the following tests:
  1. Precondition the namespace twice with 128KiB sequential writes and 4KiB Random Writes

  2. Loop over power states from 0 to NPSS

  3. Loop over the I/O Profile

  4. Collect sample power consumption at a 2ms sampling rate

  5. Compute average maximum power consumption

  6. Verify it’s <= Maximum Power for the power state for any continuous 1s (250000 samples)

  7. Repeat after step 3 with each I/O Profile

  8. Repeat after step 2 with each power state

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 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_20_Peak_Power_Verification_Test_Case.py

This script will run the following tests:
  1. Precondition the namespace twice with 128KiB sequential writes and 4KiB Random Writes

  2. Loop over power states from 0 to NPSS

  3. Loop over the I/O Profile

  4. Collect sample power consumption at a 4us sampling rate

  5. Add every 500th (2ms sampling rate) peak power sample to create a running maximum average power value.

  6. Collect the first 500 samples at 2ms to compute the first Maximum Average Power value

7. Verify the maximum average power value with 25W, and then verify that the current peak power sample with the running maximum average power measurement. 8. Compute the maximum average power consumption for any continuous 25 sample/100us window 9. Verify the maximum average power value with 25W, and then verify the peak power samples with the computed maximum average power value. 10. Repeat after step 3 with each I/O Profile 11. Repeat after step 2 with each power state

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.0 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

DSSD_20_Power_Management_Feature_Test_Case.py

This script will run the following tests:
  1. Do SetFeaturesSaves with FID=2h 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. Repeat previous steps for each operational power state

  5. Do SetFeaturesSaves with FID=7h to set DSSD power state to the current power state in the loop

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

  7. Power cycle the drive

  8. 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/5, DSSDPSS-1/2/3, SDSSDPS-1 to SDSSDPS-15, DSSDPSG-1/2, GDSSDPS-1/2

get_current_ps(dut)

Gets the current power state

Parameters:

dut (XML_API) – Device object under test

Returns:

ps – Current Power State

Return type:

int

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