Modeling a logic design

Information

  • Patent Grant
  • 7197724
  • Patent Number
    7,197,724
  • Date Filed
    Thursday, January 17, 2002
    22 years ago
  • Date Issued
    Tuesday, March 27, 2007
    17 years ago
Abstract
Modeling a logic design includes displaying a menu comprised of different types of functional block diagrams, receiving an input selecting one of the different types of functional block diagrams, retrieving a selected functional block diagram, and creating a graphical representation of a logic design using the selected functional block diagram. The graphical representation is created by interconnecting the selected functional block diagram with one or more other functional block diagrams to generate a model of a logic design and defining the selected functional block diagram using simulation code if the functional block diagram is undefined when retrieved.
Description
TECHNICAL FIELD

This invention relates to modeling a logic design using functional block diagrams and to generating simulation code that corresponds to the logic design.


BACKGROUND

Logic designers typically model logic designs, which may include circuit elements such as flip-flops, registers, and logic gates, using block diagrams. Computer-aided design (CAD) systems may be used to generate such block diagrams electronically. Conventional CAD systems, however, do not provide the flexibility and types/extent of information desired by many logic designers.


Moreover, models created using conventional CAD systems are often of little assistance when simulating the logic design. Heretofore, a logic designer had to make a separate “simulation” model of the logic design using a simulation code, such as Verilog and Very High-Level Design Language (VHDL). The simulation model can be cumbersome and difficult to understand, particularly for complex logic designs.





DESCRIPTION OF THE DRAWINGS


FIG. 1 is a flowchart showing a process for modeling a logic design using functional block diagrams and generating simulation code that corresponds to the logic design.



FIG. 2 is a block diagram of a menu for selecting functional block diagrams for the logic design.



FIG. 3 shows functional block diagrams that were selected from the menu.



FIG. 4 shows the functional block diagrams of FIG. 3 interconnected using virtual wire.



FIG. 5 is a block diagram of a computer system on which the process of FIG. 1 may be executed.





DESCRIPTION

Referring to FIG. 1, a process 10 is shown for modeling a logic design. Process 10 may be implemented using a computer program running on a computer or other type of programmable machine, as described in more detail below.


In operation, process 10 displays (101) a menu, such as menu 12 shown in FIG. 2. Menu 12 includes options for use in creating a graphical representation of a logic design. These options correspond to functional block diagrams for various circuit elements, such as registers 14, ports 16, AND gates 18, OR gates 20, buffers 22, multiplexers 24 (MUX), and so forth. Data, including computer code, that defines the functional block diagrams for these circuit elements is stored in a database. The data defines inputs and outputs of each functional block diagram, as well as the operation to be performed on the inputs by the functional block diagram to generate the outputs. In one embodiment, the functional block diagrams are software “objects”. By way of example, in the case of an “AND” gate, the data specifies that the functional block diagram includes N (N>1) inputs, one output, and the definition of an operation to be performed on the inputs to generate the output. In the case of state elements, such as registers and flip-flops, the inputs may include one or more clock signals.


The options on menu 12 also include a combinational (COMBO) box option 26. COMBO box option 26 provides an undefined functional block diagram for use in a logic design. The undefined functional block diagram may be defined by the user to simulate any circuit element or combination of circuit elements. The user may enter simulation code via a graphical user interface (GUI) (not shown) to define the functionality of an undefined functional block diagram. The simulation code may specify inputs, outputs and operations to be performed on the inputs to generate the outputs. Examples of simulation code that may be used include, but are not limited to, Verilog, C++ and VHDL.


Process 10 receives (102) an input selection from menu 12. That is, a designer selects one or more of the options from menu 12. The selection is transmitted to process 10, which retrieves (103), from the database, a functional block diagram that corresponds to the selection. For example, a designer may select register option 14. In response, process retrieves a “register” functional block diagram from the database. If the designer selects COMBO box option 26, process 10 retrieves an undefined functional block diagram from the database. The designer specifies the function of that block diagram using, e.g., simulation code.


Process 10 creates (104) a graphical representation of a logic design using retrieved (103) functional block diagrams. That is, process 10 displays the retrieved functional block diagrams and the designer arranges the functional block diagrams to represent a logic design. Although the designer is moving the block diagrams by, e.g., dragging and dropping, process 10 arranges (104a) the block diagrams in the sense that their movement is executed and stored via process 10. FIG. 3 shows functional block diagrams 30 that have been arranged prior to being interconnected.


