IP Library Granted Patent US 8,234,618
Granted Patent B2
US 8,234,618 · App. 12/611,156 · Granted Jul 31, 2012

Trace reconstruction for silicon validation of asynchronous systems-on-chip

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 8,234,618
App. No.
12/611,156
Granted
Jul 31, 2012
Kind
B2
Abstract

A test system collects passing event data and failing event data, and merges the collected data into passing subsequences and failing subsequences, respectively. The test system identifies an overlap area between the passing subsequence and the failing subsequence in regards to time slices and tracepoint slices, and creates passing transactions and failing transactions using the event data corresponding to the overlap area. Next, the test system detects a timing discrepancy between the first passing transaction relative to the second passing transaction compared with the first failing transaction relative to the second failing transaction. The test system then reports the detected timing discrepancy, which allows a test engineer to perturb the test program in order to more frequently catch intermittent failures caused by asynchronous timing conditions.

Claims (135)

1. A computer-implemented method comprising:

utilizing a processor to merge passing event data into a passing subsequence, the passing event data being collected in a device when the device executes a test program and yields a pass result;

utilizing the processor to merge failing event data into a failing subsequence, the failing event data being collected in the device when the device executes the test program and yields a fail result;

identifying an overlap area between the passing subsequence and the failing subsequence;

creating a first passing transaction and a second passing transaction using a subset of the passing event data included in the overlap area;

creating a first failing transaction and a second failing transaction using a subset of the failing event data included in the overlap area;

detecting a timing order discrepancy between the first passing transaction relative to the second passing transaction compared with the first failing transaction relative to the second failing transaction; and

reporting the detected timing order discrepancy.

2. The computer-implemented method of claim 1 wherein the test program executes for a total execution time, the method further comprising:

defining a plurality of time-tracepoint slices, wherein each of the plurality of time-tracepoint slices identifies a time slice and a tracepoint slice, the time slice corresponding to a subset of time of the total execution time and the tracepoint slice corresponding to a subset of a plurality of tracepoints, each of the plurality of tracepoints corresponding to a location on the device for which to collect the passing event data and the failing event data.

3. The computer-implemented method of claim 2 further comprising:

selecting one of the plurality of time-tracepoint slices;

executing the test program while collecting time-tracepoint slice event data that corresponds to the selected time-tracepoint slice;

merging the collected time-tracepoint slice event data with the passing subsequence in response to determining that that the test program yielded the pass result and that the collected time-tracepoint slice event data meets one or more thresholds when compared with the passing subsequence; and

merging the collected time-tracepoint slice event data with the failing subsequence in response to determining that that the test program yielded the fail result and that the collected time-tracepoint slice event data meets one or more of the thresholds when compared with the failing subsequence.

4. The computer-implemented method of claim 1 wherein the creating of the first passing transaction further comprises:

identifying a plurality of passing events from the subset of passing event data;

listing the plurality of passing events in temporal order;

selecting one of the plurality of passing events;

calculating a temporal congruence between the selected passing event and the first transaction;

comparing the calculated temporal congruence with a temporal congruence threshold;

assigning the passing event to the first transaction in response to the calculated temporal congruence meeting the temporal congruence threshold; and

creating a new transaction using the selected passing event in response to the calculated temporal congruence failing to meet the temporal congruence threshold.

5. The computer-implemented method of claim 4 further comprising:

calculating an address/data congruence between the selected passing event and the first transaction;

comparing the address/data congruence with an address/data congruence threshold; and

creating a new transaction using the selected passing event in response to the calculated address/data congruence failing to meet the address/data congruence threshold.

6. The computer-implemented method of claim 1 wherein the creating of the first failing transaction further comprises:

identifying a plurality of failing events from the subset of failing event data;

listing the plurality of failing events in temporal order;

selecting one of the plurality of failing events;

calculating a temporal congruence between the selected failing event and the first transaction;

comparing the calculated temporal congruence with a temporal congruence threshold;

assigning the failing event to the first transaction in response to the calculated temporal congruence meeting the temporal congruence threshold; and

creating a new transaction using the selected failing event in response to the calculated temporal congruence failing to meet the temporal congruence threshold.

7. The computer-implemented method of claim 6 further comprising:

calculating an address/data congruence between the selected failing event and the first transaction;

comparing the address/data congruence with an address/data congruence threshold; and

creating a new transaction using the selected failing event in response to the calculated address/data congruence failing to meet the address/data congruence threshold.

8. The computer-implemented method of claim 1 further comprising:

