IP Library Granted Patent US 8,050,904
Granted Patent B2
US 8,050,904 · App. 11/532,268 · Granted Nov 1, 2011

System and method for circuit symbolic timing analysis of circuit designs

Assignee: Freescale Semiconductor, Inc.
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,050,904
App. No.
11/532,268
Granted
Nov 1, 2011
Kind
B2
Abstract

A method, data processing system, and computer program product are provided for performing time-based symbolic simulation. A delay-aware representation of a circuit is created that includes a plurality of circuit nodes. The data-aware representation is simulated. In particular, the simulator simulates transitions from a first set of circuit nodes to a second set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing a first set of simulation events. A second set of simulation events is then generated in response to executing the first set of simulation events. During the simulation, a time is computed for each of the transitions. An an event scheduling diagram is constructed during simulation. The event scheduling diagram depicts the transitions and the times of the transitions.

Claims (114)

1. A computer-implemented method of performing time-based symbolic simulation, the method comprising:

creating a delay-aware representation of a circuit, wherein the delay-aware representation includes a plurality of circuit nodes;

simulating a first plurality of transitions from a first set of circuit nodes selected from the plurality of circuit nodes to a second set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing a first set of simulation events;

generating a second set of simulation events in response to executing the first set of simulation events, wherein the second set of simulation events are generated based on the execution of the first set of simulation events;

simulating a second plurality of transitions from the second set of circuit nodes to a third set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing the second set of simulation events;

computing a plurality of times corresponding to the first and the second plurality of transitions; and

constructing an event scheduling diagram that depicts the first and second plurality of transitions and the computed times corresponding to the first and second plurality of transitions.

2. The method of claim 1 further comprising:

storing the computed times in a data structure, wherein each of the computed times corresponds to one or more of the transitions, wherein at least one of the computed times corresponding to a selected one of the transitions is less than a maximum computed time corresponding to the selected transition;

retrieving a plurality of circuit nodes from the delay-aware representation, the circuit nodes being associated to one or more of the events, wherein each of the received circuit nodes transitions to a new state when the associated event occurs;

retrieving a direction corresponding to each of the transitions from the delay-aware representation;

generating a first Boolean expression associated to each transition, wherein the first Boolean expression represents the condition of the associated transition; and

generating a second Boolean expression associated to each of one or more future events, wherein the second Boolean expression represents the condition when the future event is scheduled.

3. The method of claim 1 wherein the simulating further comprises:

computing two Boolean function sets corresponding one of the plurality of circuit nodes (a first node), wherein the first Boolean function set corresponds to the first node being pulled up, and the second Boolean function set corresponds to the first node being pulled down.

4. The method of claim 1 further comprising:

retrieving, from the delay-aware representation of the circuit, path data corresponding to a simulated conductive path connecting one of the first set of circuit nodes (a first node) to one of the second set of circuit nodes (a second node);

obtaining a path delay time corresponding to the conductive path, wherein the computing of the time of the transition from the first node to the second node includes the obtained path delay.

5. The method of claim 4 wherein the obtaining is performed by a process selected from the group consisting of:

calculating the path delay time based upon the retrieved path data; and

retrieving the path delay time corresponding to the simulated conductive path from a data store.

6. The method of claim 1 further comprising:

retrieving an analyzer, wherein the analyzer includes a type of timing analysis;

computing one or more end nodes for exploration of the event scheduling diagram based on the type of timing analysis; and

applying the retrieved analyzer to the event scheduling diagram.

7. The method of claim 6 further comprising:

traversing the event scheduling diagram backwards from an end node selected from the one or more end nodes to an initial node; and

generating concrete input vectors corresponding to one or more path-related timing questions.

8. The method of claim 6 further comprising:

during the simulating, comparing a predicate that corresponds to the analyzer with a plurality of states that each correspond to a state of the simulation;

stopping the simulating based on the comparison;

executing the analyzer against the event scheduling diagram that was constructed at the time of the stopped simulation; and

reporting a result of the executed analyzer.

9. The method of claim 6 wherein the applying of the analyzer further comprises:

