This invention relates to model-based logic design.
Microprocessor logic design typically includes an architectural stage and an implementation stage.
The architectural stage includes designing a framework of functional units that provide performance and functionality of a new microprocessor. This framework is typically captured in a text-based document. A model of the new microprocessor, represented in a high level language such as C++, is generated to verify that the function and performance requirements are met.
The implementation stage involves taking the model and the text-based document from the architectural stage and generating a Hardware Design Language (HDL) file.
Referring to
The computer 12 contains a processor 16 and a memory 18. Memory 18 stores an operating system (O/S) 20 such as Windows2000® or Linux, a TCP/IP protocol stack 22 for communicating over network 14, and machine-executable instructions 24 executed by processor 16 to perform a logic modeling process 100 below. The computer 12 also includes an input/output (I/O) device 26 for display of a graphical user interface (GUI) 28 to a user 30 and a storage device 32 for storing a database 34.
The logic modeling process 100 executes in the computer 12. The logic modeling process 100 is a process in which a C++ model file and a Hardware Design Language (HDL) file, such as a Verilog (IEEE Standard 1364) file or a Very high speed integrated circuit Hardware Design Language (VHDL) (IEEE Standard 1076) file, are generated from a successively refined graphical model. Verilog is a hardware description language, a textual format for describing electronic circuits and systems, applied to electronic design. Verilog is used for verification through simulation, for timing analysis, for test analysis (testability analysis and fault grading) and for logic synthesis.
Referring to
The graphical model 50 includes of a set of blocks 52, interconnected by lines 54. Each of the blocks 52 represents logical elements of a device under design. The lines 54 represent connections of block inputs to block outputs. Every block in the graphical model 50 is an instance of a specific type of block. The type of block determines the relationship between a block's outputs and its inputs, states, and time. The graphical model 50 may contain any number of instances of any type of block needed to model a system.
Although not illustrated in
Each of the blocks 52 and corresponding lines 54 are stored in the database 34. More specifically, the blocks and corresponding connections are stored in one or more data structures that represent the gates, nodes and nets of the device. The data structures provide an internal list or description of a net list of the device is stored in the database 34.
Referring to
The M-Gate (62) represents a logical function, for example, AND, FF, FIFO, and so forth. The M_Gate (62) contains zero or more input pins (M_pin's) and zero or more output pins. Each distinct logical function in the graphical model 50 is assigned its own derived M_gate type.
The M_pin (64) represents a connection point to a gate. The connection may be either an input or output. It connects an M_gate to an M_net.
The M_node (66) represents the total extent (i.e. all bits) of a simulation state.
The M_Net (68) represents an arbitrary collection of bits within an M_node. An M_net connects one or more M_pin's together.
M-Gate (62), M_Pin (64), M_Net (66) and M_node (68) are all C++ classes in which there are multiple derived classes for each class listed above.
The data structure 60 is updated and reflects the current state of the graphical model 50. The data structure 60 is used by the logic modeling process 100 to generate an architectural model using, for example, C++ constraints, and a Verilog implementation model. Thus, a single database, i.e., the database 34, is used as generator of both an architectural and implementation model for a chip design.
Referring to
A block in a graphical model may represent a single combinatorial element, such as a multiplexer or state element. A combinatorial block represents the functionality of several combinatorial elements or the function of several state elements.
The process 100 builds (104) a control/design analysis and checks (106) for errors. For example, process 100 determines if there are any un-terminated or inconsistent connections in the design. If any such problems are detected, process 100 issues 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 100 moves forward.
The process 100 stores (108) the logic of the graphics capture in a data structure. The process 100 determines (110) whether to write an architectural model or implementation model. If an implementation model is to be written, the process 100 generates (112) Verilog using Verilog constructs to provide the implementation model.
If an architectural model is to be written, the process 100 coverts (114) the data structure into a C++ topology. The process provides (116) timing and clock domain assignments partitions (118) clock domain topologies. Each partition is coded ordered (120) and partition code provided to a C++ compiler.
Code ordering means that the logical constructs are sorted based on producer/consumer relationships. That is, a logical construct representing an element that “produces” or outputs a signal is ordered before another element that “consumes” or receives the signal as an input. By subsequently code-ordering the C++ model may be simulated as a single call model. A single call model means that each logical construct is evaluated only once per cycle. Hence, the C++ model simulator is a cycle-based simulator. The Verilog model is also written after being extracted from the data structure and is typically simulated using an event driven simulator such as ModelSim™ from Model Technology, for example.
The process writes (122) C++ files, batch files and makefiles for the architectural model. Thus, process 100 generates high performance C++ and highly efficient Verilog from the same database.
Process 100 may be implemented using one or more computer programs executing on programmable computers 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.
Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. Also, 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 a storage medium or device (e.g., CD-ROM, hard disk, or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform process 100.
Process 100 may also be implemented as a computer-readable storage medium, configured with a computer program, where, upon execution, instructions in the computer program cause the computer to operate in accordance with process 50.
Further aspects, features and advantages will become apparent from the following.
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 |
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 |
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 |
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 |
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 | B1 |
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 |
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 |
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 |
WO0065492 | Nov 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20030046649 A1 | Mar 2003 | US |