The present invention generally relates to the field of integrated circuit design. More specifically, the present invention relates to system and method for at least partially automating the process of designing and laying-out custom memory registers.
Early generations of electronic computing devices (e.g. computers) were based on vacuum tubes. Later, vacuum tubes were replaced by semiconductor devices, where the first discrete semiconductor devices had one transistor on each device substrate. Subsequent advances in semiconductor fabrication technology made it possible to put more than one transistor on a single substrate, in the form of an integrated circuit (IC). As a consequence of this integration, more and more individual functions and complex systems were made possible.
The first Small-Scale-Integration (SSI) IC's had very small numbers of devices on a single chip—diodes, transistors, resistors and capacitors (without any inductors), making it possible to fabricate one or more logic gates on a signal device. Further generations of computing devices utilized Large-Scale Integration (LSI), IC's with at least a thousand logic gates on a single IC.
The natural successor to LSI based computing devices were Very-Large-Scale-Integration (VLSI—many tens of thousands of gates on a single chip) based computing devices. Current IC fabrication technology has moved far past this mark, and today's microprocessors have many millions of gates and hundreds of millions of individual transistors. Accordingly, the design process for VLSI circuits has evolved from a relatively simple process, where relatively few circuits were initially placed onto a circuit layout, to modern complex integrated circuits, where computer aided design (CAD) tools are used to realize a circuit layout.
Today's VLSI circuits are generally comprised of many different synchronous circuits. A synchronous circuit is characterized as being comprised of memory devices interwoven between elements of logic devices. Such memory devices are usually referred to as latch points, or when referring to sets of multiple memory devices, registers. Registers are synchronous components and their activity is usually coordinated by a global “clock” signal that permeates through the entire circuit or through a portion of the circuit.
A full custom design methodology of an integrated VLSI circuit refers the creation of an integrated circuit that is highly optimized usually for speed, power or area (when compared to standard cell design). Furthermore, a full custom circuit is usually comprised of numerous types of registers with different specifications.
According to the current state of the art, the steps of producing a full custom memory register layout include:
I. Determining the register memory size (e.g. amount of data bits).
II. Determining the register's output diving power (i.e. maximum current at output).
III. Determining the LCB (Local Clock Buffer) of the register.
IV. Defining various characteristics, such as testability and physical geometry.
V. Manually creating the complete logical and electrical design of the circuit.
The existing methodology for creating full custom registers requires the designer to manually perform the steps described above, while taking into account all of the specifications the register being created has to comply with. Once a full custom register is created, it can be added to a library of registers that other designers can benefit from (i.e. use already made registers from the library). But even if a large library of registers is complied, it will rarely encompass the entire range of possible custom register specifications for a project. Thus, every small deviation in the specifications of an existing library register requires the creation of a new custom register design.
The information used for the design of a full custom memory register can be divided to three different categories:
I. Technology specifications—this group consists of data element such as transistor sizes and characteristics, metal interconnect rules and manufacturing grids.
II. Project methodology specifications—this group consists of data element such as maximum number of bits per register, standard register layout topologies, logical and electrical effort calculation methodology and “clock” signal distribution methodology.
III. Custom specifications—this group refers to the specific requirements a designer has in regard to the register he/she wishes to create and consists of data elements such as: number of data bits, clock bay location and size, latch type of the register (e.g. Master-Slave, Edge-triggered, Level Sensitive), signal driving strength, polarity (e.g, input inverted, output inverted), power supply location, LCB (local clock buffer size), structure of “clock” signal and the “clock” signal capacitance load, testability options (e.g. scan chain, scan direction, abist) and data flow direction in the layout.
The creation and integration of a full custom register design within the general circuit design is a major time consuming phase of the overall process. There is a need for an improved method and system for the design of custom registers.
There is provided, in accordance with some embodiments of the present invention, a method and system for automating the design of a memory register. An initial step for creating and designing a memory register is to input or otherwise store project and technology specification data associated with the register in a computer based system according to some embodiments of the present invention. According to yet further embodiments of the present invention, the project and technology specifications data for a given project may be used for the design/creation of substantially all of the memory registers associated with the given project.
According to some embodiments of the present invention, the combination of technology specifications and project specifications may produce a set of project specific layout constraints.
According to some embodiments of the present invention, the generic rules used for the production of a memory register may be computerized and stored in a generic register production rules database.
According to some embodiments of the present invention, the generic register production rules may be adapted according to the project specific layout constraints.
According to some embodiments of the present invention, the adapted generic register production rules may be referred to as tech project specification layout rules.
According to some embodiments of the present invention, the custom specification of the memory register, in combination with the tech project specification layout rules may be accumulated and processed automatically to a full custom layout of the memory register.
According to some further embodiments of the present invention, the project specifications and/or technology specifications may be stored in the system in advance.
According to some embodiments of the present invention, some of the parameters used for the full custom design of a memory register, may be obtained automatically from the custom specification of the register, the register's project specifications and the register's technology specifications.
According to some embodiments of the present invention, the adapted generic rules used for the production of memory register, may be referred to as a set of rules for the design of a fully custom memory register which takes into account the constraints derived from the technology specifications and projects specifications.
According to some further embodiments of the present invention, the output may be a complete physical design of the memory register. According to yet further embodiments of the present invention, the output may be a layout view and or logical schematic view and or symbolic view that depict the integration of the memory register in the integrated circuit.
According to some embodiments of the present invention, the layout of the memory register may be encapsulated in a software code that will be generated in accordance with some embodiments of the present invention. According to yet further embodiments of the present invention, the generated code is reusable and may be used for the creation of more than one register.
The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriated, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.
In the following detailed description, numerous specific details are set for the in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present invention.
Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as “processing”, “computing”, “calculating”, “determining”, or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices.
Embodiments of the present invention may include apparatuses for performing the operations herein. This apparatus may be specially constructed for the desired purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
Generally speaking, the software implementation of the present invention, program 62 in
The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired method. The desired structures for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the inventions as described herein.
There is provided, in accordance with some embodiments of the present invention, a method and system for automating the design of a memory register. An initial step for creating and designing a memory register is to input or otherwise store project and technology specification data associated with the register in a computer based system according to some embodiments of the present invention. According to yet further embodiments of the present invention, the project and technology specifications data for a given project may be used for the design/creation of substantially all of the memory registers associated with the given project.
According to some embodiments of the present invention, the combination of technology specifications and project specifications may produce a set of project specific layout constraints.
According to some embodiments of the present invention, the generic rules used for the production of a memory register may be computerized and stored in a generic register production rules database.
According to some embodiments of the present invention, the generic register production rules may be adapted according to the project specific layout constraints.
According to some embodiments of the present invention, the adapted generic register production rules may be referred to as tech project specification layout rules.
According to some embodiments of the present invention, the custom specification of the memory register, in combination with the tech project specification layout rules may be accumulated and processed automatically to a full custom layout of the memory register.
According to some further embodiments of the present invention, the project specifications and/or technology specifications may be stored in the system in advance.
According to some embodiments of the present invention, some of the parameters used for the full custom design of a memory register, may be obtained automatically from the custom specification of the register, the register's project specifications and the register's technology specifications.
According to some embodiments of the present invention, the adapted generic rules used for the production of memory register, may be referred to as a set of rules for the design of a fully custom memory register which takes into account the constraints derived from the technology specifications and projects specifications.
According to some further embodiments of the present invention, the output may be a complete physical design of the memory register. According to yet further embodiments of the present invention, the output may be a layout view and or logical schematic view and or symbolic view that depict the integration of the memory register in the integrated circuit.
According to some embodiments of the present invention, the layout of the memory register may be encapsulated in a software code that will be generated in accordance with some embodiments of the present invention. According to yet further embodiments of the present invention, the generated code is reusable and may be used for the creation of more than one register.
Turning now to
According to some embodiments of the present invention, the project specifications database and the technology specifications database may be populated with parameters such as: transistor sizes and characteristics, metal interconnect rules, manufacturing grids, maximum number of bits per register, standard register layout topologies, logical and electrical effort calculation methodology and “clock” signal distribution methodology.
Turning now to
Turning now to
According to some embodiments of the present invention, the database of generic production rules may generate parameters such as: element's size, which is calculated in accordance with the technology specifications, element's location, which is calculated in view of physical constraints (i.e. no two cells are adjacent) and in such a way that will enable an efficient routing methodology.
Turning now to
Turning now to
According to some embodiments of the present invention, the custom register design requirements may include parameters such as: number of bits, clock bay location and size, latch type, signal driving strength, polarity, testability options and data flow direction in layout.
Turning now to
Turning now to
According to some embodiments of the present invention, an exemplary routing algorithm encapsulates the following steps:
Selecting Wire Parameters—According to the Project and/or Technology Definitions:
Selecting Routing Tracks in Accordance with the Following Parameters:
Turning now to
Turning now to