# US 12,222,844 B2 · Systems and methods for testing virtual functions of a device under test

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,222,844 B2
- Document ID: US12222844B2
- Status: Granted
- Kind: B2
- Application number: 18/113,934
- Filed: 2023-02-24
- Published: 2024-05-30
- Granted: 2025-02-11
- Earliest claimed: 2022-11-30
- Assignees: Advantest Corporation
- Applicants: Advantest Corporation
- Inventors: Srdjan Malisic; Chi Yuan
- Web page: https://patentgrep.com/patent/US12222844B2

## CPC

- G06F 11/3668: Testing of software
- G01R 31/287: {Procedures; Software aspects}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 11/2205: {using arrangements specific to the hardware being tested}
- G06F 11/36: Prevention of errors by analysis, debugging or testing of software
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G01R: MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES (indicating correct tuning of resonant circuits H03J3/12)

## Abstract

Embodiments of the present invention can provide an extended NVMe driver that supports exercising virtual functions (and related physical functions) of a DUT without using a VM or hypervisor. In this way, the amount of memory and processing resources used for testing NVMe SSDs can be significantly reduced, and a large number of DUTs (e.g., up to 16 DUTs) can be tested in parallel independently. In other words, each DUT is tested in isolation, as if is the only device being tested, and there are no race conditions or competition for resources between workloads during testing.

## Claims

### Claim 1

A tester system for testing a plurality of DUT virtual functions of a plurality of DUTs, the tester system comprising:
a host computer system comprising a memory, wherein said memory comprises a plurality of test program processes operable to execute concurrently and wherein a respective test program process of said plurality of test program processes is associated with each DUT of said plurality of DUTs and wherein further, each test program process of said plurality of test program processes comprises a plurality of threads for generating workloads for testing DUT virtual functions of an associated DUT; and
a plurality of driver instances instantiated within said memory, each driver of said plurality of driver instances operable to enable testing of an associated DUT virtual function on said plurality of DUTs, and wherein further each driver instance comprises a plurality of data structures, a respective data structure for each DUT of said plurality of DUTs, to enable testing of respective DUT virtual functions on said plurality of DUTs and wherein further said plurality of driver instances are operable to simulate a virtualization environment for said plurality of test program processes on said host computer system to test DUT virtual functions of said plurality of DUTs separately, independently and concurrently wherein any given test program process of said plurality of test program processes appears to be a sole user operating on said host computer system at any given time.

### Claim 2 (depends on 1)

A tester system as described in claim 1 wherein each data structure of each driver of said plurality of driver instances operates to:
locate and enable its associated DUT virtual function on an associated DUT; and
present access to said associated DUT virtual function on said associated DUT to the host computer system and is used by a test program process of said host computer system to access and test said associated DUT virtual function on said associated DUT.

### Claim 3 (depends on 2)

A tester system as described in claim 2 wherein, for a given test program process, the associated DUT, and a given DUT virtual function of said associated DUT, workloads of said given test program process access and test said given DUT virtual function through a driver, of said plurality of driver instances, associated with said given DUT virtual function.

### Claim 4 (depends on 1)

A tester system as described in claim 1 wherein each driver of said plurality of driver instances of said host computer system further comprises:
a controller handler;
an interrupt handler;
a first queue for sending commands to a particular virtual function of a particular DUT;
a second queue for receiving responses back from said particular virtual function of said particular DUT; and
computer resources for implementing said first queue and said second queue.

### Claim 5 (depends on 1)

A tester system as described in claim 1 wherein said plurality of DUTs are solid state drives (SSDs).

### Claim 6 (depends on 1)

A tester system as described in claim 1 wherein said plurality of driver instances comprise NVMe device drivers.

### Claim 7 (depends on 1)

A tester system as described in claim 1 wherein said plurality of drivers instances of said host computer system simulate functionality of a hypervisor.

### Claim 8 (depends on 7)

A tester system as described in claim 7 wherein said host computer system is free of virtual machine software.

### Claim 9

