Generating a function within a logic design using a dialog box

Information

  • Patent Grant
  • 6708321
  • Patent Number
    6,708,321
  • Date Filed
    Friday, January 4, 2002
    23 years ago
  • Date Issued
    Tuesday, March 16, 2004
    20 years ago
Abstract
A method of generating a function within a logic design of a circuit, includes representing the function using an operator. The function has n operands, where n>1. The method also includes presenting the function within a schematic representation of the logic design. Other features may include displaying a dialog box and inputting data that corresponds to the function.
Description




TECHNICAL FIELD




This invention relates to circuit simulation.




BACKGROUND




Logic designs for circuits typically include either schematic design or text design. A schematic design shows a circuit design with logic elements as a two-dimensional diagram. Logic elements are either state elements (e.g., flip-flops, latches, etc.) or combinatorial elements (e.g., AND gates, NOR gates, etc.). State elements provide storage from one cycle of operation to the next cycle of operation. Combinatorial elements are used to perform operations on two or more signals.




A textual representation describes the logic elements of a circuit using one-dimensional text lines. Textual representations are used in hardware description languages (HDLs) which allow designers to simulate logic designs 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 and 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. One example of a standard computer language that may be used is C++.











DESCRIPTION OF THE DRAWINGS





FIG. 1

is a flowchart showing a process for generating a logic design using programmable binary operators.





FIG. 2

is a screenshot of a dialog box for generating a logic design having a binary operator.





FIG. 3

is a schematic representation of a function generated from the dialog box in FIG.


2


.





FIG. 4

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 used in generating a logic design to generate a configurable binary operator gate by using programmable binary operators. The configurable binary operator gate is a generalized gate structure designed to model a user-defined function comprised of a binary operator acting on two operands. Thus, the gate structure can be designed to be an adder, a shifter, a comparator, an incrementor, etc.




Process


10


may be implemented using a computer program running on a computer


50


(

FIG. 4

) or other type of machine, as described in more detail below. As explained below, by using binary operators, complex logic models can be presented to a user (not shown) that have a simple readable body element comprised of the gate structure and a software code representing the gate structure displayed within the gate structure.




Referring to

FIG. 2

, process


10


accesses and displays (


12


) a dialog box


22


in response to a user input. The user may use any input/output (I/O) device to access and display (


12


) dialog box


22


. For example, design tools employing process


10


may reside on a personal computer and the tools may operate in a MS-Windows® environment. If the user determines that a function having a binary operator is needed in the design, the user pulls-down a menu (not shown) or right-clicks a mouse button to access dialog box


22


. In response, process


10


displays dialog box


22


is displayed on a computer monitor.




Process


10


receives input (


14


) from dialog box


22


. In this regard, dialog box


22


may be a graphical user interface (GUI) into which the user inputs data to generate a gate structure (see, e.g.,

FIG. 3

described below). For example, using a mouse, the user may choose either a signal input or a constant input for a left operand


24


and for a right operand


28


by clicking on a circle


25


next to the desired choice. If a constant is chosen, dialog box


22


is highlighted indicating to the user a constant has been chosen. Using a keyboard, the user types-in a left pin name


26


, a right pin name


30


, and an output pin name


36


. The user further accesses a pull-down menu


32


to choose a desired binary operator. By clicking on “OK” button


34


, the user has provided the inputs from dialog box


22


to process


10


.




Process


10


uses the binary operator selected from pull-down menu


32


to represent (


16


) the corresponding function. For example, if the binary operator chosen is “==”, a gate


40


(

FIG. 3

) representing a comparator function is displayed. Binary operator symbols can be a logical operator or a non-logical operator. The binary operator symbol “==” is a logical operator. Logical operators produce an output of either a ‘1’ or a ‘0’ or a bit width of 1. For non-logical operators (e.g., “+”, “>>”, etc.), the bit width of the output is equal to the bit width of each input. For example, if the function, a+b, is chosen and an input signal a is 4 bits wide and input signal b is a 4 bits wide, then the resulting output signal is 4 bits wide.




Other functions can be represented by using the following binary operator symbols:

















