The invention relates to the field of electronic device design. More specifically, various implementations of the invention are directed towards synthesizing electronic designs containing sequential operations.
Today, the design of electronic devices no longer begins with diagramming an electronic circuit. Instead, the design of modern electronic devices, and particularly integrated circuits (“IC's”), often begins at a very high level of abstraction. For example, a design may typically start with a designer creating a specification that describes particular desired functionality. This specification, which may be implemented in C, C++, SystemC, or some other programming language, describes the desired behavior of the device at a high level. Device designs at this level of abstraction are often referred to as “algorithmic designs,” “algorithmic descriptions,” or “electronic system level (“ESL”) designs”. Designers then take this algorithmic design, which may be executable, and create a logical design through a synthesis process. The logical design will often be embodied in a netlist. Frequently, the netlist is a register transfer level (“RTL″) netlist.”
Designs at the register level are often implemented by a hardware description language (“HDL”) such as SystemC, Verilog, SystemVerilog, or Very High speed hardware description language (“VHDL”). A design implemented in HDL describes the operations of the design by defining the flow of signals or the transfer of data between various hardware components within the design. For example, an RTL design describes the interconnection and exchange of signals between hardware registers and the logical operations that are performed on those signals.
Designers subsequently perform a second transformation. This time, the register transfer level design is transformed into a gate level design. Gate level designs, like RTL designs, are also often embodied in a netlist, such as, a mapped netlist for example. Gate level designs describe the gates, such as AND gates, OR gates, and XOR gates that comprise the design, as well as their interconnections. In some cases, a gate level netlist is synthesized directly from an algorithmic description of the design, in effect bypassing the RTL netlist stage described above.
Once a gate level netlist is generated, the design is again taken and further transformations are performed on it. First the gate level design is synthesized into a transistor level design, which describes the actual physical components such as transistors, capacitors, and resistors as well as the interconnections between these physical components. Second, place and route tools then arrange the components described by the transistor level netlist and route connections between the arranged components. Lastly, layout tools are used to generate a mask that can be used to fabricate the electronic device, through for example an optical lithographic process.
In general, the process of generating a lower-level circuit description or representation of an electronic device (such as an RTL netlist or a gate level netlist), from a higher-level description of the electronic device (such as an algorithmic description,) is referred to as “synthesis.” Similarly, a software application used to generate a lower-level design from a higher-level design is often referred to as a “synthesis tool.” One difficulty involved in synthesizing an RTL netlist from an algorithmic design is dealing with “pipelines.” A pipeline is a set of elements, such as finite state machine, connected in series such that the output from one element is the input to another element.
In conventional synthesis, sequential operations in the algorithmic description of the device are synthesized into one or more pipelines comprised of a single finite state machine each, which is incapable of processing individual operations. This prevents the pipeline from flushing. That is, an input to the finite state machine is required during each cycle of operation. Although techniques exist which allow for the representation of pipelines within RTL or gate level netlist that can “flush,” they all require manual modification of the algorithmic description prior to synthesis. This allows for errors to be introduced into the synthesized designs.
Various implementations of the invention provide processes and apparatuses for synthesizing a netlist description having a distributed pipeline from an algorithmic description having sequential operations and describing an electronic device design. In some implementations, an algorithmic description for a device design is first identified. Subsequently, a data-flow representation of the algorithmic description is generated; the data-flow representation including a plurality of operations. The plurality of operations are then scheduled, following which, a plurality of pipeline stages are generated corresponding to ones of the plurality of operations. Control logic for the pipeline stages may then be generated, followed by the generation of a netlist representation of the electronic device design based in part upon the scheduling of operations and the generated pipeline stages.
The present invention will be described by way of illustrative embodiments shown in the accompanying drawings in which like references denote similar elements, and in which:
The operations of the disclosed implementations may be described herein in a particular sequential order. However, it should be understood that this manner of description encompasses rearrangements, unless a particular ordering is required by specific language set forth below. For example, operations described sequentially may in some cases be rearranged or performed concurrently. Moreover, for the sake of simplicity, the illustrated flow charts and block diagrams typically do not show the various ways in which particular methods can be used in conjunction with other methods.
It should also be noted that the detailed description sometimes uses terms like “determine” to describe the disclosed methods. Such terms are often high-level abstractions of the actual operations that are performed. The actual operations that correspond to these terms will often vary depending on the particular implementation, and will be readily discernible by one of ordinary skill in the art.
Furthermore, in various implementations of the invention, a mathematical model may be employed to represent an electronic device. With some implementations, a model describing the connectivity of the device, such as for example a netlist, is employed. Those of skill in the art will appreciate that the models, even mathematical models represent real world device designs and real world physical devices. Accordingly, manipulation of the model, even manipulation of the model when stored on a computer readable medium, results in a different device design. More particularly, manipulation of the model results in a transformation of the corresponding physical design and any physical device rendered or manufactured by the device design. Additionally, those of skill in the art can appreciate that during many electronic design and verification processes, the response of a device design to various signals or inputs is simulated. This simulated response corresponds to the actual physical response the device being modeled would have to these various signals or inputs.
Some of the methods described herein can be implemented by software stored on a computer readable storage medium, or executed on a computer. Accordingly, some of the disclosed methods may be implemented as part of a computer implemented electronic design automation (“EDA”) tool. The selected methods could be executed on a single computer or a computer networked with another computer or computers. For clarity, only those aspects of the software germane to these disclosed methods are described; product details well known in the art are omitted
As the techniques of the present invention may be implemented using software instructions, the components and operation of a generic programmable computer system on which various implementations of the invention may be employed is described. Accordingly,
The processing unit 105 and the system memory 107 are connected, either directly or indirectly, through a bus 113 or alternate communication structure, to one or more peripheral devices. For example, the processing unit 105 or the system memory 107 may be directly or indirectly connected to one or more additional devices, such as; a fixed memory storage device 115, for example, a magnetic disk drive; a removable memory storage device 117, for example, a removable solid state disk drive; an optical media device 119, for example, a digital video disk drive; or a removable media device 121, for example, a removable floppy drive. The processing unit 105 and the system memory 107 also may be directly or indirectly connected to one or more input devices 123 and one or more output devices 125. The input devices 123 may include, for example, a keyboard, a pointing device (such as a mouse, touchpad, stylus, trackball, or joystick), a scanner, a camera, and a microphone. The output devices 125 may include, for example, a monitor display, a printer and speakers. With various examples of the computing device 101, one or more of the peripheral devices 115-125 may be internally housed with the computing unit 103. Alternately, one or more of the peripheral devices 115-125 may be external to the housing for the computing unit 103 and connected to the bus 113 through, for example, a Universal Serial Bus (“USB”) connection.
With some implementations, the computing unit 103 may be directly or indirectly connected to one or more network interfaces 127 for communicating with other devices making up a network. The network interface 127 translates data and control signals from the computing unit 103 into network messages according to one or more communication protocols, such as the transmission control protocol (“TCP”) and the Internet protocol (“IP”). Also, the interface 127 may employ any suitable connection agent (or combination of agents) for connecting to a network, including, for example, a wireless transceiver, a modem, or an Ethernet connection.
It should be appreciated that the computing device 101 is shown here for illustrative purposes only, and it is not intended to be limiting. Various embodiments of the invention may be implemented using one or more computers that include the components of the computing device 101 illustrated in
As stated above, various implementations of the invention are directed towards synthesizing a register transfer level description of an electronic device design containing a distributed pipeline, from an algorithmic description of the electronic device design that includes sequential operations. Accordingly pipelines (sometimes referred to as “data pipelines” or “instruction pipeline”,) are briefly discussed herein. Additionally, algorithmic descriptions having sequential operations are discussed.
As indicated above, traditional high level synthesis techniques typically apply a centralized approach to synthesizing pipelines. More particularly, an element capable of handling the required number of consecutive operations defined by the schedule is generated. For example,
As those of skill in the art can appreciate, the datapath control finite state machine 401 can process two consecutive transactions, however it has only a single state. Although the conventional method of synthesizing pipelines typically results in relatively compact hardware, the fact that neighboring operations cannot be decoupled presents a major disadvantage to synthesizing electronic designs having pipelined operations.
To clarify this stated disadvantage,
As briefly mentioned above, a pipeline capable of “flushing” may conventionally be synthesized by first adding enable arguments into the algorithmic description of the design and making the execution of the algorithmic design conditional on the enable arguments. Subsequently, when these enable arguments are synthesized, an enable port will be generated in the register transfer level design. These enable ports may then be used as handshaking inputs to decouple the operations of the pipeline. Although this process provides for the synthesis of pipelines that flush, the synthesized netlists as well as the conventional synthesis processes have many disadvantages.
One disadvantage is that the conventional techniques require the enable arguments (i.e. handshaking code) to be inserted into the algorithmic design prior to synthesis. Often, the handshaking code must be inserted manually by a designer. As the handshaking elements and the data inputs are subject to timing constraints, scheduling errors are often manifest in the synthesized register transfer level design. Additionally, conventional techniques do not work for designs with multi-cycle components or vector inputs. As a result, conventional synthesis techniques do not provide suitable methods for synthesizing pipelines having distributed control.
Scheduling the Algorithmic Design
As described above, an algorithmic device design describes functions and “operations” with which the design should perform. For example, the function definition 201 of
For example,
In various implementations, the data-flow representation may be graphical, as illustrated in
Scheduling in the context of high level synthesis, and particularly, scheduling methods that may be utilized by various implementations of the present invention are discussed in detail in Automatic Module Allocation in High Level Synthesis, by P. Gutberlet et al., Proceeding of the Conference on European Design Automation, pp. 328-333, 1992, CASCH-A Scheduling Algorithm for High Level Synthesis, by P. Gutberlet et al., Proceeding of the Conference on European Design Automation, pp. 311-315, 1991, A Formal Approach to the Scheduling Problem in High Level Synthesis, by Cheng-Tsung Hwang et al., IEEE Transaction on Computer-Aided Design, Vol. 10 No. 4 pp. 464-475, April 1991, and Force-Drected Scheduling for the Behavioral Synthesis of ASICs, by P. G. Paulin et al., IEEE Transaction on Computer-Aided Design of Integrated Circuits and Systems, Vol. 8 No. 6 pp. 661-679, June 1989, which articles are all incorporated entirely herein by reference.
Forming the Pipeline Stages
Returning to
In various implementations, the operations 803 cuts the block between each control step, as illustrated in
Returning to
Generating the Control Logic
Returning to
Generating the Netlist Representation of the Electronic Design
Returning to
Distributed Pipeline Generation for Multi-Cycle Operations
The method 601 may be applied to an algorithmic description 605 that includes multi-cycle operations. A multi-cycle operation is an operation that is scheduled to be completed in multiple control steps. For example,
Distributed Pipeline Generation for Shared Operations
The method 601 may also be applied to an algorithmic description 605 that includes shared operations. A shared operation is an operation that is used multiple times. For example,
In various implementations, the shared component 1707 will not have a state. For example, dataflow components often do not have a state. Contrast this with input/output components, memories and user operations, which often do have a state. With some implementations, the arbiter 1705 provides synchronization between the pipeline stages 1703 that share the shared component 1707. These types of arbiters are often referred to as “blocking” arbiters. With alternative implementations, the arbiter 1705 is a multiplexer. This type of arbiter is referred to as a “non-blocking” arbiter. These types of arbiters may be used where it is assumed that the pipeline stages 1703 that share the shared component 1707 are synchronized with other means, for example through control logic. With some implementations, a priority may be assigned to particular pipeline stages 1703. For example, pipeline stages 1703 closer to the end of the pipeline 1701 may be assigned a higher priority to assist in avoiding deadlocks in the pipeline arbitration policy.
Various implementations of the invention are applicable to algorithmic designs having loops. For example,
In various implementations, subsequent pipeline stages are generated that correspond to the separate operations within the loop. With some implementations, a slave stage may be created to correspond to the loop. For example,
Distributed Pipeline Generation Tool
Various methods and tools for synthesizing a netlist description of an electronic device design, from an algorithmic description of the device design having sequential operations, have been disclosed. As stated, with some implementations, an algorithmic description for a device design is first identified. Subsequently, a data-flow representation of the algorithmic description is generated; the data-flow representation including a plurality of operations. The plurality of operations are then scheduled, following which, a plurality of pipeline stages are generated corresponding to ones of the plurality of operations. Control logic for the pipeline stages may then be generated, followed by the generation of a netlist representation of the electronic device design based in part upon the scheduling of operations and pipeline stages.
Although certain devices and methods have been described above in terms of the illustrative embodiments, the person of ordinary skill in the art will recognize that other embodiments, examples, substitutions, modifications and alterations are possible. It is intended that the following claims cover such other embodiments, examples, substitutions, modifications and alterations within the spirit and scope of the claims.