A tester system for testing a plurality of virtual functions of a first and a second DUT, the tester system comprising:
a host computer system comprising a memory, wherein said memory comprises a first and a second test program process operable to execute concurrently and wherein said first test program process is operable to test virtual functions of said first DUT and wherein said second test program process operable to test virtual functions of said second DUT and wherein further said first test program process comprises a first plurality of threads for generating workloads to test said virtual functions of said first DUT and wherein said second test program process comprises a second plurality of threads for generating workloads to test said virtual functions of said second DUT; and
a plurality of drivers instantiated within said memory, each driver of said plurality of drivers operable to enable testing of an associated virtual function on said first and second DUTs, and wherein further each driver comprises a first data structure for testing said associated virtual function on said first DUT and a second data structure for testing said associated DUT virtual function on said second DUT and wherein said plurality of drivers are operable to simulate a virtualization environment on said host computer system for said first and second test program processes to test virtual functions of said first and second DUTs separately, independently and concurrently wherein each test program process of said first and second test program processes appears to be a sole test program process operating on said host computer system.

### Claim 10 (depends on 9)

A tester system as described in claim 9 wherein said first data structure of each driver of said plurality of drivers operates to:
locate and enable an associated virtual function on said first DUT; and
present access to said associated virtual function on said first DUT to the host computer system, wherein said first test program process of said host computer system is operable to access and test said associated virtual function on said first DUT.

### Claim 11 (depends on 10)

A tester system as described in claim 10 wherein said second data structure of each driver of said plurality of drivers operates to:
locate and enable an associated virtual function on said second DUT; and
present access to said associated virtual function on said second DUT to the host computer system and is used by said second test program process of said host computer system to access and test said associated virtual function on said second DUT.

### Claim 12 (depends on 9)

A tester system as described in claim 9 wherein each driver of said plurality of drivers of said host computer system further comprises:
a controller handler;
an interrupt handler;
a first queue for sending commands to a particular virtual function of a particular DUT;
a second queue for receiving responses back from said particular virtual function of said particular DUT; and
computer resources for implementing said first and second queues.

### Claim 13 (depends on 9)

A tester system as described in claim 9 wherein said first and second DUTs comprise solid state drives (SSDs).

### Claim 14 (depends on 9)

A tester system as described in claim 9 wherein said plurality of drivers comprise NVMe device drivers.

### Claim 15 (depends on 9)

A tester system as described in claim 9 wherein said plurality of drivers of said host computer system simulate functionality of a hypervisor.

### Claim 16 (depends on 15)

A tester system as described in claim 15 wherein said host computer system is free of virtual machine software.

### Claim 17

A method of testing a plurality of DUT virtual functions of a plurality of DUTs using a tester system, the method comprising:
on a host computer system comprising a memory, concurrently executing a plurality of test program processes wherein a respective test program process of said plurality of test program processes is associated with each DUT of said plurality of DUTs and wherein further, each test program process of said plurality of test program processes comprises a plurality of threads for generating workloads for testing DUT virtual functions of an associated DUT; and
simulating a virtualization environment for said plurality of test program processes on said host computer system using a plurality of drivers instantiated within said memory, wherein said plurality of DUT virtual functions are operable to be tested on said plurality of DUTs separately, independently and concurrently within said virtualization environment and wherein any given test program process of said plurality of test program processes appears to be a sole user operating on said host computer system at any given time; and
wherein each driver of said plurality of drivers is operable to enable testing of an associated DUT virtual function on said plurality of DUTs, and wherein further each driver of said plurality of drivers comprises a plurality of data structures, a respective data structure for each DUT of said plurality of DUTs, to enable testing of said respective DUT virtual function on said plurality of DUTs.

### Claim 18 (depends on 17)

A method of testing as described in claim 17 further comprising using each data structure of each driver of said plurality of drivers for:
locating and enabling its associated DUT virtual function on an associated DUT; and
presenting access to said a given DUT virtual function on said associated DUT to the host computer system, wherein a test program process of said host computer system to operable to access and test said associated DUT virtual function on said associated DUT.

### Claim 19 (depends on 18)

A method of testing as described in claim 18 wherein, for a given test program process and an associated DUT and a given DUT virtual function of said associated DUT, workloads of said given test program process access and test said given DUT virtual function through a driver, of said plurality of drivers, associated with said given DUT virtual function.

### Claim 20 (depends on 17)

A method of testing as described in claim 17 wherein each driver of said plurality of drivers of said host computer system further comprises:
a controller handler;
an interrupt handler;
a first queue for sending commands to a particular virtual function of a particular DUT;
a second queue for receiving responses back from said particular virtual function of said particular DUT; and
computer resources for implementing said first queue and said second queue.

### Claim 21 (depends on 17)

A method of testing as described in claim 17 wherein said plurality of drivers of said host computer system simulate functionality of a hypervisor.
