WO2003021492A2 - Simulating a logic design - Google Patents

Simulating a logic design Download PDF

Info

Publication number
WO2003021492A2
WO2003021492A2 PCT/US2002/026852 US0226852W WO03021492A2 WO 2003021492 A2 WO2003021492 A2 WO 2003021492A2 US 0226852 W US0226852 W US 0226852W WO 03021492 A2 WO03021492 A2 WO 03021492A2
Authority
WO
WIPO (PCT)
Prior art keywords
logic
state
code
computer code
elements
Prior art date
Application number
PCT/US2002/026852
Other languages
French (fr)
Other versions
WO2003021492A3 (en
Inventor
William Wheeler
Matthew Adiletta
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Priority to EP02768673A priority Critical patent/EP1421526A2/en
Publication of WO2003021492A2 publication Critical patent/WO2003021492A2/en
Publication of WO2003021492A3 publication Critical patent/WO2003021492A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Definitions

  • This invention relates to simulating a logic design comprised of combinatorial logic and state logic.
  • Logic designs for computer chips typically include combinatorial elements and state elements.
  • Combinatorial elements such as AND gates and OR gates, combine two or more logic states to produce an output.
  • State elements such as latches and flip-flops (FFs) , hold a logic state for a period of time, usually until receipt of an external clock signal .
  • Computer languages exist which allow designers to simulate logic designs, including combinatorial and state elements, prior to forming the logic on silicon. Examples of such languages include Verilog and Very High-Level Design Language (VHDL) . Using these languages, a designer can write code to simulate a logic design, then execute the code in order to determine if the logic design performs properly.
  • VHDL Very High-Level Design Language
  • Standard computer languages may also be used to simulate a logic design.
  • Fig. 1 is a flowchart showing a process for generating simulation code for a logic design.
  • Fig. 2 is a block diagram of a logic design containing individual state and combinatorial elements .
  • Fig. 3 is a block diagram of an alternative logic design containing state and combinatorial elements .
  • Fig. 4 shows a logic cone
  • Fig. 5 shows clock domains of a logic design.
  • Fig. 6 is a block diagram of an alternative logic design containing state and combinatorial elements.
  • Fig. 7 is a block diagram of a computer system on which the process of Fig. 1 may be performed.
  • a process 10 is shown for simulating a logic design comprised of combinatorial logic and state logic.
  • Process 10 may be implemented using a computer program running on a computer or other type of machine, as described in more detail below.
  • process 10 selects (101) , in response to a logic designer's input, graphic elements to generate a block diagram representation of a logic design.
  • the graphics elements are selected from a graphics library and may include combinatorial logic and state logic elements .
  • Graphics elements in the library may be definable or may have predefined functions.
  • the library may contain software objects that perform the function of a flip flop (FF) or a latch.
  • the library may also contain graphics elements that are undefined, i.e., that have no code associated with them.
  • FIG. 2 shows a graphical representation of a logic design 12 containing combinatorial logic elements 14 to 19 and state logic elements 22 and 24.
  • each block represents a single combinatorial element (e.g., multiplexers 18 and 19) or state element (e.g., FFs 22 and 24) .
  • state element e.g., FFs 22 and 24
  • logic design 26 Fig. 3
  • the functionality of several combinatorial elements is contained in a single combinatorial block 28 and the function of several state elements is contained in a single state block 30.
  • process 10 performs (102) an error check on the design to determine if there are any problems with the design. For example, process 10 determines if there are any unterminated or inconsistent connections in the design. If any such problems are detected (103) , process 10 issues (104) an error message to the logic designer. The error message may specify the nature of the problem and its location within the logic design. The logic designer is then given the opportunity to correct the problem before process 10 moves forward.
  • process 10 associates (105) computer code that simulates the logic design with each of the graphic elements.
  • process 10 associates computer code with combinatorial logic element 28 to define its function and with state logic element 30 to define its function. The same is true for the logic elements of Fig. 2.
  • the computer code is generated as follows.
  • Process 10 receives (106) intermediate computer code that is written by the logic designer.
  • the computer code is "intermediate" in the sense that it is an application- specific code, from which simulation code, such as C++ or Verilog, may be generated.
  • the intermediate computer code includes a netlist that defines logic elements and the interconnections of those elements .
  • the intermediate code is entered by the designer for each graphic element.
  • the designer may select a graphic element and, using an interactive tool, enter computer code to define the combinatorial (or state) logic represented by that element.
  • the designer may use software objects from the library, such as FFs, latches, AND gates, etc., in the intermediate code.
  • FFs FFs
  • latches AND gates, etc.
  • Several objects may be combined within a single graphic element by writing intermediate computer code to effect the combination.
  • an array of FFs may be produced by combining objects from the library via the intermediate code.
  • Graphic element 30 (Fig. 3) contains such an array of FFs.
  • the logic designer is constrained by process 10 to represent combinatorial logic and state logic using separate graphic elements .
  • process 10 performs (107) an error check to determine if the intermediate code written by the designer includes state logic in combinatorial graphic elements, or vice versa. If a state logic element contains combinatorial logic or a combinatorial logic element contains state logic, process 10 issues (108) an error message to the designer.
  • the error message may define the problem (i.e., interleaved combinatorial and state logic) and the graphic element that contains the problem.
  • process 10 requires the designer to correct the problem before process 10 proceeds further. To correct such a problem, the logic designer places the combinatorial logic and the state logic in different graphic elements (i.e., blocks) .
  • process 10 generates simulation code for the design.
  • process 10 generates either Verilog computer code or C++ computer code from the intermediate computer code.
  • the simulation code is not limited to generating only these two types of simulation code. Any other type of suitable code, an example of which is VHDL, may be generated.
  • GUI graphical user interface
  • logic simulations include cycle-based simulations and event-driven simulations.
  • An event-driven simulation converges on an output of the logic design through multiple cycles. Convergence requires several passes through "logic cones" defined by the computer code .
  • a logic cone 32 is an ordered arrangement in which one logic element 34 passes its output 36 to multiple logic elements 38, which, in turn, pass their outputs 40 to other logic elements 42, and so on. Combining state and combinatorial logic elements within a single logic cone requires multiple passes (iterations) through that cone in order for the state elements to achieve the appropriate states and thus provide the proper output.
  • cycle-based simulations assume that the computer code is ordered correctly, meaning that each logic cone can be traced, with only one iteration, to provide an output. Thus, cycle-based simulations require only a single pass through a logic cone in order to determine its output. As a result, cycle-based simulators are faster, e.g., an order of magnitude faster, than event-driven simulators
  • cycle-based simulators require only one pass, versus multiple passes, through a logic cone
  • a platform such as an Intel® Pentium® III microprocessor running at 700 MHz (megahertz)
  • simulating 100 cycles of a complex logic design with an event-driven model might take 10 seconds, whereas performing the same simulation using a cycle-based simulator might take 1 second.
  • cycle-based simulations are generally preferred over event-driven simulations. Since separating the combinatorial logic from the state logic facilitates cycle-based simulations, process 10 provides a significant advantage to logic designers.
  • process 10 decides (109) whether to generate C++ simulation code or Verilog simulation code from the intermediate computer code. This decision (109) is typically made based on an input from the logic designer. If process 10 decides (109) that Verilog code is to be generated, process 10 generates (110) the Verilog code from the intermediate code.
  • the Verilog code may be generated from the intermediate code using a translator program (not shown) and a database (not shown) that correlates the connections defined by the intermediate code to Verilog code. Parameters or values in the intermediate code are identified and input to the Verilog code .
  • process 10 runs (111) the Verilog code through an event- driven simulator program.
  • the event-driven simulator program runs, and provides inputs (e.g., clock signals), to the Verilog code to generate a simulation of the operation of the logic design.
  • inputs e.g., clock signals
  • process 10 runs (111) the Verilog code through an event- driven simulator program.
  • the event-driven simulator program runs, and provides inputs (e.g., clock signals), to the Verilog code to generate a simulation of the operation of the logic design.
  • inputs e.g., clock signals
  • process 10 decides (109) to generate C++ code from the intermediate code (based, e.g., on an input from the logic designer) , process 10 generates (112a) a topology of each graphic element of the logic design based on the intermediate code.
  • process 10 traces the logic gates through the intermediate code for each graphic element in order to determine how the logic gates are connected to one another. Essentially, process 10 obtains a gate topology from the intermediate code.
  • Process 10 identifies (113) clock domains in the topology.
  • a clock domain comprises a set of logic elements (gates) that are triggered in response to the same clock pulse. For example, referring to Fig.
  • logic gates 50 to 60 are all triggered in response to clock pulse 62, which is initially applied to logic gates 50, 51.
  • the intermediate code provided by the designer indicates which clock pulses trigger which logic gates.
  • process 10 traces clock pulses through the logic gates in order to identify the clock domains. Once the clock domains are identified, process 10 determines (114a) the order in which the logic gates are to be simulated. This is referred to as "code ordering", since the order in which the gates are simulated dictates the order of the resulting C++ code.
  • Process 10 performs code ordering by tracing through each clock domain separately and assigning numerical values to the logic gates.
  • each clock domain 64, 66, 68 can be thought of as a tree having a trunk 70 and branches 72.
  • Process 10 starts at the trunk, in this case logic gate 50, and traverses the tree through to the end of each branch. So, process 10 numbers the trunk (gate 50) "1", then, for branch 74, numbers gate 52 "2", gate 55 "3", gate 56 "4", and so forth. To number another branch, process 10 starts at the trunk and then proceeds in the foregoing manner.
  • process 10 examines each clock domain and extracts, from each clock domain, the logic gates numbered "1". These gates are stored in an area of a database. Once this is done, process 10 examines each clock domain and extracts, from each domain, the logic gates numbered "2". These gates are stored in another area of the database. This is repeated then, for each set of logic gates numbered "3", "4", etc., until sets of all numbered logic gates are stored in different areas of the database. Using this database, process 10 generates simulation code (in this embodiment, C++ code) for the logic gates.
  • C++ code simulation code
  • process 10 generates C++ code. That is, process 10 defines the connections of the "1" gates, their states, clocks, and other dependencies in C++ code.
  • process 10 generates C++ code to simulate the set of logic gates assigned number "2".
  • process 10 generates C++ code to simulate the set of logic gates assigned number "3". This is repeated in sequence until C++ code is generated for all sets of logic gates (e.g., "4", "5", etc.) in the database .
  • the C++ simulation code may be generated from the intermediate code using a translation program (not shown) and referencing a database (not shown) that correlates the connections and functions specified in the intermediate code to C++ code. Any parameters or values included in the intermediate code are identified and applied to the C++ code .
  • process 10 may run (115) the C++ code through a cycle-based simulator program (this path is indicated by the dotted line in Fig. 1) .
  • the cycle-based simulator program provides inputs to, and runs, the C++ code to provide a simulation of the operation of the logic design.
  • To obtain an output of the logic design using the cycle-based simulation one pass through each logic gate defined by the C++ code is made.
  • a C++ compiler may be unable to compile the C++ code due to its size (i.e., the generated
  • C++ code may be too long for a standard C++ compiler) . In these instances, further processing may be required. This processing includes dividing (116) the C++ code into segments based on the numbered logic gates; writing (117) the divided C++ code into separate C++ files and batch files, and compiling the separate C++ files. Thus, in order to use a standard compiler, process 10 compiles C++ code for each set of numbered logic gates. The compiled C++ code may then be run through the cycle-based simulator program separately.
  • Process 10 takes advantage of C++ inheritance capabilities to enable the C++ compiler to handle the large numbers of states that may result from a given logic model. That is, the state of an initial logic gate may be defined as a C++ class.
  • the states of logic gates that depend from the initial logic gate may refer back to the state of the initial logic gate without actually including data for the state of the initial logic gate. This way, if the state of a subsequent gate depends on the state of a preceding gate, it is possible to obtain the state of the preceding gate without actually adding more data to the database.
  • FIG. 6 shows a logic design 80 that contains both combinatorial logic elements (e.g., 82) and state logic elements (e.g., 84).
  • relevant design information such as the number of pipeline stages in the design (in this case, there are eight such stages 85 to 92) . Other relevant information may also be obtained.
  • FIG. 7 shows a computer 94 for performing simulations using process 10.
  • Computer 94 includes a processor 96, a memory 98, and a storage medium 100 (e.g., a hard disk) (see view 102) .
  • Storage medium 100 stores data 104 which defines a logic design, a graphics library 106 for implementing the logic design, intermediate code 108, simulation code 110 that represents the logic design, logic simulator programs 112 (e.g., event-driven and/or cycle-based), and machine- executable instructions 114, which are executed by processor 96 out of memory 98 to perform process 10 on data 104.
  • Process 10 is not limited to use with the hardware and software of Fig. 7; it may find applicability in any computing or processing environment. Process 10 may be implemented in hardware, software, or a combination of the two.
  • Process 10 may be implemented in computer programs executing on programmable computers or other machines that each includes a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements) , at least one input device, and one or more output devices .
  • Program code may be applied to data entered using an input device, such as a mouse or a keyboard, to perform process 10 and to generate a simulation.
  • Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system.
  • the programs can be implemented in assembly or machine language.
  • the language may be a compiled or an interpreted language.
  • Each computer program may be stored on an article of manufacture, such as a storage medium or device (e.g., CD- ROM, hard disk, or magnetic diskette) , that is readable by a general or special purpose programmable machine for configuring and operating the machine when the storage medium or device is read by the machine to perform process 10.
  • Process 10 may also be implemented as a machine- readable storage medium, configured with a computer program, where, upon execution, instructions in the computer program cause the machine to operate in accordance with process 10.
  • the invention is not limited to the specific embodiments set forth above. For example, process 10 is not limited to simulating only combinatorial and state logic elements. Other logic elements may be simulated.
  • Process 10 is not limited to the computer languages set forth above, e.g., Verilog, C++, and VHDL. It may be implemented using any appropriate computer language. Process 10 is also not limited to the order set forth in Fig. 1. That is, the blocks of process 10 may be executed in a different order than that shown to produce an acceptable result.