replacing the first passing transaction with passing temporal signature events in response to detecting that the first passing transaction includes a number of passing events that exceeds an event number threshold; and

replacing the first failing transaction with failing temporal signature events in response to detecting that the first failing transaction includes a number of failing events that exceeds the event number threshold.

9. The computer-implemented method of claim 1 further comprising:

identifying, from the subset of failing event data, a failing event pair that includes a first failing event and a second failing event;

including the failing event pair in a failing Pi set in response to determining that the first failing event and the second failing event are not included in a same transaction;

identifying, from the subset of passing event data, a passing event pair that includes a first passing event and a second passing event;

including the passing event pair in a passing Pi set in response to determining that the first passing event and the second passing event are not included in a same transaction; and

using the failing Pi set and the passing Pi set for detecting the timing order discrepancy.

10. The computer-implemented method of claim 1 further comprising:

perturbing the test program in response to detecting the timing difference; and

executing the perturbed test program on the device.

11. A system comprising:

one or more processors;

a memory accessible by at least one of the processors;

a nonvolatile storage area accessible by at least one of the processors;

a set of instructions stored in the memory and executed by at least one of the processors in order to perform actions of:

merging passing event data into a passing subsequence, the passing event data being collected in a device when the device executes a test program and yields a pass result;

merging failing event data into a failing subsequence, the failing event data being collected in the device when the device executes the test program and yields a fail result;

identifying an overlap area between the passing subsequence and the failing subsequence;

creating a first passing transaction and a second passing transaction using a subset of the passing event data included in the overlap area;

creating a first failing transaction and a second failing transaction using a subset of the failing event data included in the overlap area;

detecting a timing order discrepancy between the first passing transaction relative to the second passing transaction compared with the first failing transaction relative to the second failing transaction; and

reporting the detected timing order discrepancy.

12. The system of claim 11 wherein the test program executes for a total execution time, the set of instructions further performing actions of:

defining a plurality of time-tracepoint slices, wherein each of the plurality of time-tracepoint slices identifies a time slice and a tracepoint slice, the time slice corresponding to a subset of time of the total execution time and the tracepoint slice corresponding to a subset of a plurality of tracepoints, each of the plurality of tracepoints corresponding to a location on the device for which to collect the passing event data and the failing event data;

selecting one of the plurality of time-tracepoint slices;

executing the test program while collecting time-tracepoint slice event data that corresponds to the selected time-tracepoint slice;

merging the collected time-tracepoint slice event data with the passing subsequence in response to determining that that the test program yielded the pass result and that the collected time-tracepoint slice event data meets one or more thresholds when compared with the passing subsequence; and

merging the collected time-tracepoint slice event data with the failing subsequence in response to determining that that the test program yielded the fail result and that the collected time-tracepoint slice event data meets one or more of the thresholds when compared with the failing subsequence.

13. The system of claim 11 wherein the set of instructions further performs actions of:

identifying a plurality of passing events from the subset of passing event data;

listing the plurality of passing events in temporal order;

selecting one of the plurality of passing events;

calculating a temporal congruence between the selected passing event and the first transaction;

comparing the calculated temporal congruence with a temporal congruence threshold;

calculating an address/data congruence between the selected passing event and the first transaction;

comparing the address/data congruence with an address/data congruence threshold;

assigning the passing event to the first transaction in response to the calculated temporal congruence meeting the temporal congruence threshold and the address/data congruence meeting the address/data congruence threshold; and

creating a new transaction using the selected passing event in response to the calculated temporal congruence failing to meet the temporal congruence threshold or the address/data congruence failing to meet the address/data congruence threshold.

14. The system of claim 11 wherein the set of instructions further performs actions of:

identifying a plurality of failing events from the subset of failing event data;

listing the plurality of failing events in temporal order;

selecting one of the plurality of failing events;

calculating a temporal congruence between the selected failing event and the first transaction;

comparing the calculated temporal congruence with a temporal congruence threshold;

calculating an address/data congruence between the selected failing event and the first transaction;

comparing the address/data congruence with an address/data congruence threshold;

assigning the failing event to the first transaction in response to the calculated temporal congruence meeting the temporal congruence threshold and the address/data congruence meeting the address/data congruence threshold; and

creating a new transaction using the selected failing event in response to the calculated temporal congruence failing to meet the temporal congruence threshold or the address/data congruence failing to meet the address/data congruence threshold.

15. The system of claim 11 wherein the set of instructions further performs actions of:

identifying, from the subset of failing event data, a failing event pair that includes a first failing event and a second failing event;

including the failing event pair in a failing Pi set in response to determining that the first failing event and the second failing event are not included in a same transaction;

