Systems and methods for multi-bit memory with embedded logic
Systems and method are provided that include a standard cell with multiple input and output storage elements, such as flip flops, latches, etc., with some combination logic interconnected between them. In embodiments, the slave latches on input flip flops are replaced with a fewer number latches at a downstream node(s) of the combination logic resulting in improved performance, area and power, while maintaining functionality at the interface pins of the standard cell. The process of inferring such a standard cell from a behavioral description, such as RTL, of a design or remapping equivalent sub-circuits from a netlist to such a standard cell is also described.
Latest Taiwan Semiconductor Manufacturing Company, Ltd. Patents:
This application is a continuation application of U.S. patent application Ser. No. 16/879,871, filed May 21, 2020, which is incorporated herein by reference in its entirety.
BACKGROUNDElectronic Design Automation (EDA) and related tools enable efficient design of complex integrated circuits which may have extremely large numbers of components (e.g., thousands, millions, billions, or more). Specifying characteristics and placement of all of those components (e.g., transistor arrangements to implement desired logic, types of transistors, signal routing) by hand would be extremely time consuming and expensive for modern integrated circuits, if not impossible. Modern EDA tools utilize cells to facilitate circuit design at different levels of abstraction. A cell in the context of EDA is an abstract representation of a component within a schematic diagram or physical layout of an electronic circuit in software. Circuits may be designed at a logical layer of abstraction using cells, where those circuits may then be implemented using lower level specifications (e.g., transistor arrangement, signal routing) associated with those cells.
Aspects of the present disclosure are best understood from the following detailed description when read with the accompanying figures. It is noted that, in accordance with the standard practice in the industry, various features are not drawn to scale. In fact, the dimensions of the various features may be arbitrarily increased or reduced for clarity of discussion.
The following disclosure provides many different embodiments, or examples, for implementing different features of the provided subject matter. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. For example, the formation of a first feature over or on a second feature in the description that follows may include embodiments in which the first and second features are formed in direct contact, and may also include embodiments in which additional features may be formed between the first and second features, such that the first and second features may not be in direct contact. In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed.
Further, spatially relative terms, such as “beneath,” “below,” “lower,” “above,” “upper” and the like, may be used herein for ease of description to describe one element or feature's relationship to another element(s) or feature(s) as illustrated in the figures. The spatially relative terms are intended to encompass different orientations of the device in use or operation in addition to the orientation depicted in the figures. The apparatus may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein may likewise be interpreted accordingly.
An Integrated Circuit is a complex network of a very large number of components (e.g., transistors, resistors, capacitor) interconnected using the features of a process technology to realize a desired function. Manually design such a component is typically not feasible because of the number of steps involved and the amount of design information that needs to be processed. EDA tools may be used to assist the designers in this process. Due to the size and complex nature of the design process, the integrated circuit may be designed using a hierarchical approach where the design is broken down in smaller pieces which are assembled to form the complete chip. This process also helps in pre-designing commonly used sub-blocks and reusing them where needed. A standard cell library is one such collection of basic components (e.g., AND, OR, NAND, NOR, XOR, Flip-flops, Latches) that is commonly used by certain EDA tools to automate the generation of layout from a behavioral description of a block. Each piece of design may have an abstract representation for the various information that is needed to capture the design such as functional behavior, circuit description, physical layout, timing behavior, many of which are used by the EDA tools to assist in the design process.
EDA tools may include a library of standard cells associated with common circuit functions. For example, standard cells can be associated logic gates, such as an AND gate, an OR gate, an XOR gate, a NOT gate, a NAND gate, a NOR gate, and an XNOR gate, and circuits such as a multiplexer, a flip-flop, an adder, and a counter. Those standard cells can be arranged to realize more complex integrated circuit functions. When designing an integrated circuit having specific functions, standard cells may be selected. Next, designers, or EDA software, or ECAD (Electronic Computer-Aided Design) tools draw out design layouts of the integrated circuit including the selected standard cells and/or non-standard cells. The design layouts may be converted to photomasks. Then, semiconductor integrated circuits can be manufactured, when patterns of various layers, defined by the photomasks, are transferred to a substrate.
Electronic circuit design engines may provide a variety of different circuit design functionality.
Because standard cells are designed with frequent reuse in mind, more effort may be put into their optimization over a one-off circuit synthesis. Full circuit timing simulation may be used to validate timing within the standard cell, ensuring accuracy and enabling more aggressive designs. For example, transistors of a particular size in a particular arrangement with optimized routing may be selected within a standard cell to maximize power efficiency and speed. Standard cells may implement a wide variety of transistor arrangements. In one example, a standard cell utilizes pass transistor logic, which can eliminate redundant transistors that may be present (e.g., for margin). In one pass transistor logic example, transistors are used as switches to pass logic levels between nodes of a circuit, instead of as switches connected directly to supply voltages.
With reference back to
The circuit analysis and modification engine 204 analyzes a current version of the integrated circuit design 502 and provides automated circuit modifications (e.g., optimizations) or presents options for circuit modifications to a designer. For example, upon receiving the portion of the integrated circuit design depicted at 502, the circuit analysis and modification engine 204 determines that the standard cell at 508 may provide improved benefits (e.g., performance, power, area) in implementing the same logic. The standard cell at 508 utilizes three input flip flops FF0, FF1, FF2 to capture input data signals that are provided to a multiplexer, with the output of the multiplexer being received by a fourth flip flop FF3 that provides output from the standard cell.
Use of a single standard cell, as suggested by the circuit analysis and modification engine 204 in
With reference back to
For example, the circuit synthesizer 206 may modify an integrated circuit design to reduce the number of components in a design to increase power efficiency, reduce area, and/or increase circuit speed performance.
Embedded logic multi-bit flip flops as described herein may take a variety of forms. For example, in one embodiment, all inputs to the combinational logic (e.g., 304) may be provided to a storage element (e.g., a flip flop) before reaching the combinational logic. In other examples, one or more inputs to the combinational logic may not be received by a storage element prior to reaching the combinational logic. For example, in an embodiment like that of
Optimizations as described herein may take a wide variety of forms. For example,
In
Each of the element managers, real-time data buffer, conveyors, file input processor, database index shared access memory loader, reference data buffer and data managers may include a software application stored in one or more of the disk drives connected to the disk controller 1290, the ROM 1258 and/or the RAM 1259. The processor 1254 may access one or more components as required. A display interface 1287 may permit information from the bus 1252 to be displayed on a display 1280 in audio, graphic, or alphanumeric format. Communication with external devices may optionally occur using various communication ports 1282. In addition to these computer-type components, the hardware may also include data input devices, such as a keyboard 1279, or other input device 1281, such as a microphone, remote control, pointer, mouse and/or joystick.
Additionally, the methods and systems described herein may be implemented on many different types of processing devices by program code comprising program instructions that are executable by the device processing subsystem. The software program instructions may include source code, object code, machine code, or any other stored data that is operable to cause a processing system to perform the methods and operations described herein and may be provided in any suitable language such as C, C++, JAVA, for example, or any other suitable programming language. Other implementations may also be used, however, such as firmware or even appropriately designed hardware configured to carry out the methods and systems described herein.
The systems' and methods' data (e.g., associations, mappings, data input, data output, intermediate data results, final data results, etc.) may be stored and implemented in one or more different types of computer-implemented data stores, such as different types of storage devices and programming constructs (e.g., RAM, ROM, Flash memory, flat files, databases, programming data structures, programming variables, IF-THEN (or similar type) statement constructs, etc.). It is noted that data structures describe formats for use in organizing and storing data in databases, programs, memory, or other computer-readable media for use by a computer program.
The computer components, software modules, functions, data stores and data structures described herein may be connected directly or indirectly to each other in order to allow the flow of data needed for their operations. It is also noted that a module or processor includes but is not limited to a unit of code that performs a software operation, and can be implemented for example as a subroutine unit of code, or as a software function unit of code, or as an object (as in an object-oriented paradigm), or as an applet, or in a computer script language, or as another type of computer code. The software components and/or functionality may be located on a single computer or distributed across multiple computers depending upon the situation at hand.
According to some embodiments, a method for automating design of an integrated circuit is provided. An integrated circuit design file is received that specifies a plurality of multi-stage data storage elements. One or more logic functions are identified positioned between a first data storage element and a second data storage element. The integrated circuit design is automatically modified by deleting a second stage of the first data storage element in the integrated circuit design; routing a first stage of the first data storage element to the one or more logic functions; and routing output of the one or more logic functions to a second stage that is further routed to the second data storage element. The modified integrated circuit design is stored in a non-transitory computer-readable medium.
In embodiments, a computer-readable medium is encoded with a cell library containing data associated with a plurality of standard cells for performing electronic design automation. The cell library includes a standard cell data record comprising a logic definition that include a plurality of input stage master latches, each input stage master latch receiving a clock signal; a logic function that receives output from the plurality of input stage master latches; a slave latch that receives output from the logic function, the slave latch receiving a timing signal based on the clock signal; and an output storage element that receives output from the slave latch. The standard cell data record further includes a physical definition comprising identification of a plurality of transistors for implementing a cell associated with the standard cell data record and routing among the plurality of transistors and timing information associated with the standard cell, wherein the timing information is generated via simulation.
In certain embodiments, a method for optimizing a circuit design includes accessing an integrated circuit design and identifying a replaceable segment of the integrated circuit design having cells that comprise a multibit flip flop followed by a logic function followed by a storage unit. The integrated circuit design is modified by automatically replacing the components of the replaceable segment with a standard cell that comprises: a plurality of input stage master latches; a function that replicates operation of the logic function that receives output from the plurality of input stage master latches; a slave latch that receives output from the logic function; and an output storage element that receives output from the slave latch. The modified integrated circuit design is stored in a non-transitory computer-readable medium.
The foregoing outlines features of several embodiments so that those skilled in the art may better understand the aspects of the present disclosure. Those skilled in the art should appreciate that they may readily use the present disclosure as a basis for designing or modifying other processes and structures for carrying out the same purposes and/or achieving the same advantages of the embodiments introduced herein. Those skilled in the art should also realize that such equivalent constructions do not depart from the spirit and scope of the present disclosure, and that they may make various changes, substitutions, and alterations herein without departing from the spirit and scope of the present disclosure.
Claims
1. A method for optimizing a design, comprising:
- accessing the design;
- using the design to identify a replaceable segment of the design, based on an identification of multibit first storage followed by a logic function followed by second storage, wherein the multibit first storage includes a plurality of first slave latches;
- modifying the design by automatically replacing the replaceable segment that comprises the plurality of first slave latches with a standard cell that comprises a second slave latch at an output from the logic function; and
- storing the modified design in a non-transitory computer-readable medium.
2. The method of claim 1, wherein the standard cell further comprises:
- a plurality of input stage master latches;
- the logic function configured to receive outputs from the plurality of input stage master latches; and
- the second storage configured to receive an output from the second slave latch.
3. The method of claim 2, further comprising synthesizing the modified design, wherein synthesizing the modified design comprises:
- routing an input signal to each input stage master latch from upstream cells; and
- routing an output signal from the second storage to a downstream cell.
4. The method of claim 3, wherein synthesizing the modified design does not include routing signals within the replaceable segment from the multibit first storage to the logic function and further does not include routing signals within the replaceable segment from the logic function to the second storage.
5. The method of claim 1, wherein the design comprises a register transfer-level specification.
6. The method of claim 1, wherein the design comprises a netlist.
7. The method of claim 1, wherein automatically replacing the replaceable segment reduces a total number of slave latches.
8. The method of claim 1, wherein the replaceable segment does not include pass transistor logic, and wherein the standard cell does include pass transistor logic.
9. A method of automating design of an integrated circuit, comprising:
- receiving an integrated circuit design file that specifies a plurality of multi-stage data storage elements;
- identifying one or more logic functions of the multi-stage data storage elements positioned between one or more first data storage elements and one or more second data storage elements of the multi-stage data storage elements;
- automatically modifying the integrated circuit design file by deleting a plurality of first slave stages and adding a second slave stage or by deleting a plurality of first master stages and adding a second master stage and changing routings among components within the integrated circuit design file; and
- storing the modified integrated circuit design file in a non-transitory computer-readable medium.
10. The method of claim 9, wherein automatically modifying the integrated circuit design file comprises:
- routing a master stage of the one or more first data storage elements to the one or more logic functions; and
- routing output of the one or more logic functions to the second slave stage that is further routed to the one or more second data storage elements.
11. The method of claim 9, wherein a physical integrated circuit is fabricated based on the modified integrated circuit design file.
12. The method of claim 9, wherein the one or more first data storage elements include a flip flop.
13. The method of claim 9, wherein the one or more first data storage elements include a master stage.
14. The method of claim 9, wherein the one or more logic functions are positioned between a plurality of the first data storage elements and the one or more second data storage elements;
- wherein automatically modifying the integrated circuit design file comprises: deleting the first slave stages of the first data storage elements; and routing master stages of the first data storage elements to the one or more logic functions; and
- wherein an output of the one or more logic functions is routed to the second slave stage that is further routed to the one or more second data storage elements.
15. The method of claim 9, wherein the one or more logic functions comprise a multiplexer, wherein the integrated circuit design file specifies that the one or more first data storage elements are connected to an input of the multiplexer, and wherein the multiplexer has an output connected to the one or more second data storage elements.
16. The method of claim 9, wherein:
- the modified integrated circuit design file includes fewer slave stages than the received integrated circuit design file;
- the one or more second data storage elements include a flip flop comprising a master stage and a slave stage;
- an output of the second slave stage is routed to the master stage of the flip flop; and
- timing signals are provided to the one or more first data storage elements, the second slave stage, and the one or more second data storage elements based on a clock signal.
17. The method of claim 9, wherein the one or more logic functions are positioned between the one or more first data storage elements and a plurality of the second data storage elements;
- wherein outputs of the one or more logic functions are routed to second stages of the plurality of second data storage elements following removal of first stages of the plurality of second data storage elements;
- wherein the one or more logic functions includes a demultiplexer.
18. A method for optimizing a design, comprising:
- accessing the design;
- identifying a replaceable segment of the design based on an identification of multibit first storage followed by a logic function followed by second storage, wherein the multibit first storage includes a plurality of first slave latches; and
- causing the design to be modified by automatically replacing the replaceable segment that comprises the plurality of first slave latches with a standard cell that comprises a second slave latch at an output from the logic function.
19. The method of claim 18, wherein the standard cell further comprises:
- a plurality of input stage master latches;
- the logic function configured to receive outputs from the plurality of input stage master latches; and
- the second storage configured to receive an output from the second slave latch.
20. The method of claim 19, further comprising synthesizing the modified design, wherein synthesizing the modified design comprises:
- routing an input signal to each input stage master latch from upstream cells; and
- routing an output signal from the second storage to a downstream cell.
9361417 | June 7, 2016 | Arunachalam et al. |
9432003 | August 30, 2016 | Pasternak |
10641822 | May 5, 2020 | Balasubramanian et al. |
10706193 | July 7, 2020 | Van Campenhout et al. |
11055463 | July 6, 2021 | Prasad et al. |
11132486 | September 28, 2021 | Prasad |
20030014612 | January 16, 2003 | Joy et al. |
20150227646 | August 13, 2015 | Arunachalam et al. |
20180074116 | March 15, 2018 | Balasubramanian et al. |
102019128996 | April 2020 | DE |
2004126693 | April 2004 | JP |
20020058911 | July 2002 | KR |
20190024723 | March 2019 | KR |
20200053757 | May 2020 | KR |
202016674 | May 2020 | TW |
- Korean Notice of Allowance; Application No. 10-2020-0105602; dated Mar. 29, 2022.
- Taiwanese Office Action; Application No. 110102891; dated Jun. 9, 2022.
- German Office Action; Application No. 10 2020 115 968.4; dated Apr. 14, 2021.
Type: Grant
Filed: Aug 24, 2021
Date of Patent: Sep 12, 2023
Patent Publication Number: 20210383046
Assignee: Taiwan Semiconductor Manufacturing Company, Ltd. (Hsinchu)
Inventors: Guru Prasad (Austin, TX), Sachin Kumar (Austin, TX)
Primary Examiner: Leigh M Garbowski
Application Number: 17/409,894
International Classification: G06F 30/30 (20200101); G06F 30/337 (20200101); G06F 30/327 (20200101); G06F 30/392 (20200101); G06F 30/398 (20200101); G06F 30/394 (20200101); G06F 30/3308 (20200101); G06F 30/3312 (20200101); H03K 3/037 (20060101); G06F 111/20 (20200101); G06F 119/06 (20200101); G06F 119/12 (20200101);