IP Library Granted Patent US 10,114,739
Granted Patent B2
US 10,114,739 · App. 15/276,370 · Granted Oct 30, 2018

Real time analysis and control for a multiprocessor system

Inventors: Geoffrey N. Ellis (Santa Cruz, CA); John Mark Beardslee (Menlo Park, CA); Michael B. Doerr (Dripping Springs, TX); Ivan Aguayo (Austin, TX); Brian A. Dalio (Keller, TX)
Assignee: Coherent Logix, Incorporated
G06F11/3688G06F11/2242G06F11/3664G06F13/28G06F17/50G06F9/45504G06F17/5054
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,114,739
App. No.
15/276,370
Granted
Oct 30, 2018
Kind
B2
Abstract

System and method for testing a DUT that includes a multiprocessor array (MPA) executing application software at operational speed. The application software may be configured for deployment on first hardware resources of the MPA and may be analyzed. Testing code for configuring hardware resources on the MPA to duplicate data generated in the application software for testing purposes may be created. The application software may be deployed on the first hardware resources. Input data may be provided to stimulate the DUT. The testing code may be executed to provide at least a subset of first data to a pin at an edge of the MPA for analyzing the DUT using a hardware resource of the MPA not used in executing the application software. The first data may be generated in response to a send statement executed by the application software based on the input data.

Claims (61)

1. A method, comprising:

analyzing application software;

developing test software based, at least in part, on results of analyzing the application software;

deploying the application software on a first hardware resource of a multi-processor array (MPA), wherein the MPA includes a plurality of processing elements, a plurality of memories, and an interconnection network communicatively coupling the plurality of processing elements to the plurality of memories, wherein the first hardware resource includes at least a first subset of the plurality of processing elements;

deploying the test software on a second hardware resource of the MPA, wherein the second hardware resource includes at least a second subset of the plurality of processing elements different than the first subset of the plurality of processing elements;

executing the application software on the first hardware resource; and

executing the test software on the second hardware resource, wherein executing the test software includes:

polling, by a first processing element included in the second hardware resource, one or more registers associated with a direct memory access (DMA) transfer in the first hardware resource resulting from executing one or more program commands included in the application software; and

sending, by the first processing element, auxiliary data retrieved from the one or more registers to a storage location for analysis, wherein an amount of auxiliary data is less than an amount of data generated by the application software; and

rebuilding the application software based on the auxiliary data.

2. The method of claim 1 , wherein a priority of the first processing element polling is less than a priority associated with performing the DMA in the first hardware resource.

3. The method of claim 1 , further comprising modifying the application software to include at least one probe command, and wherein executing the application software on the first hardware resource includes generating probe data in response to executing the at least one probe command.

4. The method of claim 3 , wherein executing the application software on the first hardware resource includes:

streaming, by a first DMA engine of a plurality of DMA engines, data resulting from executing the application software and the probe data to a particular memory of the plurality of memories; and

streaming, by a second DMA engine of the plurality of DMA engines, the data resulting from executing the application software to a target location in the plurality of memories.

5. The method of claim 4 , wherein executing the test software on the second hardware resource includes streaming, by a third DMA engine of the plurality of DMA engines, to the storage location for analysis.

6. The method of claim 5 , further comprising coordinating operation of the first, second, and third DMA engines.

7. A non-transitory computer-accessible storage medium having program instructions stored therein that, in response to execution by a multi-processor system, causes the multi-processor system to perform operation including:

analyzing application software;

developing test software based, at least in part, on results of analyzing the application software;

deploying the application software on a first hardware resource of a multi-processor array (MPA), wherein the MPA includes a plurality of processing elements, a plurality of memories, and an interconnection network communicatively coupling the plurality of processing elements to the plurality of memories, wherein the first hardware resource includes at least a first subset of the plurality of processing elements;

deploying the test software on a second hardware resource of the MPA, wherein the second hardware resource includes at least a second subset of the plurality of processing elements different than the first subset of the plurality of processing elements;

executing the application software on the first hardware resource; and

executing the test software on the second hardware resource, wherein executing the test software includes:

polling, by a first processing element included in the second hardware resource, one or more registers associated with a direct memory access (DMA) transfer in the first hardware resource resulting from executing one or more program commands included in the application software; and

sending, by the first processing element, auxiliary data retrieved from the one or more registers to a storage location for analysis, wherein an amount of auxiliary data is less than an amount of data generated by the application software; and

rebuilding the application software based on the auxiliary data.

8. The non-transitory computer-accessible storage medium of claim 7 , wherein a priority of the first processing element polling is less than a priority associated with performing the DMA in the first hardware resource.

9. The non-transitory computer-accessible storage medium of claim 7 , wherein the operations further include modifying the application software to include at least one probe command, and wherein executing the application software on the first hardware resource includes generating probe data in response to executing the at least one probe command.

