This invention relates to modeling a logic design using functional block diagrams and to generating simulation code that corresponds to the logic design.
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.
Referring to
In operation, process 10 displays (101) a menu, such as menu 12 shown in
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.
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.
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.
Process 10, however, is not limited to use with the hardware and software of
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
Other embodiments not described herein are also within the scope of the following claims.
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 |
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 |
Number | Date | Country | |
---|---|---|---|
20030135355 A1 | Jul 2003 | US |