The integrated circuit (IC) industry produces a variety of analog and digital semiconductor devices to address issues in different areas. Developments in semiconductor process technology nodes have progressively reduced component sizes and tightened spacing resulting in progressively increased transistor density. ICs progressively become smaller.
A layout diagram is used to represent a semiconductor device during the design of the semiconductor device. A designer of a layout diagram selects standard cells from a standard-cell-library and includes the same in the layout diagram. Once included in a layout diagram, the former standard cell is referred to as an instantiation of the standard cell. An instantiated cell differs from a standard cell, e.g., by further including information regarding, e.g., the geometric location of the instantiated cell in the layout diagram, particular signals which are coupled to the inputs of the instantiated cell, the load coupled to the output(s) of the instantiated cell, or the like.
One or more embodiments are illustrated by way of example, and not by limitation, in the figures of the accompanying drawings. The drawings are not to scale, unless otherwise disclosed.
The following discloses many different embodiments, or examples, for implementing different features of the subject matter. Examples of components, materials, values, steps, operations, arrangements, or the like, are described below to simplify the present disclosure. These are, of course, examples and are not intended to be limiting. Other components, values, operations, materials, arrangements, or the like, are contemplated. For example, the formation of a first feature over or on a second feature in the description that follows include embodiments in which the first and second features are formed in direct contact, and further include embodiments in which additional features are formed between the first and second features, such that the first and second features are in indirect contact. In addition, the present disclosure repeats reference numerals and/or letters in the various examples. This repetition is for purposes of simplicity of illustration in the figures and reduced repetition of corresponding discussion in the specification; the scope of any relationship imputable from elements-in-common between the various embodiments and/or configurations discussed are informed by looking at contextual differences between common elements and distinct elements in different embodiments. For example, these contextual differences include differences resulting from the function of the distinct elements, differences of interconnection among otherwise-common elements, differences of timing relationships for otherwise-common elements, the resulting changes in interconnections and timing relationships in the otherwise-common elements because of the operation of the distinct elements, and/or the like
Further, spatially relative terms, such as “beneath,” “below,” “lower,” “above,” “upper” or the like, are 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 is otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein are likewise interpreted accordingly. In some embodiments, the term standard cell structure refers to a standardized building block included in a library of various standard cell structures (standard-cell-library). In some embodiments, various standard cell structures are selected from a library thereof and are used as components in a layout diagram representing a circuit.
In some embodiments, a method of method of manufacturing a semiconductor device includes generating a first performance-data-library for a corresponding library of standard cells. Such a method (1) reduces the computational-load which generation of the first performance-data-library represents and (2) reduces the file-size of a file containing the first performance-data-library by exploiting redundancies in the first performance-data.
In general, standard cells are used in the design of an intended semiconductor device. Here, i.e., at the beginning of this paragraph, reference to the semiconductor device is modified using the adjective ‘intended’ which draws a contrast to a reference to the semiconductor device in this paragraph which is modified using the label ‘actual.’ Typically, at the beginning of the design of the intended semiconductor device, functional and operational requirements of the intended semiconductor device are drafted. Then a circuit diagram of the intended semiconductor device is designed which satisfies the functional and operational requirements. Then a layout diagram is designed which represents the circuit diagram. The layout diagram includes instantiated cells, each instantiated cell being an instantiation of a corresponding standard cell selected from a standard-cell-library of standard cells. The standard-cell-library corresponds to the semiconductor process technology node by which the intended semiconductor device will be manufactured. Then the layout diagram is subjected to various verification processes which confirm, among other things, that an actual semiconductor based on the layout diagram will satisfy all functional and operational requirements of the intended semiconductor device. One or more of the various verification processes rely upon, among other things, attributes of the instantiated cells. The attributes of the instantiated cells are based on the attributes of the corresponding standard cells. Attributes of the standard cells are based on one or more corresponding performance-data-libraries.
According to another approach, redundancies in performance-data are not recognized, rather each performance-data-library is discretely calculated by a characterization tool, which is (at the least) computationally burdensome because of the large number of different combinations of values on the input terminals/pins (as explained below) each of which is the subject of a discrete calculation. It is assumed that a standard cell in the standard-cell-library according to the other approach includes a total of M gates, each gate having a total of n input terminals/pins, where each of M and n is a positive integer, 2≤M and 2≤M. Accordingly, a total number of input pins of the given gate according to the other approach is a product of the number of gates and the number of input pins per gate, namely n*M. As an example, it is further assumed that a given performance-data-library according to the other approach contains propagation delay data. The propagation delay library for a given standard cell according to the other approach provides propagation delay values for each gate in the given standard cell, and more particularly, for each combination of (1) values which are applied to the input pins of the given gate and (2) values which are applied to the input pins of the M−1 other gates in the given standard cell. As such, according to the other approach, the total number of propagation delay values in the propagation delay data-library for the given gate is 2{circumflex over ( )}{circumflex over ( )}(n*M) which is a large number; and the total number of propagation delay values for the given standard cell is M*2{circumflex over ( )}{circumflex over ( )}(n*M) which is a yet larger number. It is further assumed that there are L standard cells in the standard-cell-library according to the other approach, where L is a large positive integer; accordingly, the total number of propagation delay values for the propagation delay library according to the other approach is L*(M*2{circumflex over ( )}{circumflex over ( )}(n*M)), which is a yet larger number.
Because the other approach does not recognize redundancies in performance-data, the other approach must make L*(M*2{circumflex over ( )}{circumflex over ( )}(n*M)) discrete calculations to generate the propagation delay library corresponding to the standard-cell-library, which is a substantial computational burden in terms of the amount of computational resources consumed by such generation, the time required for such generation, or the like. Consequently, the file-size of the propagation delay library according to the other approach is large, which is a substantial computational burden in terms of being more difficult to transmit electronically, more difficult for a user to keep cached in volatile memory of an electronic design automation (EDA) system, consequently being more slowly accessible by the EDA system (e.g., when executing verification processes), or the like. By contrast, a method of manufacturing a semiconductor device according to at least some embodiments does take into consideration redundancies in performance-data which has benefits including (1) reducing the computational-load which generation of a given performance-data-library represents as compared to the other approach and (2) reducing the file-size of a file containing the first performance-data-library compared to the other approach, or the like.
As part of developing embodiments of the present application, the inventors recognized that performance data libraries corresponding to a standard-cell-library contain, for a given standard cell, a substantial amount of redundancy; and that such redundancy presents opportunities to reduce the computational burden which generation of a given performance-data-library represents. At least some embodiments take into consideration redundancies in performance-data when generating a first performance-data-library for a corresponding library of standard cells by recognizing that performance-data, for a given one of the standard cells, is more dependent upon (A) the values which are applied to the input pins of the given gate and less dependent upon (B) the values which are applied to the input pins of the M−1 other gates.
Assuming that each standard cell has M gates of which each gate has n input terminals/pins, for a given one of the 2{circumflex over ( )}{circumflex over ( )}(n*M) combinations of (1) the values which are applied to the input pins of the given gate and (2) the values which are applied to the input pins of the M−1 other gates in the given standard cell, a large majority, namely 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)), of the total combinations are attributable (due) to (2) the subcombinations of values which are applied to the input pins of the M−1 other gates in the given standard cell. However, having recognized that performance-data is more dependent upon (A) the values which are applied to the input pins of the given gate and less dependent upon (B) the values which are applied to the input pins of the M−1 other gates, at least some embodiments represent at least in part a further recognition by the inventors that the contributions to the discrete calculations of performance data by all but a few, e.g., one, of the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations attributable to the values which are applied to the input pins of the M−1 other gates are negligible, i.e., result in redundant performance data.
Accordingly, at least some embodiments exploit redundancies in performance-data by focusing on the contribution to the discrete calculations of performance data by the 2{circumflex over ( )}{circumflex over ( )}n contributions of (1) the values which are applied to the input pins of the given gate and (2) the contribution of the few ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the input pins of the M−1 other gates. The few ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the input pins of the M−1 other gates are represented by a variable J which is a positive integer that typically is less than n, i.e., J<n. In some embodiments, J=1. In some embodiments, exploitation of the performance data redundancy results in making J*2{circumflex over ( )}{circumflex over ( )}n discrete calculations of performance data for the given gate. The J*2{circumflex over ( )}{circumflex over ( )}n discrete calculations made by such embodiments is substantially fewer calculations than the 2{circumflex over ( )}{circumflex over ( )}(n*M) discrete calculations of performance data that would otherwise be made for the given gate according to the other approach. In such embodiments, exploitation of the performance data redundancy results in making A fewer discrete calculations for the given gate, where Δ=2{circumflex over ( )}{circumflex over ( )}(n*m)−J*2{circumflex over ( )}{circumflex over ( )}n. As compared to the 2{circumflex over ( )}{circumflex over ( )}(n*(m−1)) discrete calculations of performance data made by the other approach for the given gate, such embodiments of the present application which make J*2{circumflex over ( )}{circumflex over ( )}n discrete calculations of performance data for the given gate beneficially exhibit an M orders reduction of base-two-magnitude in the number of discrete calculations being made, which is a substantial reduction and thus represents a substantial reduction in computation burden upon the EDA system.
In some embodiments, each standard cell includes one or more gates. In some embodiments, at least some of the gates in a standard cell are combinational logic (logic gates). In some embodiments, —at least some of the gates in a standard cell are asynchronous logic (flip-flop gates).
In some embodiments, a method of manufacturing a semiconductor device includes, for each standard cell in a standard-cell-library, generating a first performance-data-library including: sorting the gates into multimember groups and single-member groups; on a group-by-group basis, generating a corresponding first volume of performance data including mapping within multimember groups; and bundling. For each standard cell that includes multiple gates, the sorting includes: sorting the gates into groups including searching on a gatewise basis for matched ones amongst the gates (matched gates); grouping corresponding matched gates into corresponding first groups, each first group having multiple member-gates; and, for unmatched ones of the gates having no other matched gate (unmatched gates), grouping the unmatched gates into corresponding second groups, each second group having a corresponding single member-gate. For each standard cell, and for each first group, the generating a first performance-data-library further includes generating a corresponding first volume of performance data including: for a subject one of the member-gates in the first group (first subject gate), discretely calculating the first volume of performance data; and mapping the volume of performance data to the first subject gate; and mapping the first volume of performance data to remaining ones of the member-gates in the first group (non-subject gates). Such mapping is an example of exploiting redundancies in the first performance-data. For each standard cell, and for each second group, the generating a first performance-data-library further includes generating a corresponding first volume of performance data including: for a subject one of the member-gates in the second group (second subject gate), determining the first volume of performance data; and mapping the first volume of performance data to the second subject gate of the second group, i.e., to the sole member member-gate of the second group. In some embodiments, the bundling includes bundling the first volumes of performance data to form the first performance-data-library.
In some embodiments, a method of manufacturing a semiconductor device includes, for each standard cell in a standard-cell-library, generating a first performance-data-library including: sorting features of the gates into multi-member groups and single-member groups; on a group-by-group basis, generating a corresponding first volume of performance data including mapping within multimember groups; and bundling. For each standard cell that includes multiple gates, the sorting includes: searching on a featurewise basis for matched ones amongst the features of the gates (matched features); grouping corresponding matched features into corresponding first groups, each first group having multiple member-features; and for unmatched ones of the features having no other matched feature (unmatched features), grouping the unmatched features into corresponding second groups, each second group having a corresponding single member-features. For each standard cell, and for each first group, the generating a first performance-data-library further includes generating a corresponding first volume of performance data including: for a subject one of the member-features in the first group (first subject feature), discretely calculating the first volume of performance data; mapping the volume of performance data to the first subject feature; and mapping the first volume of performance data to remaining ones of the member-features in the first group (non-subject features). Such mapping is an example of exploiting redundancies in the first performance-data. For each standard cell, and for each second group, the generating a first performance-data-library further includes generating a corresponding first volume of performance data including: for a subject one of the member-features in the second group (second subject feature), determining the first volume of performance data; and mapping the first volume of performance data to the second subject feature, i.e., to the sole member-feature of the second group. In some embodiments, he bundling includes bundling the first volumes of performance data to form the first performance-data-library.
Methods disclosed herein include methods (see below) for generating a performance-data-library for a standard-cell-library. At least some of the methods disclosed herein, e.g., at least some of the flowcharts disclosed herein, are implemented, for example, using EDA system 100A, in accordance with some embodiments.
In some embodiments, EDA system 100 includes an APR system. In some embodiments, EDA system 100 is a general purpose computing device including a hardware processor 102 and a non-transitory, computer-readable storage medium 104. Storage medium 104, amongst other things, is encoded with, i.e., stores, computer program code 106, i.e., a set of executable instructions. Execution of instructions 106 by hardware processor 102 represents (at least in part) an EDA tool which implements a portion or all of, e.g., the methods disclosed herein, or the like, in accordance with one or more embodiments (hereinafter, the noted processes and/or methods). Storage medium 104, amongst other things, stores files including: a library 107 of standard cells; one or more libraries 109 of performance data corresponding to the standard cells of library 107, e.g., some or all of the performance data libraries disclosed herein, or the like; one or more integrated circuit (IC) designs 111 including functional and/or operational requirements of the IC designs; one or more circuit diagrams 113; one or more layout diagrams 115; and a user interface 117.
Processor 102 is electrically coupled to computer-readable storage medium 104 via a bus 103. Processor 102 is further electrically coupled to an I/O interface 108 by bus 103. A network interface 110 is further electrically connected to processor 102 via bus 103. Network interface 110 is connected to a network 112, so that processor 102 and computer-readable storage medium 104 are capable of connecting to external elements via network 112. Processor 102 is configured to execute computer program code 106 encoded in computer-readable storage medium 104 in order to cause system 100 to be usable for performing a portion or all of the noted processes and/or methods. In one or more embodiments, processor 102 is a central processing unit (CPU), a multi-processor, a distributed processing system, an application specific integrated circuit (ASIC), and/or a suitable processing unit.
In one or more embodiments, computer-readable storage medium 104 is an electronic, magnetic, optical, electromagnetic, infrared, and/or a semiconductor system (or apparatus or device). For example, computer-readable storage medium 104 includes a semiconductor or solid-state memory, a magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and/or an optical disk. In one or more embodiments using optical disks, computer-readable storage medium 104 includes a compact disk-read only memory (CD-ROM), a compact disk-read/write (CD-R/W), and/or a digital video disc (DVD).
In one or more embodiments, storage medium 104 stores computer program code 106 configured to cause system 100A (where such execution represents (at least in part) the EDA tool) to be usable for performing a portion or all of the noted processes and/or methods. In one or more embodiments, storage medium 104 further stores information which facilitates performing a portion or all of the noted processes and/or methods.
EDA system 100 includes I/O interface 108 which is coupled to external circuitry. In one or more embodiments, I/O interface 108 includes a keyboard, keypad, mouse, trackball, trackpad, touchscreen, and/or cursor direction keys for communicating information and commands to processor 102.
EDA system 100 further includes network interface 110 coupled to processor 102. Network interface 110 allows system 100 to communicate with network 112, to which one or more other computer systems are connected. Network interface 110 includes wireless network interfaces such as BLUETOOTH, WIFI, WIMAX, GPRS, or WCDMA; or wired network interfaces such as ETHERNET, USB, or IEEE-1364. In one or more embodiments, a portion or all of noted processes and/or methods, is implemented in two or more systems 100.
System 100 is configured to receive information through I/O interface 108. The information received through I/O interface 108 includes one or more of instructions, data, design rules, libraries of standard cells, and/or other parameters for processing by processor 102. The information is transferred to processor 102 via bus 103. EDA system 100 is configured to receive information related to a UI through I/O interface 108. The information is stored in computer-readable medium 104 as user interface (UI) 117.
In some embodiments, a portion or all of the noted processes and/or methods is implemented as a standalone software application for execution by a processor. In some embodiments, a portion or all of the noted processes and/or methods is implemented as a software application that is a part of an additional software application. In some embodiments, a portion or all of the noted processes and/or methods is implemented as a plug-in to a software application. In some embodiments, at least one of the noted processes and/or methods is implemented as a software application that is a portion of an EDA tool. In some embodiments, a portion or all of the noted processes and/or methods is implemented as a software application that is used by EDA system 100. In some embodiments, a layout which includes standard cells is generated using a tool such as VIRTUOSO® available from CADENCE DESIGN SYSTEMS, Inc., or another suitable layout generating tool.
In some embodiments, the processes are realized as functions of a program stored in a non-transitory computer readable recording medium. Examples of a non-transitory computer readable recording medium include, but are not limited to, external/removable and/or internal/built-in storage or memory unit, e.g., one or more of an optical disk, such as a DVD, a magnetic disk, such as a hard disk, a semiconductor memory, such as a ROM, a RAM, a memory card, and the like.
In data flow diagram 120, various information (discussed below) is provided to a characterization tool 142 which generates a performance-data-library 144 for a corresponding library of standard cells. In contrast to a counterpart characterization tool according to the other approach which does not takes into consideration redundancies in performance-data, characterization tool 142 does take into consideration redundancies in performance-data (discussed below). Characterization tool 142 exploits redundancies in performance-data which has benefits including (1) reducing the computational-load which generation of a given performance-data-library represents as compared to the other approach (discussed above) and (2) reducing the file-size of a file containing the first performance-data-library compared to the other approach, or the like.
For purposes of discussion, it is assumed that each standard cell includes a total of M gates (
In the context of characterization of a given standard cell, and further within the context of a given group of two or more matched gates (
More particularly, it is to be recalled that the inventors have recognized that the contributions to the discrete calculations of performance data by all but a few ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations attributable to the values which are applied to the input pins of the M−1 other gates are negligible, i.e., result in redundant performance data. In light of the inventors' recognition, characterization tool 142 exploits the redundancy in the performance data attributable to the values which are applied to the input pins of the M−1 other gates by representing the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the values which are applied to the input pins of the M−1 gates using a few ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the input pins of the M−1 other gates. The few ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the input pins of the M−1 other gates are represented by J, where typically J<n. In some embodiments, J=1. Accordingly, for the given gate, characterization tool 142 makes one discrete calculation of a performance datum for each of the total of 2{circumflex over ( )}{circumflex over ( )}(n*M) combinations of input values which are applied (1) to the input terminals/pins of a given gate and (2) to the few ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the input pins of the M−1 other gates in the given standard cell. As a result, characterization tool 142 makes J*2{circumflex over ( )}{circumflex over ( )}n discrete calculations of performance data for the given gate. The characterization tool 142 making J*2{circumflex over ( )}{circumflex over ( )}n discrete calculations of performance data for the given gate, which is substantially fewer calculations than the 2{circumflex over ( )}{circumflex over ( )}(n*M) discrete calculations of performance data that would otherwise be made for the given gate according to the other approach. In such embodiments, exploitation of the performance data redundancy by characterization tool 142 results in making A fewer discrete calculations for the given gate, where Δ=2{circumflex over ( )}{circumflex over ( )}(n*M)−J*2{circumflex over ( )}{circumflex over ( )}n. As compared to the 2{circumflex over ( )}{circumflex over ( )}(n*(M 1)) discrete calculations of performance data made by the other approach for the given gate, such embodiments of the present application which make J*2{circumflex over ( )}{circumflex over ( )}n discrete calculations of performance data for the given gate beneficially exhibit an M orders reduction of base-two-magnitude in the number of discrete calculations being made, which is a substantial reduction and thus represents a substantial reduction in computation burden upon the EDA system.
In
In
Preset pattern of side-pin values template 140 (
In some embodiments, an arc is another term for a performance datum corresponding to a given one of the total of 2{circumflex over ( )}{circumflex over ( )}(n*M) combinations of input values which are applied (1) to the input terminals/pins of a given gate in a given standard cell and (2) to the input terminals/pins of the M−1 other gates in the given standard cell. Arc template 124 is an example of information conventionally provided directly to the characterization tool according to the other approach.
In
Gate 206(1) has input terminals/pins A1, A2, . . . , A(n−1) (not shown) and An, and an output terminal pin ZA. Gate 206(2) has input terminals/pins B1, B2, . . . , B(n−1) (not shown) and Bn, and an output terminal pin ZB. Gate 206(M) has input terminals/pins M1, M2, . . . , M(n−1) (not shown) and Mn, and an output terminal pin ZM. In some embodiments, each of gates 206(1)-206(M) includes a second output pin.
In
In
In some embodiments, gate-type refers to a current-driving capability at the output pin of the gate. In some embodiments, gate-type refers to a threshold voltage of transistors in the gate. In some embodiments, gate-type refers to a power domain in which the gate operates. In some embodiments, gate-type refers to the height of the gate relative to the Y-axis (
In
In
In
In
Gate 306(1) is a Type A gate. Gate 306(2) is a Type B gate. Gate 306(3) is a Type C gate. At least one of gates 306(1)-306(3) is a member of a multimember group which includes ones (not shown) of the M gates other than gates 306(1)-306(3). It is assumed that each of gates 306(1)-306(3) is the representative member (subject gate) of its corresponding group of one or more gates.
More particularly, it is to be recalled that characterization tool 142 exploits the redundancy in the performance data attributable to the values which are applied to the input pins of the M−1 other gates by representing the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations of values attributable to the values which are applied to the input pins of the M−1 gates instead with J representative ones amongst the 2{circumflex over ( )}{circumflex over ( )}(n*(M−1)) combinations, where typically J<n. In
In
In
In
In
Data structure 450 includes nested data structures. At a top nesting-level, data structure 450 includes a data structure, Cell(name_1), where name_1 is a variable that identifies the standard cell to which the performance data of data structure 450 pertains.
In
At a next nesting-level, each of bundle(Z1) and bundle(Z2) includes: a first statement, members (gate_name, . . . ); a second statement, subject pin (pin_name); and a data structure, prfrmnc_data.
In general, the first statement, members (gate_name, . . . ), identifies the one or more members of the group. In
Regarding
In
In exploded view 454(1), the when-statements associated with the entries in array prfrmnc_data 452(1), i.e., the when-statements associated with the performance data values in array prfrmnc_data 452(1), identify the combinations of input values that produced the corresponding entries. In other words, each performance data value in array prfrmnc_data 452(1) has a when-statement which indicates the combination of values of input pins for the subject gate to which the performance data value corresponds (causal combination).
It is noted that
In
Regarding exploded view 454(2) of prfrmnc_data 452(2), and recalling that the subject gate of bundle(Z2) is the gate M which has output pin ZM, the when-statement for the first entry in array prfrmnc_data 452(2) indicates that the causal combination is !M1&!M2&!M3& . . . &!Mn&preset_side_pin_pattern_for_ZM. The text string, preset_side_pin_pattern_for_ZM is shown in
Regarding
Regarding
In some embodiments, preset_side_pin_patterns such as preset_side_pin_pattern_for_ZA and preset_side_pin_pattern_for_ZM represent a worst-case scenario. In some embodiments, preset_side_pin_patterns such as preset_side_pin_pattern_for_ZA and preset_side_pin_pattern_for_ZM are determined empirically based on a big-data type of analysis of a repository of existing prior standard-cell-libraries and corresponding prior performance-data-libraries.
In some embodiments, preset_side_pin_patterns such as preset_side_pin_pattern_for_ZA and preset_side_pin_pattern_for_ZM are determined by simulation, e.g., performed by characerization tool 142, or the like.
In
Data structure 458 includes nested data structures. At a top nesting-level, data structure 458 includes a data structure, Cell(name_1), where name_1 is a variable that identifies the standard cell to which the performance data of data structure 458 pertains.
In
At a next nesting-level, each of bundle(I1) and bundle(I2) includes: a first statement, members (feature_name, . . . ); a second statement, subject pin (pin_name); and a data structure, prfrmnc_data.
In general, the first statement, members (feature_name, . . . ), identifies the one or more members of the group. In
Regarding
In
In exploded view 462(1), the when-statements associated with the entries in array prfrmnc_data 460(1), i.e., the when-statements associated with the performance data values in array prfrmnc_data 460(1), identify the combinations of input values that produced the corresponding entries. In other words, each performance data value in array prfrmnc_data 460(1) has a when-statement which indicates the combination of values of input pins for the subject gate which includes the subject feature to which the performance data value corresponds (causal combination).
In
Regarding exploded view 462(2) of prfrmnc_data 460(2), and recalling that the subject feature of bundle(I2) is input pin A2, the when-statement for the first entry in array prfrmnc_data 460(2) indicates that the causal combination is !M1&!M2&!M3& . . . &!Mn&preset_side_pin_pattern_for_An. The text string, preset_side_pin_pattern_for_An is shown in
Regarding
In
In
In
In
In
In
In
In
In
In
In
In
In
In
In some embodiments, for a given standard library which includes a given flip-flop gate, a corresponding instance of performance data library 144 has corresponding performance data volumes for the given flip-flop including a first set of volumes for propagation delay, a second set of volumes for timing arc, a third set of volumes for power arc, a fourth set of volumes for setup-time, a fifth set of volumes for hold-time, a sixth set of volumes for recovery-time, a seventh set of volumes for removal-time, an eighth set of volumes for clear-time and/or a ninth set of volumes for preset-time, where not all of the sets of volumes are grouped in the same way. In some embodiments, the corresponding performance data volumes for the given flip-flop including a first set of volumes for propagation delay, a second set of volumes for timing arc, a third set of volumes for power arc, a fourth set of volumes for setup-time, a fifth set of volumes for hold-time, a sixth set of volumes for recovery-time, a seventh set of volumes for removal-time, an eighth set of volumes for clear-time and/or a ninth set of volumes for preset-time, where each of the first to ninth sets is grouped in a different way.
In
In
In
In
In some embodiments, gate-type refers to the circuit topology of the gate, e.g., transmission gate topology (
In some embodiments, in a context of transmission gate topology, gate-type refers to the sub-circuit topology of Q-type coupler (
The method of flowchart 700A is implementable, for example, using EDA system 100A (
In
At block 703, the layout diagram is subjected to various verification processes which are based, at least in part, on performance data libraries, e.g., 144, generated according to one or more methods disclosed herein, or the like. Block 703 is implementable, for example, using EDA system 100A (
At block 704, based on the layout diagram, at least one of (A) one or more photolithographic exposures are made or (b) one or more semiconductor masks are fabricated or (C) one or more components in a layer of a semiconductor device are fabricated. See discussion below of IC manufacturing system 800 in
The method of flowchart 700B is implementable, for example, using characterization tool 142 of
Method 700B includes blocks 710-724. At block 710, for each standard cell in a corresponding standard-cell-library, gates in the standard cell are sorted into groups. Block 710 includes blocks 1712-714. Within block 710, flow proceeds to block 712.
At block 712, for a given standard cell, the gates are searched on a gatewise basis for matching ones. For gatewise matching, the attribute of the gate as a whole on which is based the sorting and matching is gate-type. In some embodiments, gate-type refers to the function performed by the gate (
At block 714, for the given standard cell, matched gates are grouped in corresponding multimember groups. Unmatched ones of the gates are grouped in corresponding single-member groups. An example of a multimember group is 202B in
At block 716, for each standard cell, a volume of performance data is generated for each gate in the standard cell. Block 716 includes blocks 718-722. Within block 716, flow proceeds to block 718.
At block 718, for each subject gate in a group, the volume of performance data is discretely calculated. Examples of subject gates include 306(1) in
At block 720, for each group, the volume of performance data is mapped to the subject gate of the group. Examples of such mapping include: regarding multimember groups, the members statement in each of data structure 450 of
At block 724, for each group that is a multi-member group, the volume of performance data is also mapped to the non-subject gates in the multimember group. Such mapping is an example of exploiting redundancies in the performance-data. The performance data of the non-subject gates in the group is redundant to the performance data of the subject group. Accordingly, such mapping exploits avoids making discrete calculations of otherwise redundant performance data and thus exploits redundancies in the performance-data of the non-subject groups. Examples of such mapping include the members statement for the multimember group in each of data structure 450 of
At block 724, the volumes of performance data are collected to form the performance-data-library. Again, an example of the performance-data-library is performance-data-library 144 of
In some embodiments, block 730 further includes: before the searching for matched ones amongst the gates (matched gates), setting a status of each gate to be unsorted (unsorted status). In such embodiments, the searching for matched ones amongst the gates (matched gates) includes: for a target one of the gates (target gate) relative to which other ones of the gates are non-target gates, comparing a description of the target gate to descriptions correspondingly of the non-target gates to recognize which one or more of the non-target gates matches the target gate (recognized gates); deeming the target gate and the recognized gates to be matching gates; and setting the status of the target gate and the recognized gates to be sorted. In such embodiments, for remaining gates having the unsorted status, the searching for matched ones amongst the gates (matched gates) is iterated until no unmatched gates remain.
The method of flowchart 700C is implementable, for example, using characterization tool 142 of
Method 700C includes blocks 730-744. At block 730, for each standard cell in a corresponding standard-cell-library, gates in the standard cell are sorted into groups. Block 730 includes blocks 1732-734. Within block 730, flow proceeds to block 732.
At block 732, for a given standard cell, the gates are searched on a featurewise basis for matching ones. For featurewise matching, the attribute on which is based the sorting and matching is a feature of the gate. In some embodiments, the feature of the gate is an individual input pins, i.e., each input pin resents a features of a given gate (
At block 734, for the given standard cell, matched features are grouped in corresponding multi-feature groups. Unmatched ones of the features are grouped in corresponding single-feature groups. Examples of a multimembers group include 202C(1)-202C(3) in
At block 736, for each standard cell, a volume of performance data is generated for each gate in the standard cell. Block 736 includes blocks 738-742. Within block 736, flow proceeds to block 738.
At block 738, for each subject gate in a group, the volume of performance data is discretely calculated. Examples of subject gates include 307(1) in
At block 740, for each group, the volume of performance data is mapped to the subject gate of the group. Examples of such mapping include: regarding multimember groups, the members statement in each of data structure 458 of
At block 744, for each group that is a multi-member group, the volume of performance data is also mapped to the non-subject gates in the multimember group. Such mapping is an example of exploiting redundancies in the performance-data. The performance data of the non-subject gates in the group is redundant to the performance data of the subject group. Accordingly, such mapping exploits avoids making discrete calculations of otherwise redundant performance data and thus exploits redundancies in the performance-data of the non-subject groups. Examples of such mapping include the members statement for the multimember group in each of data structure 458 of
At block 744, the volumes of performance data are collected to form the performance-data-library. Again, an example of the performance-data-library is performance-data-library 144 of
After block 703 of
In
Design house (or design team) 820 generates an IC design layout 822. IC design layout 822 includes various geometrical patterns designed for an IC device 860. The geometrical patterns correspond to patterns of metal, oxide, or semiconductor layers that make up the various components of IC device 860 to be fabricated. The various layers combine to form various IC features. For example, a portion of IC design layout 822 includes various IC features, such as an active region, gate electrode, source and drain, metal lines or vias of an interlayer interconnection, and openings for bonding pads, to be formed in a semiconductor substrate (such as a silicon wafer) and various material layers disposed on the semiconductor substrate. Design house 820 implements a proper design procedure to form IC design layout 822. The design procedure includes one or more of logic design, physical design or place and route. IC design layout 822 is presented in one or more data files having information of the geometrical patterns. For example, IC design layout 822 is expressed in a GDSII file format or DFII file format.
Mask house 830 includes data preparation 832 and mask fabrication 834. Mask house 830 uses IC design layout 822 to manufacture one or more masks to be used for fabricating the various layers of IC device 860 according to IC design layout 822. Mask house 830 performs mask data preparation 832, where IC design layout 822 is translated into a representative data file (“RDF”). Mask data preparation 832 supplies the RDF to mask fabrication 834. Mask fabrication 834 includes a mask writer. A mask writer converts the RDF to an image on a substrate, such as a mask (reticle) or a semiconductor wafer. The design layout is manipulated by mask data preparation 832 to comply with particular characteristics of the mask writer and/or requirements of IC fab 850. In
In some embodiments, mask data preparation 832 includes optical proximity correction (OPC) which uses lithography enhancement techniques to compensate for image errors, such as those that can arise from diffraction, interference, other process effects and the like. OPC adjusts IC design layout 822. In some embodiments, mask data preparation 832 includes further resolution enhancement techniques (RET), such as off-axis illumination, sub-resolution assist features, phase-shifting masks, other suitable techniques, and the like or combinations thereof. In some embodiments, inverse lithography technology (ILT) is further used, which treats OPC as an inverse imaging problem.
In some embodiments, mask data preparation 832 includes a mask rule checker (MRC) that checks the IC design layout that has undergone processes in OPC with a set of mask creation rules which contain certain geometric and/or connectivity restrictions to ensure sufficient margins, to account for variability in semiconductor manufacturing processes, and the like. In some embodiments, the MRC modifies the IC design layout to compensate for limitations during mask fabrication 834, which may undo part of the modifications performed by OPC in order to meet mask creation rules.
In some embodiments, mask data preparation 832 includes lithography process checking (LPC) that simulates processing that will be implemented by IC fab 850 to fabricate IC device 860. LPC simulates this processing based on IC design layout 822 to fabricate a simulated manufactured device, such as IC device 860. The processing parameters in LPC simulation can include parameters associated with various processes of the IC manufacturing cycle, parameters associated with tools used for manufacturing the IC, and/or other aspects of the manufacturing process. LPC takes into account various factors, such as aerial image contrast, depth of focus (“DOF”), mask error enhancement factor (“MEEF”), other suitable factors, and the like or combinations thereof. In some embodiments, after a simulated manufactured device has been fabricated by LPC, if the simulated device is not close enough in shape to satisfy design rules, OPC and/or MRC are be repeated to further refine IC design layout 822.
The above description of mask data preparation 832 has been simplified for the purposes of clarity. In some embodiments, data preparation 832 includes additional features such as a logic operation (LOP) to modify the IC design layout according to manufacturing rules. Additionally, the processes applied to IC design layout 822 during data preparation 832 may be executed in a variety of different orders.
After mask data preparation 832 and during mask fabrication 834, a mask 835 or a group of masks are fabricated based on the modified IC design layout. In some embodiments, an electron-beam (e-beam) or a mechanism of multiple e-beams is used to form a pattern on a mask (photomask or reticle) based on the modified IC design layout. The masks are formed in various technologies. In some embodiments, the mask is formed using binary technology. In some embodiments, a mask pattern includes opaque regions and transparent regions. A radiation beam, such as an ultraviolet (UV) beam, used to expose the image sensitive material layer (e.g., photoresist) which has been coated on a wafer, is blocked by the opaque region and transmits through the transparent regions. In one example, a binary mask includes a transparent substrate (e.g., fused quartz) and an opaque material (e.g., chromium) coated in the opaque regions of the mask. In another example, the mask is formed using a phase shift technology. In the phase shift mask (PSM), various features in the pattern formed on the mask are configured to have proper phase difference to enhance the resolution and imaging quality. In various examples, the phase shift mask is an attenuated PSM or alternating PSM. The mask(s) generated by mask fabrication 834 is used in a variety of processes. For example, such a mask(s) is used in an ion implantation process to form various doped regions in the semiconductor wafer, in an etching process to form various etching regions in the semiconductor wafer, and/or in other suitable processes.
IC fab 850 is an IC fabrication business that includes one or more manufacturing facilities for the fabrication of a variety of different IC products. In some embodiments, IC fab 850 is a semiconductor foundry. For example, there may be a manufacturing facility for the front end fabrication of a plurality of IC products (front-end-of-line (FEOL) fabrication), while a second manufacturing facility may supply the back end fabrication for the interconnection and packaging of the IC products (back-end-of-line (BEOL) fabrication), and a third manufacturing facility may supply other services for the foundry business.
IC fab 850 uses the mask (or masks) fabricated by mask house 830 to fabricate IC device 860 using fabrication tools 852. Thus, IC fab 850 at least indirectly uses IC design layout 822 to fabricate IC device 860. In some embodiments, a semiconductor wafer 853 is fabricated by IC fab 850 using the mask (or masks) to form IC device 860. Semiconductor wafer 853 includes a silicon substrate or other proper substrate having material layers formed thereon. Semiconductor wafer further includes one or more of various doped regions, dielectric features, multilevel interconnects, and the like (formed at subsequent manufacturing steps).
In some embodiments, a method (of manufacturing a semiconductor device for which a corresponding layout diagram includes instantiated cells, each instantiated cell being an instantiation of a corresponding standard cell selected from a standard-cell-library of standard cells, the layout diagram, the standard-cell-library and the first performance-data-library being stored on a non-transitory computer-readable medium) includes generating the first performance-data-library including: for each standard cell that includes multiple gates, sorting the gates into groups including: searching for matched ones amongst the gates (matched gates); grouping corresponding matched gates into corresponding first groups, each first group having multiple member-gates; and for unmatched ones of the gates having no other matched gate (unmatched gates), grouping the unmatched gates into corresponding second groups, each second group having a corresponding single member-gate; for each standard cell, generating a corresponding first volume of performance data on which are based attributes of the standard cell including: for each first group thereof: for a subject one of the member-gates in the first group (first subject gate), discretely calculating the first volume of performance data; mapping the volume of performance data to the first subject gate; and mapping the volume of performance data to remaining ones of the member-gates in the first group (non-subject gates); for each second group thereof: for a subject one of the member-gates in the second group (second subject gate), determining the first volume of performance data; and mapping the first volume of performance data to the second subject gate; and basing a first performance-data-library at least in part on the first volumes of performance data, attributes of the standard cells of the standard-cell-library being based on the first performance-data-library.
In some embodiments, the sorting the gates into groups further includes: before the searching for matched ones amongst the gates (matched gates), setting a status of each gate to be unsorted (unsorted status); the searching for matched ones amongst the gates (matched gates) includes: for a target one of the gates (target gate) relative to which other ones of the gates are non-target gates, comparing a description of the target gate to descriptions correspondingly of the non-target gates to recognize which one or more of the non-target gates matches the target gate (recognized gates); deeming the target gate and the recognized gates to be matching gates; and setting the status of the target gate and the recognized gates to be sorted; and, for remaining gates having the unsorted status, iterating the searching for matched ones amongst the gates (matched gates).
In some embodiments, each description includes a logical function of the corresponding gate.
In some embodiments, each description includes a count of input pins of the corresponding gate.
In some embodiments, each description includes a logical description of each input pin of the corresponding gate.
In some embodiments, each gate has N inputs, where N is a positive integer and N is equal to or greater than 2; the generating a corresponding first volume of performance data further includes: for each subject gate of each first group and of each second group: for each of 2{circumflex over ( )}N combinations of values for the N inputs, determining corresponding 2{circumflex over ( )}N pages of performance data based on: the corresponding Nth combination of values for the N inputs of the subject gate; and a predefined combination of values for the N inputs of each of the non-subject gates; each first volume of performance data is a set that includes the corresponding 2{circumflex over ( )}N pages of performance data.
In some embodiments, the performance data is a timing arc representing an elapsed time during which the subject gate generates a corresponding stable output value.
In some embodiments, in a context of the subject gate being a flip-flop, the elapsed time represented by the timing arc is from an active edge of a clock signal until the subject gate generates the corresponding stable output value.
In some embodiments, the performance data is a power arc representing an amount of power consumed while the subject gate generates a corresponding stable output value.
In some embodiments, the performance data is a setup-time arc representing a minimum elapsed time that output data must be held stable by the subject gate before a next active clock edge.
In some embodiments, the performance data is a hold-time arc representing a minimum elapsed time that inputs to the subject gate must be held stable after an active clock edge.
In some embodiments, in a context of the subject gate being a flip-flop, the performance data is a recovery-time arc representing a minimum permissible elapsed time from de-assertion of a reset signal to a next active clock edge required by the subject gate.
In some embodiments, in a context of the gate being a flip-flop, the performance data is a removal-time arc representing a minimum permissible elapsed time after a next active clock edge before which a reset signal is de-asserted by the subject gate.
In some embodiments, in a context of the gate being a flip-flop, the performance data is a clear-time arc representing a minimum elapsed time after a clear pin is activated for the subject gate to generate a stable logical low output value.
In some embodiments, in a context of the gate being a flip-flop, the performance data is a preset-time arc representing a minimum elapsed time after a preset pin is activated for the subject gate to generate a stable logical high output value.
In some embodiments, the determining the first volume of performance data includes: discretely calculating the first volume of performance data.
In some embodiments, the method further includes: generating the layout diagram; and, based on the layout diagram, at least one of: (A) making one or more photolithographic exposures; (B) fabricating one or semiconductor devices; or (C) fabricating at least one component in a layer of a semiconductor integrated circuit.
In some embodiments, a system for manufacturing a semiconductor device, the system including at least one processor, at least one non-transitory computer readable medium that stores computer executable code; a corresponding layout diagram including instantiated cells, each instantiated cell being an instantiation of a corresponding standard cell selected from a standard-cell-library of standard cells, the layout diagram, the standard-cell-library and the first performance-data-library being stored on a non-transitory computer-readable medium, the non-transitory computer readable storage medium, the computer program code and the at least one processor being configured to cause the system to generate the first performance-data-library including: for each standard cell that includes multiple gates, sorting features of the gates into groups including: searching for matched ones amongst the features of the gates (matched features); grouping corresponding matched features into corresponding first groups, each first group having multiple member-features; and for unmatched ones of the features having no other matched feature (unmatched features), grouping the unmatched features into corresponding second groups, each second group having a corresponding single member-features; for each standard cell, generating a corresponding first volume of performance data on which are based attributes of the standard cell including: for each first group thereof: for a subject one of the member-features in the first group (first subject feature), discretely calculating the first volume of performance data; mapping the volume of performance data to the first subject feature; and mapping the volume of performance data to remaining ones of the member-features in the first group (non-subject features); for each second group thereof: for a subject one of the member-features in the second group (second subject feature), determining the first volume of performance data; and mapping the first volume of performance data to the second subject feature; and basing the first performance-data-library at least in part on the first volumes of performance data, attributes of the standard cells of the standard-cell-library being based on the first performance-data-library.
In some embodiments, the system further includes: at least one of: a masking facility configured to fabricate one or more semiconductor masks based on based on the layout diagram; or a fabricating facility configured to fabricate at least one component in a layer of a semiconductor integrated circuit based on the layout diagram.
In some embodiments, a non-transitory computer-readable medium having stored thereon computer executable instructions representing a method (of generating a first performance-data-library, attributes of standard cells that comprise a standard cell library being based on the first performance-data library, the standard-cell-library and the first performance-data-library being stored on a non-transitory computer-readable medium) the computer executable instructions being executable by at least one processor to perform the method including: for each standard cell that includes multiple gates, each gate having N inputs, where N is a positive integer and N is equal to or greater than 2, sorting the gates into groups including: searching for matched ones amongst the gates (matched gates); grouping corresponding matched gates into corresponding first groups, each first group having multiple member-gates; and for unmatched ones of the gates having no other matched gate (unmatched gates), grouping the unmatched gates into corresponding second groups, each second group having a corresponding single member-gate; for each standard cell, generating a corresponding first volume of performance data on which are based attributes of the standard cell including: for each first group thereof: for a subject one of the member-gates in the first group (first subject gate), discretely calculating the first volume of performance data; mapping the volume of performance data to the first subject gate; and mapping the volume of performance data to remaining ones of the member-gates in the first group (non-subject gates); for each second group thereof: for a subject one of the member-gates in the second group (second subject gate), determining the first volume of performance data; and mapping the first volume of performance data to the second subject gate; and basing the first performance-data-library at least in part on the first volumes of performance data; the generating a corresponding first volume of performance data further including: for each subject gate of each first group and of each second group: for each of 2{circumflex over ( )}N combinations of values for the N inputs, determining corresponding 2{circumflex over ( )}N pages of performance data based on: the corresponding Nth combination of values for the N inputs of the subject gate; and a predefined combination of values for the N inputs of each of the non-subject gates; and each first volume of performance data being a set that includes the corresponding 2{circumflex over ( )}N pages of performance data.
In some embodiments, the determining the first volume of performance data includes discretely calculating the first volume of performance data.
It will be readily seen by one of ordinary skill in the art that one or more of the disclosed embodiments fulfill one or more of the advantages set forth above. After reading the foregoing specification, one of ordinary skill will be able to affect various changes, substitutions of equivalents and various other embodiments as broadly disclosed herein. It is therefore intended that the protection granted hereon be limited only by the definition contained in the appended claims and equivalents thereof.
The present application claims the priority of U.S. Provisional Application No. 63/375,412, filed Sep. 13, 2022, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63375412 | Sep 2022 | US |