Once the functional block diagrams are arranged, process 10 interconnects (104b) the block diagrams using virtual wires. That is, the designer selects wire option 22 from menu 12 and connects the inputs and/or outputs thereof using the virtual wires. Process 10 stores the configuration of the logic design, including the virtual wire connections, in memory. FIG. 4 shows the functional block diagrams of FIG. 3 following interconnection. It is noted that process 10 may display the definitions (e.g., 34, 36 and 38) of each input or output terminal, or not, as desired.


If there are any problems with the interconnections (107), process 10 displays a visual indication of the problem(s) with the design. In this regard, process 10 automatically runs a diagnostic on the logic design to confirm that the logic design comports with a set of predefined rules specifying, e.g., proper connections between terminals on different functional block diagrams. Examples of connection problems include, but are not limited to, unterminated connections and outputs running into the wrong inputs (e.g., a logic gate output running into a clock terminal input).


In this embodiment, process 10 illuminates the logic design in red if there is a problem. Other indicators may be provided instead of, or in addition, to, illuminating the logic design in red. For example, the indication may specify the nature of the problem in words or graphics and its location within the logic design.


If there are any problems with the displayed logic design, process 10 returns to one of the previous blocks 101, 102, 103, and 104, where the problem may be corrected.


Assuming that there are no problems with the design, or that the problems have been corrected, process 10 generates (105) simulation code for the design. In this embodiment, process 10 generates Verilog, VHDL, and/or C++ simulation code. However, the simulation code is not limited to generating only these two types of simulation code.


Generally speaking, the designer may select, e.g., via a GUI (not shown), which simulation code (C++, VHDL, Verilog) process 10 will generate. The type of simulation desired may dictate the simulation code that process 10 will generate.


Process 10 generates the simulation code knowing the functional block diagrams that make up the logic design, their inputs and outputs, and their interconnections. For each functional block diagram, process 10 generates appropriate simulation code and provides the appropriate inputs and outputs. Process 10 combines the generated simulation code for the various functional block diagrams into simulation code that defines the logic design.


Once simulation code for the logic design has been generated (105), process 10 tests (106) the logic design. This may be done by propagating one or more states through the simulation code and determining if there is an error based on the state propagation. For example, process 10 may propagate a logical one (1), a logical zero (0), and/or an undefined (X) state through the simulation code. If the resulting output of the simulation code is not what is expected, process 10 will indicate to the logic designer that an error exists in the logic design. The designer may then go back and change the logic design, as desired.



FIG. 5 shows a computer 40 on which process 10 may be executed. Computer 40 includes a processor 42, a memory 44, and a storage medium 46 (e.g., a hard disk) (see view 48). Storage medium 46 stores data 50 that defines a logic design, a database 52 that includes the functional block diagrams, simulation code 54 (e.g., C++, Verilog, VHDL) for each functional block diagram and for the resulting logic design, and machine-executable instructions 56, which are executed by processor 42 out of memory 44 to perform process 10.


Process 10, however, is not limited to use with the hardware and software of FIG. 5; 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 one or more 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.


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 (compact disc read-only memory), 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 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 the types and content of displays described herein. Other displays and display contents may be used. Process 10 is not limited use with the simulation languages noted above, e.g., Verilog, VHDL, and C++. Process 10 also is not limited to the order of execution set forth in FIG. 1. That is, the blocks of process 10 may be executed in a different order than that shown to produce a desired result.


Other embodiments not described herein are also within the scope of the following claims.

