US5752000A
Expired / Lapsed
US
⏱️ 0.0 years remaining
System and method for simulating discrete functions using ordered decision arrays
Assignee: Cadence Design Systems Inc
•
Filing: 1994-08-02
•
Granted: 1998-05-12
•
Expires: 2014-08-02
Abstract
Abstract A system and method increases discrete function simulator performance by creating a data structure that completely and accurately models a system of discrete function elements. A discrete function simulator simulates the system using the data structure. Sequential circuits are converted into blocks of combinational elements having latch variables stored to and read from memory. The simulator performance is dependent upon the number of system inputs and outputs and not on the number of discrete function elements in the circuit being simulated.
Inventors
- 👤 Patrick C. McGeer
- 👤 Alexander Saldanha
- 👤 Alberto Sangiovanni-Vincentelli
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-06 15:02
CPC Classifications
G; G06; G06F; G06F30/00; G06F30/30; G06F30/32; G06F30/33
Claims Analysis
Total Claims: 42
Claim 1
Independent Claim
180 words
A method for simulating a discrete function circuit design, on a digital computer, the discrete function circuit design including two or more discrete function elements, said discrete function circuit design having a plurality of inputs and a plurality of outputs, the method comprising the steps of: generating a multi-valued decision data representation having a plurality of nodes, representing the circuit design, a size of said multi-valued decision data representation is not dependent upon the number of discrete function elements; generating a first data array, using the digital computer, wherein said first data array represents an effect of the two or more discrete function elements on the plurality of inputs, wherein said first data array includes a plurality of data tables, each of said tables identified with one of said plurality of nodes, said first data array having a size that is not dependent upon the number of discrete function elements; and traversing said first data array and generating one or more of the plurality of outputs in response to the plurality of inputs to simulate the discrete function circuit design.
Claim 2
Independent Claim
180 words
A method for simulating a discrete function circuit design, on a digital computer, the discrete function circuit design including two or more discrete function elements, said discrete function circuit design having a plurality of inputs and a plurality of outputs, the method comprising the steps of: generating a multi-valued decision data representation having a plurality of nodes, representing the circuit design, a size of said multi-valued decision data representation is not dependent upon the number of discrete function elements; generating a first data array, using the digital computer, wherein said first data array represents an effect of the two or more discrete function elements on the plurality of inputs, wherein said first data array includes a plurality of data tables, each of said tables identified with one of said plurality of nodes, said first data array having a size that is not dependent upon the number of discrete function elements; and traversing said first data array and generating one or more of the plurality of outputs in response to the plurality of inputs to simulate the discrete function circuit design.
Claim 3
Dependent Claim
127 words
The method of claim 1, wherein said step of generating a multi-valued decision data representation comprises the steps of: generating a first representation of a binary decision diagram (BDD), associated with one of the outputs of the discrete function circuit design, representing said effect of the two or more discrete function elements on the inputs; repeating said step of generating a first representation, for each of said outputs; combining two or more of said first representations of a BDD to create a second BDD representation, associated with two or more of said outputs of the discrete function circuit design, representing said effect of the two or more discrete function elements on the inputs; and converting said second BDD representation to said first multi-value decision diagram (MDD) representation.
Claim 4
Dependent Claim
47 words
The method of claim 2, further comprising the step of: modifying said first data array by representing the effect of the two or more discrete function elements on all but one of the inputs wherein said one input does not affect said associated two or more outputs.
Claim 5
Dependent Claim
26 words
The method of claim 2, wherein said discrete function circuit design is a logic circuit design, and wherein said discrete function element is a logic gate.
Claim 6
Dependent Claim
16 words
The method of claim 4, wherein the logic circuit design is a layout level circuit design.
Claim 7
Dependent Claim
16 words
The method of claim 4, wherein the logic circuit design is a logic level circuit design.
Claim 8
Dependent Claim
16 words
The method of claim 4, wherein the logic circuit design is an architectural level circuit design.
Claim 9
Dependent Claim
37 words
The method of claim 2, further comprising the step of: generating a simulation program, based upon said first data array, which simulates the effect of the two or more discrete function elements on the plurality of inputs.
Claim 10
Dependent Claim
39 words
The method of claim 8, wherein said step of generating said simulation program comprises the step of: performing only one or more first data array lookup operations to simulate the effect of the discrete function elements on the inputs.
Claim 11
Dependent Claim
26 words
The method of claim 1, wherein said discrete function circuit design is a logic circuit design, and wherein said discrete function element is a logic gate.
Claim 12
Dependent Claim
16 words
The method of claim 10, wherein the logic circuit design is a combinational logic circuit design.
Claim 13
Dependent Claim
16 words
The method of claim 10, wherein the logic circuit design is a sequential logic circuit design.
Claim 14
Dependent Claim
27 words
The method of claim 12, further comprising the step of: converting said sequential logic circuit into a combinational logic block having said two or more logic blocks.
Claim 15
Dependent Claim
25 words
The method of claim 13, further comprising the step of: storing a sequential logic variable wherein said sequential logic variable is one of the outputs.
Claim 16
Dependent Claim
18 words
The method of claim 14, wherein the inputs into said combinational logic block include said sequential logic variable.
Claim 17
Dependent Claim
62 words
The method of claim 14, further comprising the step of: eliminating a delay when simulating a first combinational logic block and a second combinational logic block by inputting a first plurality of inputs and said sequential logic variable into said first combinational logic block and inputting a second plurality of inputs and said sequential logic variable into said second combinational logic block.
Claim 18
Dependent Claim
24 words
The method of claim 1, further comprising the step of synthesizing and optimizing the discrete function circuit design before generating said first data array.
Claim 19
Dependent Claim
34 words
The method of claim 1, further comprising the step of: pipelineing said discrete function circuit design to form two or more design stages, and generating said first data array for each of said stages.
Claim 20
Dependent Claim
49 words
The method of claim 1, wherein said data tables include a plurality of first data tables, each of said first data tables having a plurality of pointers, each of said pointers identifying a position of another of said data tables, and a second data table including said output values.
Claim 21
Dependent Claim
113 words
The method of claim 19, wherein said step of traversing said first data array includes the steps of: (a) selecting one of said first data tables; (b) s electing a first subset of said inputs; (c) determining a first value representing said first subset of said inputs; (d) selecting one of said plurality of pointers of one of said first data tables, said selected pointer identifying the next data table; (e) repeating steps (b) through (d) until all of said inputs have been included in said first subset, wherein said pointer identifies said second table; and (f) identifying one or more of said plurality of outputs as a value of said second table.
Claim 22
Dependent Claim
93 words
The method of claim 1, wherein said step of generating a multi-valued decision data array includes the steps of: generating a plurality of binary-valued decision data arrays, each representing the value of one of said outputs from said plurality of inputs; identifying a first group including two or more of said plurality of inputs; identifying a second group including two or more of said plurality of outputs; and combining two or more of said binary-valued data arrays associated with said first group and said second group to generate said multi-valued decision data array.
Claim 23
Dependent Claim
19 words
The method of claim 21, further comprising the step of eliminating unused inputs from said multi-valued decision data array.
Claim 24
Dependent Claim
303 words
A computer based system for simulating a circuit design having a plurality of signals representative of two or more logic gates, the two or more logic gates having a plurality of input signals and a plurality of output signals, comprising: a storage device; MDD generating means, coupled to said storage device, for generating a multi-valued decision data representation having a plurality of nodes, representing the circuit design, a size of said multi-valued decision data representation is not dependent upon the number of discrete function elements, for generating a first representation of a binary decision diagram (BDD), associated with one of the outputs of the discrete function circuit design, representing said effect of the two or more discrete function elements on the inputs, for combining two or more of said first representations to create a second representation of a BDD, associated with two or more outputs, said second representation representing said effect of the two or more discrete function elements on the inputs, and for converting said second BDD representation to a first multi-value decision diagram (MDD) representation; first data array generating means, coupled to said storage device, and responsive to the logic gate signals, for generating signals representative of a first data array, wherein said first data array signals represents said MDD representation and an effect of the logic gate signals on the plurality of input signals, and wherein said first data array includes a plurality of data tables, each of said tables identified with one of said plurality of nodes, said first data array having a size that is not dependent upon the number of logic gates; and a processor, coupled to said data generating means, responsive to the input signals, wherein said processor generates an output signal based upon the effect of the first data array signals on the input signals.
Claim 25
Dependent Claim
303 words
A computer based system for simulating a circuit design having a plurality of signals representative of two or more logic gates, the two or more logic gates having a plurality of input signals and a plurality of output signals, comprising: a storage device; MDD generating means, coupled to said storage device, for generating a multi-valued decision data representation having a plurality of nodes, representing the circuit design, a size of said multi-valued decision data representation is not dependent upon the number of discrete function elements, for generating a first representation of a binary decision diagram (BDD), associated with one of the outputs of the discrete function circuit design, representing said effect of the two or more discrete function elements on the inputs, for combining two or more of said first representations to create a second representation of a BDD, associated with two or more outputs, said second representation representing said effect of the two or more discrete function elements on the inputs, and for converting said second BDD representation to a first multi-value decision diagram (MDD) representation; first data array generating means, coupled to said storage device, and responsive to the logic gate signals, for generating signals representative of a first data array, wherein said first data array signals represents said MDD representation and an effect of the logic gate signals on the plurality of input signals, and wherein said first data array includes a plurality of data tables, each of said tables identified with one of said plurality of nodes, said first data array having a size that is not dependent upon the number of logic gates; and a processor, coupled to said data generating means, responsive to the input signals, wherein said processor generates an output signal based upon the effect of the first data array signals on the input signals.
Claim 26
Dependent Claim
66 words
The system of claim 23, wherein the circuit design is a sequential circuit design, further comprising: a sequential logic converter, coupled to said storage device, for converting signals representative of the sequential circuit design into signal representative of a combinational logic block having said two or more logic gates and for storing one of the outputs corresponding to a sequential variable signal in said storage device.
Claim 27
Dependent Claim
16 words
The system of claim 23, wherein said sequential variable signal is one of the input signals.
Claim 28
Dependent Claim
82 words
The system of claim 23, further comprising: traversing means, coupled to said processor, for selecting one of said first data tables, for selecting a first subset of said inputs, for determining a first value representing said first subset of said inputs, for selecting one of said plurality of pointers of one of said first data tables, said selected pointer identifying the next data table, and for identifying one or more of said plurality of outputs as a value of said second table.
Claim 29
Independent Claim
285 words
A method for simulating a discrete function circuit design, on a digital computer, the discrete function circuit design including two or more discrete function elements, said discrete function circuit design having a plurality of inputs and a plurality of outputs, the method comprising the steps of: generating a decision data representation having a plurality of nodes, representing the circuit design, a size of said binary-valued decision data representation is not dependent upon the number of discrete function elements, comprising the steps of: generating a first representation of a binary decision diagram (BDD), associated with one of the outputs of the discrete function circuit design, representing said effect of the two or more discrete function elements on the inputs, repeating said step of generating a first representation, for each of said outputs, combining two or more of said first representations to create a second representation of a BDD, associated with two or more outputs, representing said effect of the two or more discrete function elements on the inputs, and converting said second representation to a first multi-value decision diagram (MDD) representation; generating a first data array, using the digital computer, wherein said first data array represents said MDD representation and an effect of the two or more discrete function elements on the plurality of inputs, wherein said first data array includes a plurality of data tables, each of said tables identified with one of said plurality of nodes, said first data array having a size that is not dependent upon the number of discrete function elements; and traversing said first data array and generating one or more of said plurality of outputs in response to the plurality of inputs to simulate the discrete function circuit design.
Claim 30
Independent Claim
285 words
A method for simulating a discrete function circuit design, on a digital computer, the discrete function circuit design including two or more discrete function elements, said discrete function circuit design having a plurality of inputs and a plurality of outputs, the method comprising the steps of: generating a decision data representation having a plurality of nodes, representing the circuit design, a size of said binary-valued decision data representation is not dependent upon the number of discrete function elements, comprising the steps of: generating a first representation of a binary decision diagram (BDD), associated with one of the outputs of the discrete function circuit design, representing said effect of the two or more discrete function elements on the inputs, repeating said step of generating a first representation, for each of said outputs, combining two or more of said first representations to create a second representation of a BDD, associated with two or more outputs, representing said effect of the two or more discrete function elements on the inputs, and converting said second representation to a first multi-value decision diagram (MDD) representation; generating a first data array, using the digital computer, wherein said first data array represents said MDD representation and an effect of the two or more discrete function elements on the plurality of inputs, wherein said first data array includes a plurality of data tables, each of said tables identified with one of said plurality of nodes, said first data array having a size that is not dependent upon the number of discrete function elements; and traversing said first data array and generating one or more of said plurality of outputs in response to the plurality of inputs to simulate the discrete function circuit design.
Claim 31
Dependent Claim
49 words
The method of claim 27, wherein said data tables include a plurality of first data tables, each of said first data tables having a plurality of pointers, each of said pointers identifying a position of another of said data tables, and a second data table including said output values.
Claim 32
Dependent Claim
112 words
The method of claim 30, wherein said step of traversing said first data array includes the steps of: (a) select one of said first data tables; (b) selecting a first subset of said inputs; (c) determining a first value representing said first subset of said inputs; (d) selecting one of said plurality of pointers of one of said first data tables, said selected pointer identifying the next data table; (e) repeating steps (b) through (d) until all of said inputs have been included in said first subset, wherein said pointer identifies said second table; and (f) identifying one or more of said plurality of outputs as a value of said second table.
Claim 33
Dependent Claim
18 words
The method of claim 27, further comprising the step of eliminating unused inputs from said first data array.
Claim 34
Dependent Claim
26 words
The method of claim 27, wherein said discrete function circuit design is a logic circuit design, and wherein said discrete function element is a logic gate.
Claim 35
Dependent Claim
16 words
The method of claim 31, wherein the logic circuit design is a combinational logic circuit design.
Claim 36
Dependent Claim
16 words
The method of claim 31, wherein the logic circuit design is a sequential logic circuit design.
Claim 37
Dependent Claim
27 words
The method of claim 33, further comprising the step of: converting said sequential logic circuit into a combinational logic block having said two or more logic blocks.
Claim 38
Dependent Claim
25 words
The method of claim 34, further comprising the step of: storing a sequential logic variable wherein said sequential logic variable is one of the outputs.
Claim 39
Dependent Claim
18 words
The method of claim 35, wherein the inputs into said combinational logic block include said sequential logic variable.
Claim 40
Dependent Claim
62 words
The method of claim 35, further comprising the step of: eliminating a delay when simulating a first combinational logic block and a second combinational logic block by inputting a first plurality of inputs and said sequential logic variable into said first combinational logic block and inputting a second plurality of inputs and said sequential logic variable into said second combinational logic block.
Claim 41
Dependent Claim
23 words
The method of claim 27, further comprising the step of: synthesizing and optimizing the discrete function circuit design before generating said data array.
Claim 42
Dependent Claim
33 words
The method of claim 27, further comprising the step of pipelineing said discrete function circuit design to form two or more design stages, and generating said data array for each of said stages.
References Cited (Backward Citations)
US4527249A
Cited
US4725971A
Cited
US4703435A
Cited
US4782440A
Cited
US4694411A
Cited
US4831543A
Cited
US5301318A
Cited
US4967367A
Cited
EP0397532A2
Cited
US5051938A
Cited
US5084824A
Cited
US5426770A
Cited
US5392227A
Cited
US5477474A
Cited
US5384720A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2001-05-11 | 2001-11-10 | 2002-05-12 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2005-05-11 | 2005-11-10 | 2006-05-12 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2009-05-11 | 2009-11-10 | 2010-05-12 | $7700.00 | Window Closed / Lapsed |