identifying, from the subset of passing event data, a passing event pair that includes a first passing event and a second passing event;

including the passing event pair in a passing Pi set in response to determining that the first passing event and the second passing event are not included in a same transaction; and

using the failing Pi set and the passing Pi set for detecting the timing order discrepancy.

16. A computer program product stored in a computer readable storage device, comprising functional descriptive material that, when executed by an information handling system, causes the information handling system to perform actions that include:

merging passing event data into a passing subsequence, the passing event data being collected in a device when the device executes a test program and yields a pass result;

merging failing event data into a failing subsequence, the failing event data being collected in the device when the device executes the test program and yields a fail result;

identifying an overlap area between the passing subsequence and the failing subsequence;

creating a first passing transaction and a second passing transaction using a subset of the passing event data included in the overlap area;

creating a first failing transaction and a second failing transaction using a subset of the failing event data included in the overlap area;

detecting a timing order discrepancy between the first passing transaction relative to the second passing transaction compared with the first failing transaction relative to the second failing transaction; and

reporting the detected timing order discrepancy.

17. The computer program product of claim 16 wherein the test program executes for a total execution time, the information handling system further performing actions of:

defining a plurality of time-tracepoint slices, wherein each of the plurality of time-tracepoint slices identifies a time slice and a tracepoint slice, the time slice corresponding to a subset of time of the total execution time and the tracepoint slice corresponding to a subset of a plurality of tracepoints, each of the plurality of tracepoints corresponding to a location on the device for which to collect the passing event data and the failing event data;

selecting one of the plurality of time-tracepoint slices;

executing the test program while collecting time-tracepoint slice event data that corresponds to the selected time-tracepoint slice;

merging the collected time-tracepoint slice event data with the passing subsequence in response to determining that that the test program yielded the pass result and that the collected time-tracepoint slice event data meets one or more thresholds when compared with the passing subsequence; and

merging the collected time-tracepoint slice event data with the failing subsequence in response to determining that that the test program yielded the fail result and that the collected time-tracepoint slice event data meets one or more of the thresholds when compared with the failing subsequence.

18. The computer program product of claim 16 wherein the information handling system further performs actions of:

identifying a plurality of passing events from the subset of passing event data;

listing the plurality of passing events in temporal order;

selecting one of the plurality of passing events;

calculating a temporal congruence between the selected passing event and the first transaction;

comparing the calculated temporal congruence with a temporal congruence threshold;

calculating an address/data congruence between the selected passing event and the first transaction;

comparing the address/data congruence with an address/data congruence threshold;

assigning the passing event to the first transaction in response to the calculated temporal congruence meeting the temporal congruence threshold and the address/data congruence meeting the address/data congruence threshold; and

creating a new transaction using the selected passing event in response to the calculated temporal congruence failing to meet the temporal congruence threshold or the address/data congruence failing to meet the address/data congruence threshold.

19. The computer program product of claim 16 wherein the information handling system further performs actions of:

identifying a plurality of failing events from the subset of failing event data;

listing the plurality of failing events in temporal order;

selecting one of the plurality of failing events;

calculating a temporal congruence between the selected failing event and the first transaction;

comparing the calculated temporal congruence with a temporal congruence threshold;

calculating an address/data congruence between the selected failing event and the first transaction;

comparing the address/data congruence with an address/data congruence threshold;

assigning the failing event to the first transaction in response to the calculated temporal congruence meeting the temporal congruence threshold and the address/data congruence meeting the address/data congruence threshold; and

creating a new transaction using the selected failing event in response to the calculated temporal congruence failing to meet the temporal congruence threshold or the address/data congruence failing to meet the address/data congruence threshold.

20. The computer program product of claim 16 wherein the information handling system further performs actions of:

identifying, from the subset of failing event data, a failing event pair that includes a first failing event and a second failing event;

including the failing event pair in a failing Pi set in response to determining that the first failing event and the second failing event are not included in a same transaction;

identifying, from the subset of passing event data, a passing event pair that includes a first passing event and a second passing event;

including the passing event pair in a passing Pi set in response to determining that the first passing event and the second passing event are not included in a same transaction; and

using the failing Pi set and the passing Pi set for detecting the timing order discrepancy.

Assignments (18)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040632 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Sep 21, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 044209/0047 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040632/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037355/0723 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024079/0082 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2009
From: BOSE, MRINAL; BHADRA, JAYANTA; MILLER, HILLEL; SWARTHOUT, EDWARD L.; TROFIMOVA, EKATERINA A.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 023460/0326 →