This invention relates to a method and apparatus for performing logic synthesis, and in particular to a method and apparatus for performing logic synthesis of at least a part of an integrated circuit (IC) design.
Integrated circuit (IC) devices comprising, for example, application processors that are targeted at many different products are required to support many different peripheral capabilities. In order to support such peripheral capabilities, the IC devices are required to comprise appropriate peripheral modules therefor. However, in practice only a subset of the supported peripheral capabilities will actually be used in any one product, resulting in the respective peripheral modules being superfluous and unused. Such superfluous peripheral modules waste die area and also are an unnecessary additional source of leakage power within the IC device.
Whilst some peripheral modules can be designed to support multiple peripheral capabilities, it is often the case that the individual peripheral modules are provided by external vendors, and as such the cost of in-house re-design of a single peripheral module to support multiple peripheral capabilities is significantly higher than that of the area saving.
The present invention provides a method of performing logic synthesis of at least a part of an integrated circuit (IC) design, an apparatus comprising at least one signal processing module arranged to perform logic synthesis of at least a part of an integrated circuit (IC) design, an integrated circuit device, and a non-transitory computer program product having executable program code stored therein for performing logic synthesis of at least a part of an integrated circuit(IC) design as described in the accompanying claims.
Specific embodiments of the invention are set forth in the dependent claims.
These and other aspects of the invention will be apparent from and elucidated with reference to the embodiments described hereinafter.
Further details, aspects and embodiments of the invention will be described, by way of example only, with reference to the drawings. In the drawings, like reference numbers are used to identify like or functionally similar elements. Elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale.
The present invention will now be described with reference to the accompanying drawings in which examples of a method and apparatus for performing logic synthesis of an integrated circuit (IC) design are described and illustrated. However, it will be appreciated that the present invention is not limited to the specific examples illustrated and described herein. For example, the present invention is not limited to performing logic synthesis based on register transfer level design abstractions and gate level netlists as herein described in relation to the illustrated examples, and it will be appreciated that any suitable formats for describing the integrated circuit design functionality and/or gate level implementation may be used
Furthermore, because the illustrated embodiments of the present invention may for the most part, be implemented using electronic components and circuits known to those skilled in the art, details will not be explained in any greater extent than that considered necessary as illustrated below, for the understanding and appreciation of the underlying concepts of the present invention and in order not to obfuscate or distract from the teachings of the present invention.
Digital Integrated Circuit (IC) design comprises various phases. Typically, a first phase comprises the system-level design phase in which the functional requirements of the, or each, IC module are defined. Next, the functional requirements are converted into a behavioural abstraction of circuits within the IC design, such as in the form of one or more register transfer level (RTL) description(s). RTL descriptions are well known in the art, and are often used to model synchronous digital circuits in terms of the flow of digital signals between hardware registers, and the logical operations performed on those signals. A logic design phase then typically comprises some form of logic synthesis whereby the behavioural abstraction (e.g. RTL description) of the IC design produces a gate level implementation thereof, for example comprising one or more gate level netlists. Finally, placement and routing of the gate level implementation is performed whereby the gates and interconnections are laid out on the die area.
In accordance with some examples of the present invention, there is provided a method and apparatus for performing logic synthesis of at least a part of an integrated circuit (IC) design. The method comprises identifying a first and at least one further module within the IC design that are mutually exclusive, selecting at least one register element within the first identified module and at least one register element within the at least one further identified module to be shared, and merging the first and at least one further mutually exclusive modules such that at least one common register element is shared between the first and at least one further mutually exclusive modules for the register elements selected to be shared.
In this manner, the number of register elements required to implement the plurality of mutually exclusive modules within a single IC design may be reduced, thereby reducing the overall die area required for the mutually exclusive modules, as well as the leakage power therefor.
In some examples, the method may comprise selecting register elements to be shared based at least partly on the register elements comprising analogous clock signal requirements. For example, the method may comprise selecting register elements to be shared based at least partly on the register elements being part of a common clock gating group. Additionally/alternatively, the method may comprise selecting register elements to be shared based at least partly on layout considerations for the first and at least one further mutually exclusive modules.
In some examples, merging the first and at least one further mutually exclusive modules may comprise copying non-shared elements from each of the first and at least one further mutually exclusive modules. Furthermore, merging the first and at least one further mutually exclusive modules may comprise branching an output of the at least one common register element to respective non-shared elements of each of the first and at least one further mutually exclusive modules. Additionally/alternatively, merging the first and at least one further mutually exclusive modules may comprise routing inputs to the at least one common register element through at least one multiplexing component. Furthermore, the method may comprise configuring control signals for the at least one multiplexing component to enable selection of individual module functionality.
In some examples, merging the first and at least one further mutually exclusive modules may be performed prior to insertion of clock gating.
In some examples, the method may further comprise performing logic equivalence comparison for each of the first and at least one further merged modules.
According to a further aspect of the invention there is provided an integrated circuit device comprising a first and at least one further mutually exclusive modules, wherein the first and at least one further mutually exclusive modules share at least one common register element implemented in accordance with the above method.
Referring now to
In the illustrated example, module A 110 is illustrated as comprising six register elements 111-116 and combination logic illustrated generally at 117 and 118, whilst module B 120 is illustrated as comprising four register elements 122-124, 126 and combination logic illustrated generally at 127 and 128. As outlined above, in accordance with some examples of the invention there is provided a method and apparatus for performing logic synthesis comprising identifying mutually exclusive modules within an IC design, selecting register elements within the mutually exclusive modules to be shared, and merging the mutually exclusive modules such that common register elements are shared between the mutually exclusive modules for the register elements selected to be shared.
Thus, in this manner, the two modules 110, 120 have been effectively merged, with non-shared elements of the two modules, such as register elements 111, 115 of module A 110 and the combinational logic 117, 118, 127, 128 of both modules 110, 120 in the illustrated example, being implemented substantially alongside one another within the IC device 200, as illustrated at 211, 215, 217, 218, 227, and 228 in
In this manner, the number of register elements required to implement the merged modules 110, 120 within the IC device 200 may be reduced compared to separately implementing the two modules within the IC device 200. Accordingly the total die area for implementing the two functional modules may be significantly reduced, as well as reducing leakage power for the IC device 200.
Referring now to
If no mutually exclusive modules are identified, the method may then move on to 345 where the RTL descriptions of the various modules of the IC design are compiled, before proceeding to the physical placement and routing phase of the design process at 350. The method then ends, at 355.
Referring back to 315, if at least two modules are identified as being mutually exclusive, the method moves on to 320 where, in the illustrated example, the RTL descriptions for (at least) the mutually exclusive modules are compiled to generate gate level netlists therefor. A comparison of register elements of the mutually exclusive modules is then performed and register elements to be shared are selected, at 325. For example, in the example illustrated in
Having selected the register elements to be shared, the method moves on to 330 where the mutually exclusive modules are merged around the register elements selected to be shared, such that one or more common register element(s) is/are shared between the mutually exclusive modules for the register elements selected to be shared.
Referring back to
Next, at 340, the method further comprises performing logic equivalence comparison for each of the merged modules in order to ensure that the merged instance of each module exhibits the same functional behaviour as the respective original, unmerged module. The method then moves on to 345 where the RTL descriptions of any non-merged modules of the IC design (e.g. modules that were not identified as being mutually exclusive at 315) are compiled, before proceeding to the physical placement and routing phase of the design process at 350. The method then ends, at 355.
Referring now to
In some examples, the signal processing module(s) 510 is/are arranged to execute computer program code operable for identifying a first and at least one further module within the IC design that are mutually exclusive, selecting at least one register element within the first identified module and at least one register element within the at least one further identified module to be shared, and merging the first and at least one further mutually exclusive modules such that at least one common register element is shared between the first and at least one further mutually exclusive modules for the register elements selected to be shared.
The invention may also be implemented in a computer program for running on a computer system, at least including code portions for performing steps of a method according to the invention when run on a programmable apparatus, such as a computer system or enabling a programmable apparatus to perform functions of a device or system according to the invention.
A computer program is a list of instructions such as a particular application program and/or an operating system. The computer program may for instance include one or more of: a subroutine, a function, a procedure, an object method, an object implementation, an executable application, an applet, a servlet, a source code, an object code, a shared library/dynamic load library and/or other sequence of instructions designed for execution on a computer system.
The computer program may be stored internally on computer readable storage medium or transmitted to the computer system via a computer readable transmission medium. All or some of the computer program may be provided on computer readable media permanently, removably or remotely coupled to an information processing system. The computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; MRAM; volatile storage media including registers, buffers or caches, main memory, RAM, etc.; and data transmission media including computer networks, point-to-point telecommunication equipment, and carrier wave transmission media, just to name a few.
A computer process typically includes an executing (running) program or portion of a program, current program values and state information, and the resources used by the operating system to manage the execution of the process. An operating system (OS) is the software that manages the sharing of the resources of a computer and provides programmers with an interface used to access those resources. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the system.
The computer system may for instance include at least one processing unit, associated memory and a number of input/output (I/O) devices. When executing the computer program, the computer system processes information according to the computer program and produces resultant output information via I/O devices.
In the foregoing specification, the invention has been described with reference to specific examples of embodiments of the invention. It will, however, be evident that various modifications and changes may be made therein without departing from the broader spirit and scope of the invention as set forth in the appended claims.
However, other modifications, variations and alternatives are also possible. The specifications and drawings are, accordingly, to be regarded in an illustrative rather than in a restrictive sense.
In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. The word ‘comprising’ does not exclude the presence of other elements or steps then those listed in a claim. Furthermore, the terms “a” or “an,” as used herein, are defined as one or more than one. Also, the use of introductory phrases such as “at least one” and “one or more” in the claims should not be construed to imply that the introduction of another claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an.” The same holds true for the use of definite articles. Unless stated otherwise, terms such as “first” and “second” are used to arbitrarily distinguish between the elements such terms describe. Thus, these terms are not necessarily intended to indicate temporal or other prioritization of such elements. The mere fact that certain measures are recited in mutually different claims does not indicate that a combination of these measures cannot be used to advantage.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/IB2013/050153 | 1/8/2013 | WO | 00 |