10. The non-transitory computer-accessible storage medium of claim 9 , wherein executing the application software on the first hardware resource includes:

streaming, by a first DMA engine of a plurality of DMA engines, data resulting from executing the application software and the probe data to a particular memory of the plurality of memories; and

streaming, by a second DMA engine of the plurality of DMA engines, the data resulting from executing the application software to a target location in the plurality of memories.

11. The non-transitory computer-accessible storage medium of claim 10 , wherein executing the test software on the second hardware resource includes streaming, by a third DMA engine of the plurality of DMA engines, to the storage location for analysis.

12. The non-transitory computer-accessible storage medium of claim 11 , wherein the operations further include coordinating operation of the first, second, and third DMA engines.

13. The non-transitory computer-accessible storage medium of claim 11 , wherein the operations further include:

streaming, by the first DMA engine, the data resulting from executing the application software via a first one or more routes included in a set of routes defined for the application software;

streaming, by the second DMA engine, the data resulting from executing the application software via a second one or more routes included in the set of routes defined for the application software; and

streaming, by the third DMA engine, the probe data via a third one or more routes excluded from the set of routes defined for the application software.

14. A system, comprising:

one or more memories configured to store instructions;

one or more processors configured to receive instructions from the one or more memories and execute the instructions to cause the system to perform operations including:

analyzing application software;

developing test software based, at least in part, on results of analyzing the application software;

deploying the application software on a first hardware resource of a multi-processor array (MPA), wherein the MPA includes a plurality of processing elements, a plurality of memories, and an interconnection network communicatively coupling the plurality of processing elements to the plurality of memories, wherein the first hardware resource includes at least a first subset of the plurality of processing elements;

deploying the test software on a second hardware resource of the MPA, wherein the second hardware resource includes at least a second subset of the plurality of processing elements different than the first subset of the plurality of processing elements;

executing the application software on the first hardware resource; and

executing the test software on the second hardware resource, wherein executing the test software includes:

polling, by a first processing element include in the second hardware resource, one or more registers associated with a direct memory access (DMA) transfer in the first hardware resource resulting from executing one or more program commands included in the application software; and

sending, by the first processing element, auxiliary data retrieved from the one or more registers to a storage location for analysis, wherein an amount of auxiliary data is less than an amount of data generated by the application software; and

rebuilding the application software based on the auxiliary data.

15. The system of claim 14 , wherein a priority of the first processing element polling is less than a priority associated with performing the DMA in the first hardware resource.

16. The system of claim 14 , wherein the operations further include modifying the application software to include at least one probe command, and wherein executing the application software on the first hardware resource includes generating probe data in response to executing the at least one probe command.

17. The system of claim 14 , wherein executing the application software on the first hardware resource includes:

streaming, by a first DMA engine of a plurality of DMA engines, data resulting from executing the application software and the probe data to a particular memory of the plurality of memories; and

streaming, by a second DMA engine of the plurality of DMA engines, the data resulting from executing the application software to a target location in the plurality of memories.

18. The system of claim 17 , wherein executing the test software on the second hardware resource includes streaming, by a third DMA engine of the plurality of DMA engines, to the storage location for analysis.

19. The system of claim 18 , wherein the operations further include coordinating operation of the first, second, and third DMA engines.

20. The system of claim 18 , wherein the operations further include:

streaming, by the first DMA engine, the data resulting from executing the application software via a first one or more routes included in a set of routes defined for the application software;

streaming, by the second DMA engine, the data resulting from executing the application software via a second one or more routes included in the set of routes defined for the application software; and

streaming, by the third DMA engine, the probe data via a third one or more routes excluded from the set of routes defined for the application software.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2025
From: PACIFIC CAP ACQUISITION FUND, LLC
To: HYPERX HOLDINGS LLC
Reel/Frame 072342/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2025
From: COHERENT LOGIX, INC.
To: PACIFIC CAP ACQUISITION FUND, LLC
Reel/Frame 072370/0394 →
SECURITY INTEREST Recorded Jan 4, 2023
From: HYPERICE IP SUBCO, LLC
To: ACP POST OAK CREDIT I LLC
Reel/Frame 062269/0285 →
SECURITY INTEREST Recorded Dec 23, 2022
From: COHERENT LOGIX, INCORPORATED
To: ACP POST OAK CREDIT I LLC
Reel/Frame 062214/0302 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2016
From: ELLIS, GEOFFREY N.; BEARDSLEE, JOHN MARK; DOERR, MICHAEL B.; AGUAYO, IVAN; DALIO, BRIAN A.
To: COHERENT LOGIX, INCORPORATED
Reel/Frame 039859/0569 →
Continuity (3)
Continuation 14074925 · Nov 8, 2013
Provisional Application 61724493 · Nov 9, 2012
Related Publication 20170010958A1 · Jan 12, 2017