Claims
  • 1. A method of modeling a logic design, comprising: creating a graphical representation of the logic design;receiving a selection that corresponds to a type of simulation code, the selection corresponding to one of plural different simulation languages;generating simulation code based on the graphical representation and the selection, the simulation code comprising executable code in one of the plural different simulation languages that corresponds to the selection; andusing the simulation code to test operation of the logic design, wherein using the simulation code comprises:propagating a state through the simulation code; anddetermining if there is an error in the logic design based on a propagated state, wherein determining is performed via executable instructions that operate absent user intervention.
  • 2. The method of claim 1, wherein the graphical representation is comprised of functional block diagrams and virtual wires that interconnect the functional block diagrams.
  • 3. The method of claim 2, wherein creating comprises: retrieving the functional block diagrams from a database; andarranging the functional block diagrams and the virtual wires to model the logic design.
  • 4. The method of claim 2, wherein creating comprises: defining the functional block diagrams using simulation code; andarranging the functional block diagrams and the virtual wires to model the logic design.
  • 5. The method of claim 1, further comprising: displaying a menu comprised of different types of functional block diagrams;receiving an input selecting one of the different types of functional block diagrams;retrieving a selected functional block diagram; andcreating the graphical representation of the logic design using the selected functional block diagram.
  • 6. The method of claim 1, wherein the state comprises one of a zero state, a one state, and an undefined state.
  • 7. The method of claim 1, further comprising: providing a visual indication if there is an error in the graphical representation of the logic design.
  • 8. A method of modeling a logic design, comprising: displaying a menu comprised of different types of functional block diagrams;receiving an input selecting one of the different types of functional block diagrams;receiving a selection that corresponds to a type of simulation code, the selection corresponding to one of plural different simulation languages;retrieving a selected functional block diagram;creating a graphical representation of a logic design using the selected functional block diagram, wherein creating comprises: interconnecting the selected functional block diagram with one or more other functional block diagrams to generate a model of the logic design; anddefining the selected functional block diagram using the type of simulation code if a function of the selected functional block diagram is undefined when retrieved;generating simulation code to simulate operation of the logic design based on the graphical representation and the selection, the simulation code comprising executable code in one of the plural different simulation languages that corresponds to the selection; andusing the simulation code to test the operation of the logic design, wherein using the simulation code comprises:determining if there is an error in the logic design based on a propagated state, wherein determining is performed via executable instructions that operate absent user intervention.
  • 9. An article comprising a machine-readable medium that stores executable instructions for modeling a logic design, the instructions causing a machine to: create a graphical representation of the logic design;receive a selection that corresponds to a type of simulation code, the selection corresponding to one of plural different simulation languages;generate simulation code based on the graphical representation and the selection, the simulation code comprising executable code in one of the plural different simulation languages that corresponds to the selection; anduse the simulation code to test operation of the logic design, wherein using the simulation code comprises: propagating a state through the simulation code; anddetermining if there is an error in the logic design based on a propagated state, wherein determining is performed via executable instructions that operate absent user intervention.
  • 10. The article of claim 9, wherein the graphical representation is comprised of functional block diagrams and virtual wires that interconnect the functional block diagrams.
  • 11. The article of claim 10, wherein creating comprises: retrieving the functional block diagrams from a database; andarranging the functional block diagrams and the virtual wires to model the logic design.
  • 12. The article of claim 10, wherein creating comprises: defining the functional block diagrams using simulation code; andarranging the functional block diagrams and the virtual wires to model the logic design.
  • 13. The article of claim 9, further comprising instructions that cause the machine to: display a menu comprised of different types of functional block diagrams;receive an input selecting one of the different types of functional block diagrams;retrieve a selected functional block diagram; andcreate the graphical representation of the logic design using the selected functional block diagram.
  • 14. The article of claim 9, wherein the state comprises one of a zero state, a one state, and an undefined state.
  • 15. The article of claim 9, further comprising instructions that cause the machine to: provide a visual indication if there is an error in the graphical representation of the logic design.
  • 16. An article comprising a machine-readable medium that stores executable instructions that cause a machine to: display a menu comprised of different types of functional block diagrams;receive an input selecting one of the different types of functional block diagrams;receive a selection that corresponds to a type of simulation code, the selection corresponding to one of plural different simulation languages;retrieve a selected functional block diagram;create a graphical representation of a logic design using the selected functional block diagram, wherein creating comprises: interconnecting the selected functional block diagram with one or more other functional block diagrams to generate a model of the logic design; anddefining the selected functional block diagram using the type of simulation code if a function of the selected functional block diagram is undefined when retrieved;generate simulation code to simulate operation of the logic design based on the graphical representation and the selection, the simulation code comprising executable code in one of the plural different simulation languages that corresponds to the selection; anduse the simulation code to test the operation of the logic design, wherein using the simulation code comprises: determining if there is an error in the logic design based on a propagated state, wherein determining is performed via executable instructions that operate absent user intervention.
  • 17. An apparatus for modeling a logic design, comprising: memory that stores executable instructions; anda processor that executes the instructions to: create a graphical representation of the logic design;receive a selection that corresponds to a type of simulation code, the selection corresponding to one of plural different simulation languages;generate simulation code based on the graphical representation and the selection, the simulation code comprising executable code in one of the plural different simulation languages that corresponds to the selection; anduse the simulation code to test operation of the logic design, wherein using the simulation code comprises: propagating a state through the simulation code; anddetermining if there is an error in the logic design based on a propagated state, wherein determining is performed via executable instructions that operate absent user intervention.
  • 18. The apparatus of claim 17, wherein the graphical representation is comprised of functional block diagrams and virtual wires that interconnect the functional block diagrams.
  • 19. The apparatus of claim 18, wherein creating comprises: retrieving the functional block diagrams from a database; andarranging the functional block diagrams and the virtual wires to model the logic design.
  • 20. The apparatus of claim 18, wherein creating comprises: defining the functional block diagrams using simulation code; andarranging the functional block diagrams and the virtual wires to model the logic design.
  • 21. The apparatus of claim 17, wherein the processor executes instructions to: display a menu comprised of different types of functional block diagrams;receive an input selecting one of the different types of functional block diagrams;retrieve a selected functional block diagram; andcreate the graphical representation of the logic design using the selected functional block diagram.
  • 22. The apparatus of claim 17, wherein the state comprises one of a zero state, a one state, and an undefined state.
  • 23. The apparatus of claim 17, wherein the processor executes instructions to: provide a visual indication if there is an error in the graphical representation of the logic design.
  • 24. An apparatus comprising: memory that stores executable instructions; anda processor that executes the instructions to: display a menu comprised of different types of functional block diagrams;receive an input selecting one of the different types of functional block diagrams;receive a selection that corresponds to a type of simulation code, the selection corresponding to one of plural different simulation languages;retrieve a selected functional block diagram; andcreate a graphical representation of a logic design using the selected functional block diagram, wherein creating comprises: interconnecting the selected functional block diagram with one or more other functional block diagrams to generate a model of the logic design; anddefining the selected functional block diagram using the type of simulation code if a function of the selected functional block diagram is undefined when retrieved;generate simulation code to simulate operation of the logic design based on the graphical representation and the selection, the simulation code comprising executable code in one of the plural different simulation languages that corresponds to the selection; anduse the simulation code to test the operation of the logic design, wherein using comprises: determining if there is an error in the logic design based on a propagated state, wherein determining is performed via executable instructions that operate absent user intervention.