Abstract

Simulating a logic design comprised of combinatorial logic and state logic includes representing the combinatorial logic and the state logic using separate graphic elements and associating computer code that simulates portions of the logic design with a graphic element that represents the combinatorial logic and with a graphic element that represents the state logic.

Description

SIMULATING A LOGIC DESIGN
TECHNICAL FIELD
This invention relates to simulating a logic design comprised of combinatorial logic and state logic.
BACKGROUND
Logic designs for computer chips typically include combinatorial elements and state elements. Combinatorial elements, such as AND gates and OR gates, combine two or more logic states to produce an output. State elements, such as latches and flip-flops (FFs) , hold a logic state for a period of time, usually until receipt of an external clock signal . Computer languages exist which allow designers to simulate logic designs, including combinatorial and state elements, prior to forming the logic on silicon. Examples of such languages include Verilog and Very High-Level Design Language (VHDL) . Using these languages, a designer can write code to simulate a logic design, then execute the code in order to determine if the logic design performs properly.
Standard computer languages may also be used to simulate a logic design. DESCRIPTION OF THE DRAWINGS
Fig. 1 is a flowchart showing a process for generating simulation code for a logic design.
Fig. 2 is a block diagram of a logic design containing individual state and combinatorial elements .
Fig. 3 is a block diagram of an alternative logic design containing state and combinatorial elements .
Fig. 4 shows a logic cone.
Fig. 5 shows clock domains of a logic design. Fig. 6 is a block diagram of an alternative logic design containing state and combinatorial elements.
Fig. 7 is a block diagram of a computer system on which the process of Fig. 1 may be performed.
DESCRIPTION
Referring to Fig. 1, a process 10 is shown for simulating a logic design comprised of combinatorial logic and state logic. Process 10 may be implemented using a computer program running on a computer or other type of machine, as described in more detail below.
In operation, process 10 selects (101) , in response to a logic designer's input, graphic elements to generate a block diagram representation of a logic design. The graphics elements are selected from a graphics library and may include combinatorial logic and state logic elements . Graphics elements in the library may be definable or may have predefined functions. For example, the library may contain software objects that perform the function of a flip flop (FF) or a latch. The library may also contain graphics elements that are undefined, i.e., that have no code associated with them.
Each block in the block diagram may represent individual elements or combinations of elements. For example, Fig. 2 shows a graphical representation of a logic design 12 containing combinatorial logic elements 14 to 19 and state logic elements 22 and 24. In logic design 12, each block represents a single combinatorial element (e.g., multiplexers 18 and 19) or state element (e.g., FFs 22 and 24) . By contrast, in logic design 26 (Fig. 3), the functionality of several combinatorial elements is contained in a single combinatorial block 28 and the function of several state elements is contained in a single state block 30.
Once the graphical representation of the logic design has been completed (e.g., Figs. 2 and 3), process 10 performs (102) an error check on the design to determine if there are any problems with the design. For example, process 10 determines if there are any unterminated or inconsistent connections in the design. If any such problems are detected (103) , process 10 issues (104) an error message to the logic designer. The error message may specify the nature of the problem and its location within the logic design. The logic designer is then given the opportunity to correct the problem before process 10 moves forward.
Referring to Fig. 3, process 10 associates (105) computer code that simulates the logic design with each of the graphic elements. For example, process 10 associates computer code with combinatorial logic element 28 to define its function and with state logic element 30 to define its function. The same is true for the logic elements of Fig. 2. The computer code is generated as follows.
Process 10 receives (106) intermediate computer code that is written by the logic designer. The computer code is "intermediate" in the sense that it is an application- specific code, from which simulation code, such as C++ or Verilog, may be generated. In one embodiment, the intermediate computer code includes a netlist that defines logic elements and the interconnections of those elements .
The intermediate code is entered by the designer for each graphic element. For example, the designer may select a graphic element and, using an interactive tool, enter computer code to define the combinatorial (or state) logic represented by that element. The designer may use software objects from the library, such as FFs, latches, AND gates, etc., in the intermediate code. Several objects may be combined within a single graphic element by writing intermediate computer code to effect the combination. For example, an array of FFs may be produced by combining objects from the library via the intermediate code. Graphic element 30 (Fig. 3) contains such an array of FFs.
When designing the logic, the logic designer is constrained by process 10 to represent combinatorial logic and state logic using separate graphic elements .
Representing the design using separate state logic and combinatorial logic elements ensures that each separate logic element will achieve its desired state with one iteration, making cycle-based simulation (defined below) possible. Accordingly, process 10 performs (107) an error check to determine if the intermediate code written by the designer includes state logic in combinatorial graphic elements, or vice versa. If a state logic element contains combinatorial logic or a combinatorial logic element contains state logic, process 10 issues (108) an error message to the designer. The error message may define the problem (i.e., interleaved combinatorial and state logic) and the graphic element that contains the problem. In this embodiment, process 10 requires the designer to correct the problem before process 10 proceeds further. To correct such a problem, the logic designer places the combinatorial logic and the state logic in different graphic elements (i.e., blocks) .
Assuming that there are no problems with the design, or that the problems have been corrected, process 10 generates simulation code for the design. In this embodiment, process 10 generates either Verilog computer code or C++ computer code from the intermediate computer code. However, the simulation code is not limited to generating only these two types of simulation code. Any other type of suitable code, an example of which is VHDL, may be generated.
Generally speaking, the designer may select, e.g., via a graphical user interface (GUI) (not shown), which computer code (C++ or Verilog) process 10 will generate. The type of simulation desired may dictate the computer code that process 10 will generate, as described below.
In more detail, two types of logic simulations include cycle-based simulations and event-driven simulations. An event-driven simulation converges on an output of the logic design through multiple cycles. Convergence requires several passes through "logic cones" defined by the computer code .
Referring to Fig. 4, a logic cone 32 is an ordered arrangement in which one logic element 34 passes its output 36 to multiple logic elements 38, which, in turn, pass their outputs 40 to other logic elements 42, and so on. Combining state and combinatorial logic elements within a single logic cone requires multiple passes (iterations) through that cone in order for the state elements to achieve the appropriate states and thus provide the proper output.
The syntax of some simulation languages, such as Verilog, is particularly amenable to event-driven simulations, since they interleave state and combinatorial logic. By contrast, C++ can be used to effect cycle-based simulations. Cycle-based simulations assume that the computer code is ordered correctly, meaning that each logic cone can be traced, with only one iteration, to provide an output. Thus, cycle-based simulations require only a single pass through a logic cone in order to determine its output. As a result, cycle-based simulators are faster, e.g., an order of magnitude faster, than event-driven simulators
(since cycle-based simulators require only one pass, versus multiple passes, through a logic cone) . So, for example, on a platform, such as an Intel® Pentium® III microprocessor running at 700 MHz (megahertz) , simulating 100 cycles of a complex logic design with an event-driven model might take 10 seconds, whereas performing the same simulation using a cycle-based simulator might take 1 second.
For the foregoing reasons, cycle-based simulations are generally preferred over event-driven simulations. Since separating the combinatorial logic from the state logic facilitates cycle-based simulations, process 10 provides a significant advantage to logic designers.
Referring back to Fig. 1, process 10 decides (109) whether to generate C++ simulation code or Verilog simulation code from the intermediate computer code. This decision (109) is typically made based on an input from the logic designer. If process 10 decides (109) that Verilog code is to be generated, process 10 generates (110) the Verilog code from the intermediate code. The Verilog code may be generated from the intermediate code using a translator program (not shown) and a database (not shown) that correlates the connections defined by the intermediate code to Verilog code. Parameters or values in the intermediate code are identified and input to the Verilog code .
After process 10 generates (110) the Verilog code, process 10 runs (111) the Verilog code through an event- driven simulator program. The event-driven simulator program runs, and provides inputs (e.g., clock signals), to the Verilog code to generate a simulation of the operation of the logic design. To obtain an output of the logic design using the event-driven simulation, more than one pass through each logic cone defined by the Verilog code may be required.
If process 10 decides (109) to generate C++ code from the intermediate code (based, e.g., on an input from the logic designer) , process 10 generates (112a) a topology of each graphic element of the logic design based on the intermediate code. In more detail, process 10 traces the logic gates through the intermediate code for each graphic element in order to determine how the logic gates are connected to one another. Essentially, process 10 obtains a gate topology from the intermediate code. Process 10 identifies (113) clock domains in the topology. In this context, a clock domain comprises a set of logic elements (gates) that are triggered in response to the same clock pulse. For example, referring to Fig. 5, logic gates 50 to 60 are all triggered in response to clock pulse 62, which is initially applied to logic gates 50, 51. The intermediate code provided by the designer indicates which clock pulses trigger which logic gates. Accordingly, process 10 traces clock pulses through the logic gates in order to identify the clock domains. Once the clock domains are identified, process 10 determines (114a) the order in which the logic gates are to be simulated. This is referred to as "code ordering", since the order in which the gates are simulated dictates the order of the resulting C++ code. Process 10 performs code ordering by tracing through each clock domain separately and assigning numerical values to the logic gates.
Referring to Fig. 5, each clock domain 64, 66, 68 can be thought of as a tree having a trunk 70 and branches 72. Process 10 starts at the trunk, in this case logic gate 50, and traverses the tree through to the end of each branch. So, process 10 numbers the trunk (gate 50) "1", then, for branch 74, numbers gate 52 "2", gate 55 "3", gate 56 "4", and so forth. To number another branch, process 10 starts at the trunk and then proceeds in the foregoing manner.
Occasional renumbering may be required, resulting in branches whose gates are not sequentially numbered. This does not present a problem, so long as the assigned number of a child branch is higher than the assigned number of a parent branch. By way of example, assume that there are two starting points (trunks) for clock domain 64. These two starting points are gates 50 and 51. Since both are starting points, they are both assigned number "1". Further assume that branch 72 is first traced starting with gate 51, resulting in gate 51 being assigned a "1", gate 52 being assigned a "2", gate 55 being assigned a "3", and so forth. When branch 72 is retraced starting at gate 50 through path 73, gate 55 is renumbered "4", gate 56 is renumbered "5", and so forth. This may occur as often as necessary in order to ensure that each branch is numbered correctly.
Following the numbering, process 10 examines each clock domain and extracts, from each clock domain, the logic gates numbered "1". These gates are stored in an area of a database. Once this is done, process 10 examines each clock domain and extracts, from each domain, the logic gates numbered "2". These gates are stored in another area of the database. This is repeated then, for each set of logic gates numbered "3", "4", etc., until sets of all numbered logic gates are stored in different areas of the database. Using this database, process 10 generates simulation code (in this embodiment, C++ code) for the logic gates.
In more detail, for the set of logic gates assigned number "1", process 10 generates C++ code. That is, process 10 defines the connections of the "1" gates, their states, clocks, and other dependencies in C++ code. Following the
C++ code for the set of logic gates assigned number "1", process 10 generates C++ code to simulate the set of logic gates assigned number "2". Following the C++ code for the set of logic gates assigned number "2", process 10 generates C++ code to simulate the set of logic gates assigned number "3". This is repeated in sequence until C++ code is generated for all sets of logic gates (e.g., "4", "5", etc.) in the database .
The C++ simulation code may be generated from the intermediate code using a translation program (not shown) and referencing a database (not shown) that correlates the connections and functions specified in the intermediate code to C++ code. Any parameters or values included in the intermediate code are identified and applied to the C++ code .
After process 10 generates the C++ code, process 10 may run (115) the C++ code through a cycle-based simulator program (this path is indicated by the dotted line in Fig. 1) . The cycle-based simulator program provides inputs to, and runs, the C++ code to provide a simulation of the operation of the logic design. To obtain an output of the logic design using the cycle-based simulation, one pass through each logic gate defined by the C++ code is made. In some instances, a C++ compiler may be unable to compile the C++ code due to its size (i.e., the generated
C++ code may be too long for a standard C++ compiler) . In these instances, further processing may be required. This processing includes dividing (116) the C++ code into segments based on the numbered logic gates; writing (117) the divided C++ code into separate C++ files and batch files, and compiling the separate C++ files. Thus, in order to use a standard compiler, process 10 compiles C++ code for each set of numbered logic gates. The compiled C++ code may then be run through the cycle-based simulator program separately.
The states of each logic gate are stored in a database as well. Process 10 takes advantage of C++ inheritance capabilities to enable the C++ compiler to handle the large numbers of states that may result from a given logic model. That is, the state of an initial logic gate may be defined as a C++ class. The states of logic gates that depend from the initial logic gate may refer back to the state of the initial logic gate without actually including data for the state of the initial logic gate. This way, if the state of a subsequent gate depends on the state of a preceding gate, it is possible to obtain the state of the preceding gate without actually adding more data to the database.
Keeping the combinatorial logic and state logic separate according to process 10 makes it possible to identify clock domains and, thus, to perform cycle-based simulations. The advantages of cycle-based simulations are noted above.
Another advantage to keeping combinatorial and state logic separate is that it facilitates manual review of logic designs. Representing the different logic types (e.g., state and combinatorial) in different colors further facilitates the manual review. For example, Fig. 6 shows a logic design 80 that contains both combinatorial logic elements (e.g., 82) and state logic elements (e.g., 84). Simply by looking at logic design 80, it is possible to obtain relevant design information, such as the number of pipeline stages in the design (in this case, there are eight such stages 85 to 92) . Other relevant information may also be obtained. Additionally, by explicitly calling-out state logic elements while in the design environment, it is relatively easy to develop heuristic tools for providing time/size guidance for a given set of design parameters, such as operating frequency and/or chip area. Fig. 7 shows a computer 94 for performing simulations using process 10. Computer 94 includes a processor 96, a memory 98, and a storage medium 100 (e.g., a hard disk) (see view 102) . Storage medium 100 stores data 104 which defines a logic design, a graphics library 106 for implementing the logic design, intermediate code 108, simulation code 110 that represents the logic design, logic simulator programs 112 (e.g., event-driven and/or cycle-based), and machine- executable instructions 114, which are executed by processor 96 out of memory 98 to perform process 10 on data 104. Process 10, however, is not limited to use with the hardware and software of Fig. 7; it may find applicability in any computing or processing environment. Process 10 may be implemented in hardware, software, or a combination of the two. Process 10 may be implemented in computer programs executing on programmable computers or other machines that each includes a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements) , at least one input device, and one or more output devices . Program code may be applied to data entered using an input device, such as a mouse or a keyboard, to perform process 10 and to generate a simulation.
Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language. The language may be a compiled or an interpreted language.
Each computer program may be stored on an article of manufacture, such as a storage medium or device (e.g., CD- ROM, hard disk, or magnetic diskette) , that is readable by a general or special purpose programmable machine for configuring and operating the machine when the storage medium or device is read by the machine to perform process 10. Process 10 may also be implemented as a machine- readable storage medium, configured with a computer program, where, upon execution, instructions in the computer program cause the machine to operate in accordance with process 10. The invention is not limited to the specific embodiments set forth above. For example, process 10 is not limited to simulating only combinatorial and state logic elements. Other logic elements may be simulated. Process 10 is not limited to the computer languages set forth above, e.g., Verilog, C++, and VHDL. It may be implemented using any appropriate computer language. Process 10 is also not limited to the order set forth in Fig. 1. That is, the blocks of process 10 may be executed in a different order than that shown to produce an acceptable result.
Other embodiments not described herein are also within the scope of the following claims. What is claimed is :

