1. Field of the Invention
The present invention relates in general to the field of integrated circuit design, and more particularly to a system and method for placing integrated circuit functional blocks according to dataflow width.
2. Description of the Related Art
Integrated circuits are fabricated by etching a design of cell formations into silicon or a similar semiconductor substrate and interconnecting the formations with metal wires or other conducting material. A cell is a group of one or more basic circuit elements, such as transistors or capacitors, which perform a function. Each cell typically includes one or more pins with wires interconnecting the pins so that the cells interact in a desired manner. A “net” is a set of two or more pins to be connected. A netlist is a list of nets that is typically developed during design of an integrated circuit hardware description. The design of an integrated circuit generally involves transforming a circuit description of cells and nets into a geometric description that is used to create a mask for etching a semiconductor substrate. During the design process, cells are sometimes grouped into logical blocks that are maintained in a library for repeated use. The logical blocks, also known as leaf cells, have varying sizes and shapes to accomplish desired functions, such as processing, memory, timing, Input/Output (I/O), etc. Since a typical integrated circuit can have large numbers of circuits, the design process is typically automated with computer tools that use the library of blocks. Macroblocks, also known as macros, are multiple instances of leaf cells taken from design libraries.
Integrated circuit design generally attempts to arrange cells in three dimensional space to have an efficient interconnection or routing scheme for a desired functionality. Poor placement of cells effects integrated circuit performance by reducing dataflow between logical blocks, such as by inhibiting timing parameters, causing congestion and providing poor utilization of logical elements. One technique for determining cell placement is Hierarchical Unit Design, which uses a divide and conquer strategy to isolate congested, timing critical and dataflow logic, such as with custom macros and RLM macros. However, Hierarchical Unit Design tends to be very resource intensive, offers low flexibility after an initial floorplan and macroblock sizing is accomplished and uses artificial macroblock boundaries that tend to have inefficient placement with high overhead. Custom Macro Placement provides a regular dataflow structure with low congestion that is well adapted for regular dataflow logic and high density placement having good utilization, however, Custom Macro Placement is resource intensive by using manual schematic building and offers low flexibility to adapt to logic, size and aspect ratio changes. RLM Macro Placement, also known as synthesis, uses a fully automated process with low resource demands that provides highly flexible placement that is adaptable to change, however, often results in irregular structures, higher congestion and more wiring resources that provide low density with low utilization. An alternative to Hierarchical placement is flat unit placement, such as with SuperRLM or Large Block Synthesis. A SuperRLM has no hierarchy and does not use macros, but rather uses leaf cells. Synthesis provides an attractive approach to leaf cell placement due to its automation, however, tends to provide areas of congestion that detract from integrated circuit performance. Synthesis generally has difficulty placing dataflow logic in an efficient manner so that utilization of integrated circuits designed with synthesis tends to be suboptimal. With flat unit placement synthesis techniques, such as SuperRLM and Large Block Synthesis, regular structures are manually placed with full custom placement.
Therefore, a need has arisen for a system and method which provides automated detection and dynamic handling of regular structures of logical blocks within an integrated circuit design for automatically placing regular structures in synthesized macros.
In accordance with the present invention, a system and method are provided which substantially reduce the disadvantages and problems associated with previous methods and systems for placing regular structures in synthesized macros within an integrated circuit design. Dataflow blocks of a design are automatically identified by usage box definition and width and then automatically aligned with associated pin-ins and a dataflow direction to provide improved timing, reduced congestion, greater density and greater utilization for an integrated circuit design.
More specifically, a VHDL compiler compiles a hardware design to provide a netlist to a netlist parser. The netlist parser parses netlist lines to identify predetermined usage box functions and tags the usage box functions as dataflow blocks if the input signals to the function have at least a minimum width. Tagged dataflow blocks are placed by identifying pin-ins, tracing forward from the pin-ins to a tagged dataflow block and aligning the tagged dataflow block with the pin-in along an axis aligned with dataflow direction. If tracing forward identifies additional tagged dataflow blocks, these subsequent dataflow blocks are aligned along the same axis. Tagged dataflow blocks are also placed by finding pin-outs, tracing backward from the pin-outs to the tagged dataflow blocks and aligning the tagged dataflow block with the pin-out along an axis aligned with dataflow direction. Based upon global synthesis constraints, blocks are morphed to adapt to a detected dataflow structure and placed in a library for automated selection and placement.
The present invention provides a number of important technical advantages. One example of an important technical advantage is that macroblocks of an integrated circuit design are placed with improved regularity. Automatically placing regular blocks provides placement with less congestion, greater efficiency in dataflow logic and increased utilization. Automated resizing and moving regular blocks helps to optimize dataflow without additional overhead or manual intervention during placement, such as by adapting aspect ratio and total area of a block in response to constraints, such as global area, preferred aspect ratio, congestion metrics and timing criticality.
The present invention may be better understood, and its numerous objects, features and advantages made apparent to those skilled in the art by referencing the accompanying drawings. The use of the same reference number throughout the several figures designates a like or similar element.
A system and method provides automated detection and dynamic handling of regular structures of macroblocks within an integrated circuit design. Placement information is added to a register-transfer level design of an electronic circuit by defining a set of functions as box usage elements, defining a minimum dataflow width, tagging the defined usage elements in the design if the number of usage element input signals is greater than the minimum dataflow width, and morphing the tagged usage elements to adapt aspect ratio and total area for use in the electronic circuit. A first set of instructions from a computer readable medium, such as nonvolatile memory, parses a netlist design to tag dataflow blocks, such as registers, multiplexers, ecc, parity, and buffer blocks, with keywords that are readable during synthesis. A second set of instructions from a computer readable medium builds dataflow blocks out of standard library cells that are morphed to adapt to desired aspect ratio and area. A third set of instructions stored in a computer readable medium performs preferred and regular placement of the blocks to improve dataflow, such as by applying constraints relating to global area, preferred aspect ratio, congestion and timing criticality for the design.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc. or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Referring now to
Referring now to
Referring now to
Referring now to
Although the present invention has been described in detail, it should be understood that various changes, substitutions and alterations can be made hereto without departing from the spirit and scope of the invention as defined by the appended claims.