US Referenced Citations (131)
Number Name Date Kind
4703435 Darringer et al. Oct 1987 A
4970664 Kaiser et al. Nov 1990 A
5128871 Schmitz Jul 1992 A
5212650 Hooper et al. May 1993 A
5220512 Watkins et al. Jun 1993 A
5258919 Yamanouchi et al. Nov 1993 A
5267175 Hooper Nov 1993 A
5278769 Bair et al. Jan 1994 A
5287289 Kageyama et al. Feb 1994 A
5297053 Pease et al. Mar 1994 A
5301318 Mittal Apr 1994 A
5371851 Pieper et al. Dec 1994 A
5384710 Lam et al. Jan 1995 A
5475605 Lin Dec 1995 A
5493507 Shinde et al. Feb 1996 A
5506788 Cheng et al. Apr 1996 A
5513119 Moore et al. Apr 1996 A
5544067 Rostoker et al. Aug 1996 A
5553002 Dangelo et al. Sep 1996 A
5568397 Yamashita et al. Oct 1996 A
5598347 Iwasaki Jan 1997 A
5603015 Kurosawa et al. Feb 1997 A
5604894 Pickens et al. Feb 1997 A
5629857 Brennan May 1997 A
5650947 Okumura Jul 1997 A
5663662 Kurosawa Sep 1997 A
5666289 Watkins Sep 1997 A
5673198 Lawman et al. Sep 1997 A
5685006 Shiraishi Nov 1997 A
5694579 Razdan et al. Dec 1997 A
5706476 Giramma Jan 1998 A
5717928 Campmas et al. Feb 1998 A
5724250 Kerzman et al. Mar 1998 A
5757655 Shih et al. May 1998 A
5809283 Vaidyanathan et al. Sep 1998 A
5828581 Matumura Oct 1998 A
5831869 Ellis et al. Nov 1998 A
5841663 Sharma et al. Nov 1998 A
5852564 King et al. Dec 1998 A
5889677 Yasuda et al. Mar 1999 A
5892678 Tokunoh et al. Apr 1999 A
5892682 Hasley et al. Apr 1999 A
5903469 Ho May 1999 A
5911061 Tochio et al. Jun 1999 A
5933356 Rostoker et al. Aug 1999 A
5937190 Gregory et al. Aug 1999 A
5963724 Mantooth et al. Oct 1999 A
5974242 Damarla et al. Oct 1999 A
6044211 Jain Mar 2000 A
6053947 Parson Apr 2000 A
6066179 Allan May 2000 A
6077304 Kasuya Jun 2000 A
6106568 Beausang et al. Aug 2000 A
6117183 Teranishi et al. Sep 2000 A
6120549 Goslin et al. Sep 2000 A
6132109 Gregory et al. Oct 2000 A
6135647 Balakrishnan et al. Oct 2000 A
6152612 Liao et al. Nov 2000 A
6161211 Southgate Dec 2000 A
6178541 Joly et al. Jan 2001 B1
6205573 Hasegawa Mar 2001 B1
6208954 Houtchens Mar 2001 B1
6216256 Inoue et al. Apr 2001 B1
6219822 Griestede et al. Apr 2001 B1
6223148 Stewart et al. Apr 2001 B1
6226780 Bahra et al. May 2001 B1
6233540 Schaumont et al. May 2001 B1
6233723 Pribetich May 2001 B1
6234658 Houldsworth May 2001 B1
6236956 Mantooth et al. May 2001 B1
6260179 Ohsawa et al. Jul 2001 B1
6272671 Fakhry Aug 2001 B1
6275973 Wein Aug 2001 B1
6292931 Dupenloup Sep 2001 B1
6298468 Zhen Oct 2001 B1
6311309 Southgate Oct 2001 B1
6324678 Dangelo et al. Nov 2001 B1
6327693 Cheng et al. Dec 2001 B1
6353806 Gehlot Mar 2002 B1
6353915 Deal et al. Mar 2002 B1
6360356 Eng Mar 2002 B1
6366874 Lee et al. Apr 2002 B1
6378115 Sakurai Apr 2002 B1
6381563 O'Riordan et al. Apr 2002 B1
6381565 Nakamura Apr 2002 B1
6401230 Ahanessians et al. Jun 2002 B1
6421816 Ishikura Jul 2002 B1
6438729 Ho Aug 2002 B1
6438731 Segal Aug 2002 B1
6440780 Kimura et al. Aug 2002 B1
6449762 McElvain Sep 2002 B1
6457164 Hwang et al. Sep 2002 B1
6473885 Wallace Oct 2002 B1
6477683 Killian et al. Nov 2002 B1
6477688 Wallace Nov 2002 B1
6477689 Mandell et al. Nov 2002 B1
6480985 Reynolds et al. Nov 2002 B1
6487698 Andreev et al. Nov 2002 B1
6490545 Peng Dec 2002 B1
6505328 Van Ginneken et al. Jan 2003 B1
6505341 Harris et al. Jan 2003 B1
6516456 Garnett et al. Feb 2003 B1
6519742 Falk Feb 2003 B1
6519755 Anderson Feb 2003 B1
6523156 Cirit Feb 2003 B2
6539536 Singh et al. Mar 2003 B1
RE38059 Yano et al. Apr 2003 E
6546528 Sasaki et al. Apr 2003 B1
6574787 Anderson Jun 2003 B1
6591407 Kaufman et al. Jul 2003 B1
6684379 Skoll et al. Jan 2004 B2
6704873 Underwood Mar 2004 B1
6745160 Ashar et al. Jun 2004 B1
6785873 Tseng Aug 2004 B1
20010018758 Tanaka et al. Aug 2001 A1
20020023256 Seawright Feb 2002 A1
20020038447 Kim et al. Mar 2002 A1
20020042904 Ito et al. Apr 2002 A1
20020046386 Skoll et al. Apr 2002 A1
20020049957 Hosono et al. Apr 2002 A1
20020059054 Bade et al. May 2002 A1
20020112221 Ferreri et al. Aug 2002 A1
20020138244 Meyer Sep 2002 A1
20020166100 Meding Nov 2002 A1
20030004699 Choi et al. Jan 2003 A1
20030005396 Chen et al. Jan 2003 A1
20030016206 Taitel Jan 2003 A1
20030016246 Singh Jan 2003 A1
20030036871 Fuller et al. Feb 2003 A1
20030177455 Kaufman et al. Sep 2003 A1
20040143801 Waters et al. Jul 2004 A1
Foreign Referenced Citations (14)
Number Date Country
0 404 482 Dec 1990 EP
0 433 066 Jun 1991 EP
0 720 233 Jul 1996 EP
0 901 088 Mar 1999 EP
1 065 611 Jan 2001 EP
58-060559 Apr 1983 JP
03-225523 Oct 1991 JP
07-049890 Feb 1995 JP
08-314892 Nov 1996 JP
2001-068994 Mar 2001 JP
WO 9837475 Aug 1998 WO
WO 9855879 Dec 1998 WO
WO 9939268 Aug 1999 WO
WO 0065492 Nov 2000 WO
Related Publications (1)
Number Date Country
20030135355 A1 Jul 2003 US