Claims

1. A method of simulating a logic design comprised of combinatorial logic and state logic, the method comprising: representing the combinatorial logic and the state logic using separate graphic elements; and associating computer code that simulates portions of the logic design with a graphic element that represents the combinatorial logic and with a graphic element that represents the state logic.
2. The method of claim 1, further comprising: performing an error check on the graphic elements to determine if a single graphic element represents both combinatorial logic and state logic; and issuing an error message if the single graphic element represents both combinatorial logic and state logic.
3. The method of claim 1, further comprising: generating intermediate code that simulates the logic design; and generating the computer code from the intermediate code .
4. The method of claim 1, wherein the computer code comprises one of C++ and Verilog.
5. The method of claim 4, wherein, if the computer code comprises C++, the method further comprises running the code through a cycle-based simulator to provide a simulation of the operation of the logic design.
6. The method of claim 4, wherein, if the computer code comprises Verilog, the method further comprises running the code through an event-driven simulator to provide a simulation of the operation of the logic design.
7. The method of claim 1, further comprising: generating a topology of the logic design based on the graphic elements; obtaining clock domains from the topology; and generating the computer code based on the clock domains .
8. The method of claim 7, further comprising: dividing the computer code into segments based on the logic cones; and compiling the segments separately.
9. The method of claim 1, wherein state elements comprise elements which hold a particular logic state for a period of time and combinatorial logic elements comprise elements which combine two or more states to produce an output .
10. The method of claim 1, wherein the graphic elements comprise block diagrams .
11. An article comprising a machine-readable medium which stores executable instructions to simulate a logic design comprised of combinatorial logic and state logic, the instructions causing a machine to: represent the combinatorial logic and the state logic using separate graphic elements; and associate computer code that simulates portions of the logic design with a graphic element that represents the combinatorial logic and with a graphic element that represents the state logic.
12. The article of claim 11, further comprising instructions that cause the machine to: perform an error check on the graphic elements to determine if a single graphic element represents both combinatorial logic and state logic; and issue an error message if the single graphic element represents both combinatorial logic and state logic.
13. The article of claim 11, further comprising instructions that cause the machine to: generate intermediate code that simulates the logic design; and generate the computer code from the intermediate code.
14. The article of claim 11, wherein the computer code comprises one of C++ and Verilog.
15. The article of claim 14, wherein, if the computer code comprises C++, the article further comprises instructions that cause the machine to run the code through a cycle-based simulator to provide a simulation of the operation of the logic design.
16. The article of claim 14, wherein, if the computer code comprises Verilog, the article further comprises instructions that cause the machine to run the code through an event-driven simulator to provide a simulation of the operation of the logic design.
17. The article of claim 11, further comprising instructions that cause the machine to: generate a topology of the logic design based on the graphic elements; obtain clock domains from the topology; and generate the computer code based on the clock domains.
18. The article of claim 17, further comprising instructions that cause the machine to: divide the computer code into segments based on the logic cones; and compile the segments separately.
19. The article of claim 11, wherein state elements comprise elements which hold a particular logic state for a period of time and combinatorial logic elements comprise elements which combine two or more states to produce an output .
20. The article of claim 11, wherein the graphic elements comprise block diagrams.
21. An apparatus for simulating a logic design comprised of combinatorial logic and state logic, the apparatus comprising: a memory that stores executable instructions; and a processor that executes the instructions to: represent the combinatorial logic and the state logic using separate graphic elements; and associate computer code that simulates portions of the logic design with a graphic element that represents the combinatorial logic and with a graphic element that represents the state logic.
22. The apparatus of claim 21, wherein the processor executes the instructions to: perform an error check on the graphic elements to determine if a single graphic element represents both combinatorial logic and state logic; and issue an error message if the single graphic element represents both combinatorial logic and state logic.
23. The apparatus of claim 21, wherein the processor executes the instructions to: generate intermediate code that simulates the logic design; and generate the computer code from the intermediate code.
24. The apparatus of claim 21, wherein the computer code comprises one of C++ and Verilog.
25. The apparatus of claim 24, wherein, if the computer code comprises C++, the apparatus further comprises executes instructions that cause the machine to run the code through a cycle-based simulator to provide a simulation of the operation of the logic design.
26. The apparatus of claim 24, wherein, if the computer code comprises Verilog, the apparatus further executes instructions that cause the machine to run the code through an event-driven simulator to provide a simulation of the operation of the logic design.
27. The apparatus of claim 21, wherein the processor executes the instructions to: generate a topology of the logic design based on the graphic elements; obtain clock domains from the topology; and generate the computer code based on the clock domains .
28. The apparatus of claim 27, wherein the processor executes the instructions to: divide the computer code into segments based on the logic cones; and compile the segments separately.
29. The apparatus of claim 21, wherein state elements comprise elements which hold a particular logic state for a period of time and combinatorial logic elements comprise elements which combine two or more states to produce an output .
30. The apparatus of claim 21, wherein the graphic elements comprise block diagrams.
PCT/US2002/026852 2001-08-29 2002-08-23 Simulating a logic design WO2003021492A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP02768673A EP1421526A2 (en) 2001-08-29 2002-08-23 Simulating a logic design

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/941,952 US7107201B2 (en) 2001-08-29 2001-08-29 Simulating a logic design
US09/941,952 2001-08-29