computing one or more end nodes of the event scheduling diagram based on the type of timing analysis being performed;

traversing the event scheduling diagram backwards in order to find a path from each of the end nodes to an initial node of the event scheduling diagram; and

generating one or more concrete input vectors corresponding to path-related timing questions related to the type of timing analysis being performed.

10. The method of claim 6 further comprising:

after the applying of the retrieved analyzer to the event scheduling diagram, identifying at least one transition in the event scheduling diagram that cannot occur.

11. The method of claim 1 further comprising:

retrieving an analyzer to apply to the event scheduling diagram, wherein the analyzer includes a type of timing analysis; and

computing one or more end nodes for exploration of the event scheduling diagram based on the type of timing analysis.

12. The method of claim 1 further comprising:

repeatedly selecting an analyzer from a plurality of analyzers, wherein each of the analyzers includes a predicate and an analysis type;

comparing each of the analyzer predicates to a state of the simulation;

applying the selected analyzer to the event scheduling diagram in response to a selected analyzer's predicate being true, the applying including:

computing one or more end nodes for exploration of the event scheduling diagram based on the analysis type;

determining whether event scheduling diagram exploration is needed;

in response to event scheduling diagram exploration not being needed, executing the selected analysis to generate an analysis answer in response to event scheduling diagram; and

in response to event scheduling diagram exploration being needed:

traversing the event scheduling diagram backwards from an end node selected from the one or more end nodes to an initial node;

generating concrete input vectors corresponding to one or more path-related timing questions; and

computing the analysis answer using the generated concrete input vectors.

13. The method of claim 1 further comprising:

analyzing the constructed event scheduling diagram;

modifying the delay-aware representation of the circuit in response to the analysis; and

building a hardware circuit that corresponds to the modified delay-aware representation.

14. A data processing system comprising:

one or more processors;

a memory accessible by the processors;

a set of instructions stored in the memory, wherein one or more of the processors executes the set of instructions in order to perform actions of:

creating a delay-aware representation of a circuit, wherein the delay-aware representation includes a plurality of circuit nodes;

storing the delay-aware representation in the memory;

simulating a first plurality of transitions from a first set of circuit nodes selected from the plurality of circuit nodes to a second set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing a first set of simulation events;

generating a second set of simulation events in response to executing the first set of simulation events, wherein the second set of simulation events are generated based on the execution of the first set of simulation events;

simulating a second plurality of transitions from the second set of circuit nodes to a third set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing the second set of simulation events;

computing a plurality of times corresponding to the first and the second plurality of transitions; and

constructing an event scheduling diagram that depicts the first and second plurality of transitions and the computed times corresponding to the first and second plurality of transitions.

15. The data processing system of claim 14 wherein the set of instructions, when executed by the one or more processors, perform further actions comprising:

storing the computed times in a data structure, wherein each of the computed times corresponds to one or more of the transitions;

retrieving a plurality of circuit nodes from the delay-aware representation, the circuit nodes being associated to one or more of the events, wherein each of the received circuit nodes transitions to a new state when the associated event occurs;

retrieving, from the delay-aware representation of the circuit, conductive path data corresponding to a simulated conductive path connecting one of the first set of circuit nodes (a first node) to one of the second set of circuit nodes (a second node);

obtaining a path delay time corresponding to the simulated conductive path, wherein the computing of the time of the transition from the first node to the second node includes the obtained conductive path delay; and

retrieving a direction corresponding to each of the transitions from the delay-aware representation.

16. The data processing system of claim 14 wherein the set of instructions, when executed by the one or more processors, perform further actions comprising:

repeatedly selecting an analyzer from a plurality of analyzers, wherein each of the analyzers includes a predicate and an analysis type;

comparing each of the analyzer predicates to a state of the simulation;

applying the selected analyzer to the event scheduling diagram in response to a selected analyzer's predicate being true, the applying including:

computing one or more end nodes for exploration of the event scheduling diagram based on the analysis type;

determining whether event scheduling diagram exploration is needed;

in response to event scheduling diagram exploration not being needed, executing the selected analysis to generate an analysis answer in response to event scheduling diagram; and