Binary Operator Symbols




Function




Notation











+




Addition




a + b = c











Subtraction




a − b = c






*




Multiplication




a × b = c






/




Division




a ÷ b = c






%




Modulo




a modulo b






&&




Logical AND




a AND b











Logical OR




a OR b






>>




Shift Right




Take a and shift








right by b






<<




Shift Left




Take a and shift








left by b






<




Less than




Is a < b?






<=




Less than or




Is a ≦ b?







equal






==




Equal




Is a = b?






!=




Not equal




Is a ≠ b?






>




Greater than




Is a > b?






>=




Greater than or




Is a ≧ b?







equal






===




Three state




Is a = b?







equal






!==




Three state not




Is a ≠ b?







equal














Referring to

FIGS. 2 and 3

, process


10


displays (


18


) the function selected as a gate


40


using a Verilog code


42


. In other words, process


10


embeds a textual combinatorial data block into a two-dimensional schematic presentation. The information depicted in

FIG. 2

is represented in

FIG. 3

, e.g., “a==b (?)” is the Verilog code for a comparator. In this example, input signal a is represented by “opA[3:0]” and input signal b is represented by “opB[3:0].” Also, input signal a and input signal b are each 4 bits wide. Process


10


automatically (i.e., without user intervention) generates an output signal “out” represented as “opOut[0:0],” as a one bit wide signal. Thus, process


10


reduces the need to have large libraries based on bit-width size by automatically calculating an appropriate bit-width size.





FIG. 4

shows computer


50


for generating a logic design using process


10


. Computer


50


includes a processor


52


, a memory


54


, and a storage medium


56


(e.g., a hard disk). Storage medium


56


stores data


62


which defines a logic design, a graphics library


60


used in implementing the logic design, and machine-executable instructions


58


, which are executed by processor


52


out of memory


54


to perform process


10


on data


62


.




Process


10


, however, is not limited to use with the hardware and software of

FIG. 4

; 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. Process


10


is not limited to using two operands. Process


10


can be used with k operands, where k>1. Process


10


is not limited to binary operators but may be any x-state operators, where x≧2. Also, process


10


is not limited to embedding one-dimensional design into a two-dimensional design. Process can be any n-dimensional design embedded into a (n+m)-dimensional design, where n≧1 and m≧1. 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.



Claims
  • 1. A method of generating a function within a logic design of a circuit, comprising:displaying a dialog box used to define the function; representing the function using an operator, the function having n operands, where n>1; and presenting the function within a schematic representation of the logic design.
  • 2. The method of claim 1, wherein n=2.
  • 3. The method of claim 2, wherein one of the two operands comprises a constant value.
  • 4. The method of claim 2, wherein one of the two operands corresponds to a signal.
  • 5. The method of claim 2, wherein the two operands correspond to signals.
  • 6. The method of claim 1, wherein the operator comprises a binary operator.
  • 7. The method of claim 6, wherein the binary operator comprises a logical operator.
  • 8. The method of claim 1, further comprising inputting data that corresponds to the function.
  • 9. The method of claim 1, further comprising highlighting the dialog box when one of the n operands is a constant.
  • 10. An article comprising a machine-readable medium which stores executable instructions to generate a function within a logic design of a circuit, the instructions causing a machine to:display a dialog box used to define the function; represent the function using an operator, the function having n operands, where n>1; and present the function within a schematic representation of the logic design.
  • 11. The article of claim 10, wherein n=2.
  • 12. The article of claim 11, wherein one of the two operands comprises a constant value.
  • 13. The article of claim 11, wherein one of the two operands corresponds to a signal.
  • 14. The article of claim 11, wherein the two operands correspond to signals.
  • 15. The article of claim 10, wherein the operator comprises a binary operator.
  • 16. The article of claim 15, wherein the binary operator comprises a logical operator.
  • 17. The article of claim 10, further comprising instructions causing the machine to input data that corresponds to the function.
  • 18. The article of claim 10, further comprising instructions causing the machine to highlight the dialog box when one of the n operands is a constant.
  • 19. An apparatus for generating a function within a logic design of a circuit, comprising:a memory that stores executable instructions; and a processor that executes the instructions to: display a dialog box used to define the function; represent the function using an operator, the function having n operands, where n>1; and present the function within a schematic representation of the logic design.
  • 20. The apparatus of claim 19, wherein n=2.
  • 21. The apparatus of claim 19, wherein one of the two operands comprises a constant value.
  • 22. The apparatus of claim 21, wherein one of the two operands corresponds to a signal.
  • 23. The apparatus of claim 20, wherein the two operands correspond to signals.
  • 24. The apparatus of claim 19, wherein the operator comprises a binary operator.
  • 25. The apparatus of claim 24, wherein the binary operator comprises a logical operator.
  • 26. The apparatus of claim 19, wherein the processor executes instructions to input data that corresponds to the function.
  • 27. The apparatus of claim 19, wherein the processor executes instructions to highlight the dialog box when one of the n operands is a constant.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority from U.S. Provisional Application No. 60/315,852, filed Aug. 29, 2001, and titled “Visual Modeling and Design Capture Environment,” which is incorporated by reference.