Publications (2)

Publication Number Publication Date
WO2003021492A2 true WO2003021492A2 (en) 2003-03-13
WO2003021492A3 WO2003021492A3 (en) 2004-02-19

Family

ID=25477345

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/026852 WO2003021492A2 (en) 2001-08-29 2002-08-23 Simulating a logic design

Country Status (4)

Country Link
US (1) US7107201B2 (en)
EP (1) EP1421526A2 (en)
TW (1) TWI255411B (en)
WO (1) WO2003021492A2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130784B2 (en) * 2001-08-29 2006-10-31 Intel Corporation Logic simulation
US20040093198A1 (en) * 2002-11-08 2004-05-13 Carbon Design Systems Hardware simulation with access restrictions
US7100132B2 (en) * 2004-03-01 2006-08-29 Agilent Technologies, Inc. Source synchronous timing extraction, cyclization and sampling
US8515727B2 (en) * 2008-03-19 2013-08-20 International Business Machines Corporation Automatic logic model build process with autonomous quality checking

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0433066A2 (en) * 1989-12-15 1991-06-19 Hewlett-Packard Company Common symbol library architecture
US5220512A (en) * 1990-04-19 1993-06-15 Lsi Logic Corporation System for simultaneous, interactive presentation of electronic circuit diagrams and simulation data
EP0901088A2 (en) * 1997-09-02 1999-03-10 Hewlett-Packard Company Framework for rules checking
EP1065611A2 (en) * 1995-10-23 2001-01-03 Interuniversitair Microelektronica Centrum Vzw A design environment for hardware/software co-design