in response to event scheduling diagram exploration being needed:

traversing the event scheduling diagram backwards from an end node selected from the one or more end nodes to an initial node;

generating concrete input vectors corresponding to one or more path-related timing questions; and

computing the analysis answer using the generated concrete input vectors.

17. A computer program product stored in a non-transitory computer readable medium, comprising functional descriptive material that, when executed by a data processing system, causes the data processing system to perform actions that include:

creating a delay-aware representation of a circuit, wherein the delay-aware representation includes a plurality of circuit nodes;

simulating a first plurality of transitions from a first set of circuit nodes selected from the plurality of circuit nodes to a second set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing a first set of simulation events;

generating a second set of simulation events in response to executing the first set of simulation events, wherein the second set of simulation events are generated based on the execution of the first set of simulation events;

simulating a second plurality of transitions from the second set of circuit nodes to a third set of circuit nodes selected from the plurality of circuit nodes, the simulating based on executing the second set of simulation events;

computing a plurality of times corresponding to the first and the second plurality of transitions; and

constructing an event scheduling diagram that depicts the first and second plurality of transitions and the computed times corresponding to the first and second plurality of transitions.

18. The computer program product of claim 17 wherein the functional descriptive material, when executed by the data processing system, causes the data processing system to perform further actions comprising:

storing the computed times in a data structure, wherein each of the computed times corresponds to one or more of the transitions;

retrieving a plurality of circuit nodes from the delay-aware representation, the circuit nodes being associated to one or more of the events, wherein each of the received circuit nodes transitions to a new state when the associated event occurs;

retrieving, from the delay-aware representation of the circuit, conductive path data corresponding to a simulated conductive path connecting one of the first set of circuit nodes (a first node) to one of the second set of circuit nodes (a second node);

obtaining a conductive path delay time corresponding to the simulated conductive path, wherein the computing of the time of the transition from the first node to the second node includes the obtained conductive path delay; and

retrieving a direction corresponding to each of the transitions from the delay-aware representation.

19. The computer program product of claim 17 wherein the functional descriptive material, when executed by the data processing system, causes the data processing system to perform further actions comprising:

retrieving an analyzer to apply to the event scheduling diagram, wherein the analyzer includes a type of timing analysis;

computing one or more end nodes for exploration of the event scheduling diagram based on the type of timing analysis;

analyzing the event scheduling diagram by executing the retrieved analyzer; and

based on the executed analyzer, identifying at least one transition in the event scheduling diagram that cannot occur.

20. The computer program product of claim 17 wherein the functional descriptive material, when executed by the data processing system, causes the data processing system to perform further actions comprising:

repeatedly selecting an analyzer from a plurality of analyzers, wherein each of the analyzers includes a predicate and an analysis type;

comparing each of the analyzer predicates to a state of the simulation;

applying the selected analyzer to the event scheduling diagram in response to a selected analyzer's predicate being true, the applying including:

computing one or more end nodes for exploration of the event scheduling diagram based on the analysis type;

determining whether event scheduling diagram exploration is needed;

in response to event scheduling diagram exploration not being needed, executing the selected analysis to generate an analysis answer in response to event scheduling diagram; and

in response to event scheduling diagram exploration being needed:

traversing the event scheduling diagram backwards from an end node selected from the one or more end nodes to an initial node;

generating concrete input vectors corresponding to one or more path-related timing questions; and

computing the analysis answer using the generated concrete input vectors.

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 →
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 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 →
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 →
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 037354/0225 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
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 May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Feb 2, 2007
From: FREESCALE SEMICONDUCTOR, INC.; FREESCALE ACQUISITION CORPORATION; FREESCALE ACQUISITION HOLDINGS CORP.; FREESCALE HOLDINGS (BERMUDA) III, LTD.
To: CITIBANK, N.A. AS COLLATERAL AGENT
Reel/Frame 018855/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2006
From: BHADRA, JAYANTA; ABADIR, MAGDY S.; GAO, PING; MCDOUGALL, TIMOTHY DAVID
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 018460/0109 →
Continuity (1)
Related Publication 20080071515A1 · Mar 20, 2008