US Referenced Citations (56)
Number Name Date Kind
5128871 Schmitz Jul 1992 A
5220512 Watkins et al. Jun 1993 A
5258919 Yamanouchi et al. Nov 1993 A
5506788 Cheng et al. Apr 1996 A
5513119 Moore et al. Apr 1996 A
5553002 Dangelo et al. Sep 1996 A
5629857 Brennan May 1997 A
5666289 Watkins Sep 1997 A
5828581 Matumura Oct 1998 A
5852564 King et al. Dec 1998 A
5889677 Yasuda et al. Mar 1999 A
5892678 Tokunoh et al. Apr 1999 A
5933356 Rostoker 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
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
6205573 Hasegawa Mar 2001 B1
6219822 Gristede et al. Apr 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
6298468 Zhen Oct 2001 B1
6311309 Southgate Oct 2001 B1
6324678 Dangelo et al. Nov 2001 B1
6366874 Lee et al. Apr 2002 B1
6378115 Sakurai Apr 2002 B1
6401230 Ahanessians et al. Jun 2002 B1
6449762 McElvain Sep 2002 B1
6457164 Hwang et al. Sep 2002 B1
6477683 Killian et al. Nov 2002 B1
6477689 Mandell et al. Nov 2002 B1
6480985 Reynolds et al. Nov 2002 B1
6487698 Andreev et al. Nov 2002 B1
6505341 Harris et al. Jan 2003 B1
6519742 Falk Feb 2003 B1
6519755 Anderson Feb 2003 B1
20010018758 Tanaka et al. Aug 2001 A1
20020023256 Seawright Feb 2002 A1
20020042904 Ito et al. Apr 2002 A1
20020046386 Skoll et al. Apr 2002 A1
20020049957 Hosono et al. Apr 2002 A1
20020166100 Meding Nov 2002 A1
20030005396 Chen et al. Jan 2003 A1
20030016206 Taitel Jan 2003 A1
20030016246 Singh Jan 2003 A1
Non-Patent Literature Citations (6)
Entry
Foley et al., “An Object Based Graphical User Interface for Power Systems”, IEEE Transactions on Power Systems, vol. 8, No. 1, Feb. 1993, pp. 97-104.
Pedram et al., “Floorplanning with Pin assignment”, 1990 IEEE International Conference on Computer-Aided Design, Nov. 11, 1990, pp. 98-101.
Mentor Graphics Corporation, Renoir™ With HDL2Graphics™, pp. 1-6, 1998, Oregon.
Mentor Graphics Corporation, Renoir HDL Design Datasheet, pp. 1-2, 1999, Oregon.
Computer Design, “After Hard Knocks, Cycle-Based Simulators Stand Their Ground”. http://www.computer-design.com/Editorial/1996/10/ASIC/after.html, accessed on Aug. 23, 2001, pp. 1-5.
Renoir, HDL Design Datasheet, Mentor Graphics, pp. 1-8, 1999.
Provisional Applications (1)
Number Date Country
60/315852 Aug 2001 US