Family Cites Families (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703435A (en) 1984-07-16 1987-10-27 International Business Machines Corporation Logic Synthesizer
US5212650A (en) 1986-09-12 1993-05-18 Digital Equipment Corporation Procedure and data structure for synthesis and transformation of logic circuit designs
US5267175A (en) 1986-09-12 1993-11-30 Digital Equipment Corporation Data base access mechanism for rules utilized by a synthesis procedure for logic circuit design
US5301318A (en) 1988-05-13 1994-04-05 Silicon Systems, Inc. Hierarchical netlist extraction tool
US4970664A (en) 1988-06-10 1990-11-13 Kaiser Richard R Critical path analyzer with path context window
US5371851A (en) 1989-04-26 1994-12-06 Credence Systems Corporation Graphical data base editor
US5128871A (en) 1990-03-07 1992-07-07 Advanced Micro Devices, Inc. Apparatus and method for allocation of resoures in programmable logic devices
US5384710A (en) 1990-03-13 1995-01-24 National Semiconductor Corporation Circuit level netlist generation
US5278769A (en) 1991-04-12 1994-01-11 Lsi Logic Corporation Automatic logic model generation from schematic data base
US5544067A (en) 1990-04-06 1996-08-06 Lsi Logic Corporation Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation
US5572437A (en) 1990-04-06 1996-11-05 Lsi Logic Corporation Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models
US5553002A (en) 1990-04-06 1996-09-03 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, using milestone matrix incorporated into user-interface
US5287289A (en) 1990-04-13 1994-02-15 Hitachi, Ltd. Logic synthesis method
US5258919A (en) 1990-06-28 1993-11-02 National Semiconductor Corporation Structured logic design method using figures of merit and a flowchart methodology
US5717928A (en) 1990-11-07 1998-02-10 Matra Hachette Sa System and a method for obtaining a mask programmable device using a logic description and a field programmable device implementing the logic description
US5297053A (en) 1991-06-04 1994-03-22 Computervision Corporation Method and apparatus for deferred package assignment for components of an electronic circuit for a printed circuit board
US5615356A (en) 1992-04-21 1997-03-25 Cpu Technology, Inc. Method and apparatus for interactively displaying signal information during computer simulation of an electrical circuit
JPH05315448A (en) 1992-04-27 1993-11-26 Nec Corp Integrated circuit device and its layout method
US5666289A (en) 1992-10-07 1997-09-09 Lsi Logic Corporation Flexible design system
US5694579A (en) 1993-02-18 1997-12-02 Digital Equipment Corporation Using pre-analysis and a 2-state optimistic model to reduce computation in transistor circuit simulation
JP2815281B2 (en) 1993-04-19 1998-10-27 株式会社ピーエフユー Digital circuit design support system and method
JP2768889B2 (en) 1993-06-07 1998-06-25 株式会社東芝 Logic simulation equipment
JP2856640B2 (en) 1993-07-08 1999-02-10 株式会社日立製作所 Logic schematic editor system
US5513119A (en) 1993-08-10 1996-04-30 Mitsubishi Semiconductor America, Inc. Hierarchical floorplanner for gate array design layout
JP3154885B2 (en) 1993-12-28 2001-04-09 株式会社東芝 Application specific integrated circuit and method of configuring the same
US5506788A (en) 1994-01-13 1996-04-09 Lsi Logic Corporation Similarity-extraction force-oriented floor planner
US5650947A (en) * 1994-01-31 1997-07-22 Fujitsu Limited Logic simulation method and logic simulator
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
JP2972540B2 (en) 1994-03-24 1999-11-08 松下電器産業株式会社 LSI automatic design system and LSI automatic design method
US5937190A (en) 1994-04-12 1999-08-10 Synopsys, Inc. Architecture and methods for a hardware description language source level analysis and debugging system
US6132109A (en) 1994-04-12 2000-10-17 Synopsys, Inc. Architecture and methods for a hardware description language source level debugging system
US5475605A (en) 1994-05-26 1995-12-12 Cadence Design Systems, Inc. Timing analysis for logic optimization using target library delay values
US5604889A (en) 1994-06-15 1997-02-18 Texas Instruments Incorporated Memory management system for checkpointed logic simulator with increased locality of data
US6208954B1 (en) 1994-09-16 2001-03-27 Wind River Systems, Inc. Method for scheduling event sequences
US5903469A (en) 1994-11-08 1999-05-11 Synopsys, Inc. Method of extracting layout parasitics for nets of an integrated circuit using a connectivity-based approach
US5629857A (en) 1994-11-15 1997-05-13 International Business Machines Corporation Method and system for indicating a status of a circuit design
JP2912174B2 (en) 1994-12-27 1999-06-28 日本電気株式会社 Library group and semiconductor integrated circuit using the same
JP3351651B2 (en) 1995-04-07 2002-12-03 富士通株式会社 Interactive circuit design equipment
JPH08287111A (en) 1995-04-14 1996-11-01 Nec Ic Microcomput Syst Ltd Automatic layout system
US5706476A (en) 1995-06-05 1998-01-06 Synopsys, Inc. Method and apparatus for use of the undefined logic state and mixed multiple-state abstractions in digital logic simulation
JP3042761B2 (en) * 1995-08-07 2000-05-22 株式会社日立製作所 Program data generation method for programmable device in logic emulation system and program data generation device for programmable device
US5841663A (en) 1995-09-14 1998-11-24 Vlsi Technology, Inc. Apparatus and method for synthesizing integrated circuits using parameterized HDL modules
US5809283A (en) 1995-09-29 1998-09-15 Synopsys, Inc. Simulator for simulating systems including mixed triggers
US5831869A (en) 1995-12-15 1998-11-03 Unisys Corporation Method of compacting data representations of hierarchical logic designs used for static timing analysis
US5802348A (en) * 1995-12-18 1998-09-01 Virtual Machine Works, Inc. Logic analysis system for logic emulation systems
US6117183A (en) 1996-01-08 2000-09-12 Fujitsu Limited Interactive CAD apparatus for designing packaging of logic circuit design
US5724250A (en) 1996-02-07 1998-03-03 Unisys Corporation Method and apparatus for performing drive strength adjust optimization in a circuit design
US5963724A (en) 1996-02-16 1999-10-05 Analogy, Inc. Component-based analog and mixed-signal simulation model development
US6236956B1 (en) 1996-02-16 2001-05-22 Avant! Corporation Component-based analog and mixed-signal simulation model development including newton step manager
US5673198A (en) 1996-03-29 1997-09-30 Xilinx, Inc. Concurrent electronic circuit design and implementation
US5905883A (en) 1996-04-15 1999-05-18 Sun Microsystems, Inc. Verification system for circuit simulator
US6234658B1 (en) 1996-06-07 2001-05-22 Duality Semiconductor, Inc. Method and apparatus for producing signal processing circuits in the delta sigma domain
US5892682A (en) 1996-06-17 1999-04-06 Motorola, Inc. Method and apparatus for generating a hierarchical interconnection description of an integrated circuit design and using the description to edit the integrated circuit design
US5757655A (en) 1996-08-26 1998-05-26 Micron Technology, Inc. Method and system for producing dynamic property forms and compacting property databases
US5949692A (en) 1996-08-28 1999-09-07 Synopsys, Inc. Hierarchical scan architecture for design for test applications
US6102964A (en) 1996-10-28 2000-08-15 Altera Corporation Fitting for incremental compilation of electronic designs
US6120549A (en) 1997-01-06 2000-09-19 Xilinx, Inc. Method and apparatus for generating optimized functional macros
US6516456B1 (en) 1997-01-27 2003-02-04 Unisys Corporation Method and apparatus for selectively viewing nets within a database editor tool
US6233540B1 (en) 1997-03-14 2001-05-15 Interuniversitair Micro-Elektronica Centrum Design environment and a method for generating an implementable description of a digital system
US6389379B1 (en) * 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
JPH10327047A (en) 1997-05-22 1998-12-08 Sony Corp Semiconductor integrated circuit and its design method
US6053947A (en) 1997-05-31 2000-04-25 Lucent Technologies, Inc. Simulation model using object-oriented programming
US6152612A (en) 1997-06-09 2000-11-28 Synopsys, Inc. System and method for system level and circuit level modeling and design simulation using C++
US6066179A (en) 1997-06-13 2000-05-23 University Of Edinburgh Property estimation of an integrated circuit
US6233723B1 (en) 1997-08-28 2001-05-15 Vlsi Technology, Inc. Circuit behavioral information analysis apparatus and a method of analyzing behavioral information of a circuit
US5974242A (en) 1997-09-25 1999-10-26 The United States Of America As Represented By The Secretary Of The Army Methods and computer programs for minimizing logic circuit design using identity cells
JPH11126215A (en) 1997-10-22 1999-05-11 Nec Corp Delay analytical result display device
JP4128251B2 (en) 1997-10-23 2008-07-30 富士通株式会社 Wiring density prediction method and cell placement apparatus
US6135647A (en) 1997-10-23 2000-10-24 Lsi Logic Corporation System and method for representing a system level RTL design using HDL independent objects and translation to synthesizable RTL code
US6421815B1 (en) * 1998-01-09 2002-07-16 Synopsys, Inc. Method and apparatus for optimized partitioning of finite state machines synthesized from hierarchical high-level descriptions
US6145117A (en) 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
US6292931B1 (en) 1998-02-20 2001-09-18 Lsi Logic Corporation RTL analysis tool
US6243851B1 (en) 1998-03-27 2001-06-05 Xilinx, Inc. Heterogeneous method for determining module placement in FPGAs
US6178541B1 (en) 1998-03-30 2001-01-23 Lsi Logic Corporation PLD/ASIC hybrid integrated circuit
JP3461443B2 (en) 1998-04-07 2003-10-27 松下電器産業株式会社 Semiconductor device, semiconductor device design method, recording medium, and semiconductor device design support device
JP4090118B2 (en) 1998-06-19 2008-05-28 富士通株式会社 LSI manufacturing method and recording medium recording layout program
US6473885B1 (en) 1998-07-17 2002-10-29 Mentor Graphics Corporation Digital circuit layout techniques using circuit decomposition and pin swapping
US6477688B1 (en) 1998-07-17 2002-11-05 David E. Wallace Logic equivalence leveraged placement and routing of an IC design
US6219822B1 (en) 1998-08-05 2001-04-17 International Business Machines Corporation Method and system for tuning of components for integrated circuits
US6381565B1 (en) 1998-08-21 2002-04-30 Nec Corporation Functional logic circuit verification device
US6480985B1 (en) 1998-08-26 2002-11-12 Mentor Graphics Corporation Method and apparatus for graphically presenting an integrated circuit design
US6226780B1 (en) 1998-08-31 2001-05-01 Mentor Graphics Corporation Circuit design method and apparatus supporting a plurality of hardware design languages
US6272671B1 (en) 1998-09-11 2001-08-07 Lsi Logic Corporation Extractor and schematic viewer for a design representation, and associated method
US6505341B1 (en) 1998-11-10 2003-01-07 Scientronix, Inc. System and method for programming a logic control unit
US6275973B1 (en) 1998-10-30 2001-08-14 Lsi Logic Corporation Integrated circuit design with delayed cell selection
US6353806B1 (en) 1998-11-23 2002-03-05 Lucent Technologies Inc. System level hardware simulator and its automation
US6401230B1 (en) 1998-12-04 2002-06-04 Altera Corporation Method of generating customized megafunctions
US6381563B1 (en) 1999-01-22 2002-04-30 Cadence Design Systems, Inc. System and method for simulating circuits using inline subcircuits
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6353915B1 (en) 1999-04-01 2002-03-05 Unisys Corporation Methods for evaluating systems of electronic components
US6327693B1 (en) 1999-04-08 2001-12-04 Chung-Kuan Cheng Interconnect delay driven placement and routing of an integrated circuit design
JP3501674B2 (en) * 1999-04-21 2004-03-02 日本電気株式会社 Printed circuit board characteristic evaluation apparatus, printed circuit board characteristic evaluation method, and storage medium
US6505328B1 (en) 1999-04-27 2003-01-07 Magma Design Automation, Inc. Method for storing multiple levels of design data in a common database
US6427223B1 (en) * 1999-04-30 2002-07-30 Synopsys, Inc. Method and apparatus for adaptive verification of circuit designs
US6298468B1 (en) 1999-05-04 2001-10-02 Prosper Design Systems Pte. Ltd. Placement-based pin optimization method and apparatus for computer-aided circuit design
US6366874B1 (en) 1999-05-24 2002-04-02 Novas Software, Inc. System and method for browsing graphically an electronic design based on a hardware description language specification
JP2001022816A (en) 1999-07-12 2001-01-26 Matsushita Electric Ind Co Ltd Layout method for semiconductor integrated circuit device
US6519755B1 (en) * 1999-08-16 2003-02-11 Sequence Design, Inc. Method and apparatus for logic synthesis with elaboration
US6574787B1 (en) * 1999-08-16 2003-06-03 Sequence Design, Inc. Method and apparatus for logic synthesis (word oriented netlist)
US6438731B1 (en) 1999-09-13 2002-08-20 Synopsys, Inc. Integrated circuit models having associated timing exception information therewith for use in circuit design optimizations
US20020138244A1 (en) * 1999-09-30 2002-09-26 Meyer Steven J. Simulator independent object code HDL simulation using PLI
US6449762B1 (en) 1999-10-07 2002-09-10 Synplicity, Inc. Maintaining correspondence between text and schematic representations of circuit elements in circuit synthesis
US6745160B1 (en) * 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
US6539536B1 (en) * 2000-02-02 2003-03-25 Synopsys, Inc. Electronic design automation system and methods utilizing groups of multiple cells having loop-back connections for modeling port electrical characteristics
US6769098B2 (en) * 2000-02-29 2004-07-27 Matsushita Electric Industrial Co., Ltd. Method of physical design for integrated circuit
US6591407B1 (en) * 2000-03-01 2003-07-08 Sequence Design, Inc. Method and apparatus for interconnect-driven optimization of integrated circuit design
US6490545B1 (en) 2000-03-06 2002-12-03 Sony Corporation Method and apparatus for adaptive co-verification of software and hardware designs
US6519742B1 (en) * 2000-03-06 2003-02-11 Synplicity, Inc. Local naming for HDL compilation
AU2001266660A1 (en) * 2000-06-02 2001-12-17 Virtio Corporation Method and system for virtual prototyping
JP2002108960A (en) * 2000-10-03 2002-04-12 Fujitsu Ltd Arrangement/wiring processing system
JP2002117092A (en) * 2000-10-05 2002-04-19 Fujitsu Ltd Method and system for designing semiconductor integrated circuit device
US6701501B2 (en) * 2000-10-16 2004-03-02 Simon Joshua Waters Structured algorithmic programming language approach to system design
US6684379B2 (en) * 2000-10-18 2004-01-27 Chipworks Design analysis workstation for analyzing integrated circuits
US6801884B2 (en) * 2001-02-09 2004-10-05 Hewlett-Packard Development Company, L.P. Method and apparatus for traversing net connectivity through design hierarchy
US6487698B1 (en) 2001-05-04 2002-11-26 Lsi Logic Corporation Process, apparatus and program for transforming program language description of an IC to an RTL description
US20030004699A1 (en) * 2001-06-04 2003-01-02 Choi Charles Y. Method and apparatus for evaluating an integrated circuit model
US6523156B2 (en) * 2001-06-08 2003-02-18 Library Technologies, Inc. Apparatus and methods for wire load independent logic synthesis and timing closure with constant replacement delay cell libraries
US6477689B1 (en) 2001-06-13 2002-11-05 The Boeing Company Architectural structure of a process netlist design tool
US20030005396A1 (en) * 2001-06-16 2003-01-02 Chen Michael Y. Phase and generator based SOC design and/or verification
US6868526B2 (en) * 2001-07-18 2005-03-15 The Mathworks, Inc. Graphical subclassing
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7043393B2 (en) * 2001-08-15 2006-05-09 National Instruments Corporation System and method for online specification of measurement hardware
US7093224B2 (en) * 2001-08-28 2006-08-15 Intel Corporation Model-based logic design
US20030046051A1 (en) * 2001-08-29 2003-03-06 Wheeler William R. Unified design parameter dependency management method and apparatus
US6708321B2 (en) * 2001-08-29 2004-03-16 Intel Corporation Generating a function within a logic design using a dialog box
US6721925B2 (en) * 2001-08-29 2004-04-13 Intel Corporation Employing intelligent logical models to enable concise logic representations for clarity of design description and for rapid design capture
US6643836B2 (en) * 2001-08-29 2003-11-04 Intel Corporation Displaying information relating to a logic design
US20030046054A1 (en) * 2001-08-29 2003-03-06 Wheeler William R. Providing modeling instrumentation with an application programming interface to a GUI application
US7130784B2 (en) * 2001-08-29 2006-10-31 Intel Corporation Logic simulation
US6983427B2 (en) * 2001-08-29 2006-01-03 Intel Corporation Generating a logic design

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0433066A2 (en) * 1989-12-15 1991-06-19 Hewlett-Packard Company Common symbol library architecture
US5220512A (en) * 1990-04-19 1993-06-15 Lsi Logic Corporation System for simultaneous, interactive presentation of electronic circuit diagrams and simulation data
EP1065611A2 (en) * 1995-10-23 2001-01-03 Interuniversitair Microelektronica Centrum Vzw A design environment for hardware/software co-design
EP0901088A2 (en) * 1997-09-02 1999-03-10 Hewlett-Packard Company Framework for rules checking

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MAXFIELD C: "DIGITAL LOGIC SIMULATION: EVENT-DRIVEN, CYCLE-BASED AND HOME- BREWED" EDN ELECTRICAL DESIGN NEWS, CAHNERS PUBLISHING CO. NEWTON, MASSACHUSETTS, US, vol. 41, no. 14, 4 July 1996 (1996-07-04), pages 129-130,132,134, XP000624579 ISSN: 0012-7515 *

Also Published As

Publication number Publication date
US7107201B2 (en) 2006-09-12
US20030046052A1 (en) 2003-03-06
WO2003021492A3 (en) 2004-02-19
TWI255411B (en) 2006-05-21
EP1421526A2 (en) 2004-05-26

Similar Documents

Publication Publication Date Title
Clow et al. A pythonic approach for rapid hardware prototyping and instrumentation
US5933356A (en) Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models
Gajski et al. SpecSyn: An environment supporting the specify-explore-refine paradigm for hardware/software system design
JP3118592B2 (en) Method of generating structural description of a circuit or device from higher-level behavior-oriented description
US5493508A (en) Specification and design of complex digital systems
US20040117168A1 (en) Global analysis of software objects generated from a hardware description
US9665674B2 (en) Automating a microarchitecture design exploration environment
US7350180B1 (en) Search algorithm for inheriting clock contexts in hardware description language translation tools
US20030037305A1 (en) Method and apparatus for evaluating logic states of design nodes for cycle-based simulation
US20120072876A1 (en) Method and apparatus for reducing x-pessimism in gate-level simulation and verification
Kuhn et al. A framework for object oriented hardware specification, verification, and synthesis
Dangwal et al. Agile hardware development and instrumentation with PyRTL
US6643836B2 (en) Displaying information relating to a logic design
Chakraborty et al. Min-max timing analysis and an application to asynchronous circuits
US7107201B2 (en) Simulating a logic design
US5854926A (en) Method and apparatus for identifying flip-flops in HDL descriptions of circuits without specific templates
Lööw Reconciling verified-circuit development and Verilog development
Vemuri et al. Experiences in functional validation of a high level synthesis system
US7181384B1 (en) Method and apparatus for simulating a hybrid system with registered and concurrent nodes
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
Madorsky et al. VPP-a Verilog HDL simulation and generation library for C++
Bei et al. Fsm modeling of synchronous vhdl design for symbolic model checking
Sklyarov et al. Integrated development environment for logic synthesis based on dynamically reconfigurable FPGAs
Jones et al. autoVHDL: a domain-specific modeling language for the auto-generation of VHDL core wrappers
Claessen et al. An embedded language approach to teaching hardware compilation

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BY BZ CA CH CN CO CR CU CZ DE DM DZ EC EE ES FI GB GD GE GH HR HU ID IL IN IS JP KE KG KP KR LC LK LR LS LT LU LV MA MD MG MN MW MX MZ NO NZ OM PH PL PT RU SD SE SG SI SK SL TJ TM TN TR TZ UA UG UZ VN YU ZA ZM

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ UG ZM ZW AM AZ BY KG KZ RU TJ TM AT BE BG CH CY CZ DK EE ES FI FR GB GR IE IT LU MC PT SE SK TR BF BJ CF CG CI GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2002768673

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2002768673

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP