Embodiments presented in this disclosure generally relate to semiconductor manufacturing and machine learning. More specifically, one or more embodiments disclosed herein relate to use of Inverse Lithography Technology to generate training data and train machine learning models for mask synthesis.
Lithography processing represents an important technology for manufacturing Integrated Circuits (ICs) and Micro Electro-Mechanical Systems (MEMS). Lithographic techniques are used to define patterns, geometries, features, shapes, et al (“patterns”) onto an integrated circuit die or semiconductor wafer or chips, where the patterns can be defined by a set of contours, lines, boundaries, edges, curves, et al, which surround, enclose, or define the boundary of the various regions which constitute a pattern.
Demand for increased density of features on dies and wafers has resulted in the design of circuits with decreasing minimum dimensions. However, due to the wave nature of light, as dimensions approach sizes comparable to the wavelength of the light used in the photolithography process, the resulting wafer patterns deviate from the corresponding mask (e.g., photomask) patterns and are accompanied by unwanted distortions and artifacts. Inverse Lithography Technology (ILT) can be highly effective for addressing these issues and synthesizing high quality masks for manufacturing advanced silicon-based compute nodes. However, the increased quality typically comes with significant computational burden and long tool runtimes. This can discourage use of ILT for mask synthesis.
Machine learning (ML) techniques can be used to accelerate mask synthesis. Supervised ML models, however, require appropriate training data to successfully solve a given problem. Generating this training data, and designing an appropriate ML model structure to assist in mask synthesis, is a challenging problem.
Embodiments include a method. The method includes generating a plurality of training masks for a machine learning (ML) model by synthesizing one or more polygons, relating to a design pattern for a semiconductor device, using Inverse Lithography Technology (ILT). The method further includes training the ML model using both the plurality of training masks generated using ILT, and the design pattern for the semiconductor device, as inputs. The trained ML model is configured to synthesize one or more masks for use in manufacturing the semiconductor device based on the design pattern.
Embodiments further include another method. The method includes providing, by a processor, a design pattern for a semiconductor device as input to a trained ML model. The method further includes performing, using the ML Model, a plurality of dilated convolutions relating to the design pattern. The method further includes inferring, using the ML model, one or more masks for use in manufacturing the semiconductor device, based on the plurality of dilated convolutions.
Embodiments further include a system, including a processor, and a memory storing instructions which when executed by the processor, cause the processor to perform operations. The operations include receiving a trained ML model. The ML model is trained using a plurality of training masks generated by synthesizing one or more polygons, relating to a design pattern for a semiconductor device, using ILT. The operations further include generating one or more masks for use in manufacturing the semiconductor device by providing the design pattern for the semiconductor device to the trained ML model. The operations further include converting the generated one or more masks from at least one of a rasterized representation or a level-set representation to a polygon representation for use in manufacturing the semiconductor device.
The disclosure will be understood more fully from the detailed description given below and from the accompanying figures of examples described herein. The figures are used to provide knowledge and understanding of examples described herein and do not limit the scope of the disclosure to these specific examples. Furthermore, the figures are not necessarily drawn to scale.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially used in other embodiments without specific recitation.
ILT can be used to improve training of ML models for mask synthesis. For example, ILT can be used to generate synthesized masks to use as training data to train a supervised ML model. The trained ML model can then be used to infer a synthesized mask, using a design pattern. This can greatly improve the accuracy of the ML model by facilitating creation of a large and accurate sample of training data to use in training the ML model.
Further, an ML model structure can be designed to compensate for potential issues in using a design pattern to infer a synthesized mask. For example, the ML model can be designed for translational invariance, model grid shift invariance, and symmetry. This is discussed further below. The ML model can then be used to generate a synthesized mask. In an embodiment, the ML model outputs the synthesized mask in a format that is not suitable for native use by lithography tools (e.g., a rasterized or level-set representation). A variety of post-processing techniques can be used to convert the mask output by the ML model to a polygon representation, or another representation suitable for native use by lithography tools.
At block 104, ILT is used to produce training data masks from the design patterns 102. In an embodiment, standard ILT techniques can be used (e.g., without use of the ML model 110). As one example, level-sets can be used to represent the mask. For example, a level-set function ψ(x, y) can be used to represent an example photomask pattern by defining contours which enclose the regions in a photomask pattern. In this example, ψ(x, y) is a function with the following properties. First, ψ(x, y)=0 everywhere along the boundary of a region in the photomask pattern. Second, ψ(x, y)>0 “inside” a region in the photomask pattern (e.g., in regions corresponding to chrome portions of a mask). Third, ψ(x, y)<0, or is negative, “outside” a region in the photomask pattern (e.g., regions corresponding to clear quartz portions of a mask). Contours are defined by the “level-set”, i.e. those values in the (x,y) plane such that ψ(x, y)=0.
Returning to
In an embodiment, selection of the design patterns 102 to use for ILT at block 104 can affect the effectiveness of the ILT techniques and the accuracy of the final ML model 110. For example, a set, P, of potential design patterns for mask synthesis can include billions of unique patterns. To select patterns for use in ILT, the set P can be grouped into subgroups, or clusters, which contain items similar enough to each other that one representative from each cluster can be used to represent the cluster. This grouping, or clustering, can be done in numerous ways.
In one example, a parallelized system can perform fuzzy pattern grouping and cluster the patterns using parallelization across multiple CPU nodes. This can be done using the following technique. First, take in a design layout(s) and uses distributed processing to find unique patterns (e.g., within a user specified window size at user specified window centers). A distributed system can partition the design into “templates,” each of which will then be processed in parallel to find the unique windows. For each template one chooses a set of search windows, W, and clips the layout geometry to the window and obtains its hashkey (e.g., using existing techniques for computing an integer hashkey from a geometry layout clip). The hashkey can be used to build a global database of patterns. The geometry clip can be stored to a global database, D, of the form: D[hashkey]=geometry_polygons.
Second, train a machine learning auto-encoder model using distributed training. In an embodiment, this model can compress the data to a smaller size by storing the intermediate encoded portion of the model evaluation. A distributed ML training methodology can be used to train an autoencoder model, which has a smaller data size at its midpoint which represents the encoded data. The polygon data is first converted to a rasterized pixel grid so that convolutional neural networks can be used in subsequent steps. An autoencode model can be used to fit the data to itself, with a low dimensional encoded representation at the midpoint of the model. This can be done using a training method akin to Stochastic Weight Averaging, which: 1. splits the data into chunks, 2. fits the model partially in parallel on each chunk, 3. averages the weights that came from each partial fitting to create a combined model, and 4. Returns to step 2 and continue training the model from its latest weight values found in step 3. In an embodiment, this allows the model to fit on a larger data set than would be able to be contained in memory on a single machine. Once the autoencoder is trained, the encoded version of each data point which can result in an image of a specified size (e.g., 1024×1024) being reduced to a smaller (e.g., 8×8) encoded representation is stored. This is done with distributed ML model inferencing. This is merely an example, and methods for creating an encoded data set can be used, for example taking a lithographic simulation of the polygons and extracting geometric/pixel information from that.
Third, cluster the compressed data patterns into clusters using a distributed hierarchical clustering methodology. For example, distributed hierarchical clustering can be used because typical clustering algorithms have computational complexity of O(kNd), where k is the number of clusters, N is the number of patterns to be clustered, and d is the dimension of the patterns. Hierarchical clustering reduces k and N (and thus turn-around-time per level) by successively splitting the data into sub-clusters, which can be subdivided in parallel. By distributing the work among two sub-clusters for branch of the tree, complexity is reduced to O(Ndlogk), which is a significant saving when k is large. This can also reduce memory used. This is merely an example, however, and other clustering techniques (e.g., which either run on a single machine or distributed machines) could also be used (e.g., k-means, spectral, agglomerative). The chosen clustering technique can depend on the data volume and other data characteristics as to which clustering method is best suited for the problem at hand. In an embodiment, k-means clustering can be used at each hierarchy branch of the clustering tree. This is merely an example, and other clustering techniques could be used. In an embodiment, once the clustering tree is completed the leaves of the tree are used as the final clusters.
Block 104 generates training data masks 106. In an embodiment, these training data masks 106 are provided, along with the design patterns 102, as inputs to block 108 and used to train the ML model 110. In an embodiment, the training data masks 106 are stored with the design patterns 102 in a training database and are provided together to train the ML model at block 108. Alternatively, the design patterns 102 and training data masks 106 are provided via separate data paths to train the ML model at block 108. As another alternative, only the training data masks 106 are used in training the ML model 110 (e.g., the design patterns 102 are not used in training the ML model 110).
The ILT mask data (e.g., the training data masks 106) can be represented in many different ways, as will be discussed further below. For example, the mask data can be rasterized and represented as a series of pixels in an image. Alternatively, or in addition, the mask data can be encoded as a set of offsets from the design edge (e.g., the patterns could be represented as offsets from the design edge). These are merely examples, and other representations could be used, including a level-set representation on a grid, a skeletonization of the mask polygons, potentially followed by a rasterization of the mask polygons, or other transformations.
The network components 220 include the components necessary for the mask synthesis server 200 to interface with components over a network. For example, the mask synthesis server 200 can interface with remote storage and compute nodes using the network components. The mask synthesis server 200 can interface with these elements over a local area network (LAN), for example an enterprise network, a wide area network (WAN), the Internet, or any other suitable network. The network components 220 can include wired, WiFi or cellular network interface components and associated software to facilitate communication between the mask synthesis server 200 and a communication network.
Although the memory 210 is shown as a single entity, the memory 210 may include one or more memory devices having blocks of memory associated with physical addresses, such as random access memory (RAM), read only memory (ROM), flash memory, or other types of volatile and/or non-volatile memory. The memory 210 generally includes program code for performing various functions related to use of the mask synthesis server 200. The program code is generally described as various functional “applications” or “services” within the memory 210, although alternate implementations may have different functions and/or combinations of functions.
Within the memory 210, an ILT service 212 facilitates using ILT to synthesize masks from design patterns. For example, as discussed above at block 104 illustrated in
In an embodiment, models developed for signal processing applications, such as image recognition, can be used as a baseline to design a suitable ML model structure. In this embodiment, input data polygons (e.g., included in the design patterns 102 illustrated in
Further, in an embodiment, models developed for image recognition can be improved by recognizing, and compensating for, a number of characteristics of lithographic masks. For example, a model can be designed for translational invariance, model grid shift invariance, and symmetry. This is discussed further with regard to
At block 304 an ML training service (e.g., the ML training service 214 illustrated in
Symmetry issues (e.g., symmetric behavior in inputs that is not carried over to the output) can be improved in several ways. For example, the ML training service can identify repeated and symmetric inputs and algorithmically enforce them to have identical solutions up to the transform found. In an embodiment, this can be done by identifying repeated chip design regions that are identical within a window, synthesizing the mask for these designs and storing it in a library, and then using the library as a look up table for the mask when full chip mask synthesis is done. This is merely one example, and other suitable techniques can be used. In this example, the library can be created for a particular design being processed, or it can exist as a database of solutions from multiple designs. This can improve symmetry by ensuring that identical placements of design geometry will result in identical masks and any design symmetry locally detected will be enforced on the mask.
In an embodiment, this can be one using the following sequence of steps: First, a full chip design or representative set of test patterns is read. Second, the user places a user defined search window at selectively defined search box centers. The technique of choosing these centers can be guided by within template design hierarchy or by heuristically based sparse sampling of the design chosen so the number of searches is not overwhelming. Third, for each search box, a suitable software service (e.g., ML training service 214 illustrated in
At block 306, the ML training service trains the ML model. In an embodiment, the ML training service takes as input both training data masks generated using ILT and underlying design patterns. Further, in an embodiment, these training data masks and the design patterns are pre-processed (e.g., converted to a pixel domain or another suitable domain, and processed as described above in relation to block 304). Standard ML training techniques can then be used to train the ML model using the input data.
At block 402, the ML model is designed for translational invariance (e.g., ensuring that the polygons remain consistent when translated across a grid). Most mask synthesis results are expected to exhibit translational consistency. That is, as long as the lithography system has some translational invariance at some scale then the mask synthesis result will also be expected to exhibit this invariance. Typical translational invariance would be expected as long as the design pattern polygons are translated farther than the lithography system ambit. For example, for a 193 nm system, this would be expected to be in the range of ˜1 micron. In an embodiment, the ML model is designed for translational invariance. This is discussed further with regard to
While translational invariance, as discussed with relation to
At block 404, the ML model is designed for model grid shift invariance. In an embodiment, this includes ensuring that input data and training data (e.g., design polygons or a representation of them), for the ML model, are grid shift invariant. For example, the input data, the training data, or both, can be represented using a non-pixelated representation (e.g., using offset distances from the edges of the polygon). This is discussed further with regard to
Alternatively, or in addition, designing the ML model for model shift grid invariance includes ensuring that design polygons do not shift when the grid used in ML uses larger units than the design polygon input. In an embodiment, the ML models are further designed to reduce or eliminate grid or pixel shift variance (SV). This type of SV can be found when there is an underlying input to the model which has finer units than the pixelated grid which is used for the convolutions. For the mask synthesis application, design polygons are often stored on a database unit of less than lnm, while the pixelized grid has a spatial pixel size of multiple nanometers for practical purposes. In an embodiment, the ML model is designed for model grid shift invariance. This is discussed further with regard to
At block 406, the ML model is designed for symmetry (e.g., as discussed above ensuring that symmetry in design polygon inputs carries through to outputs). In an embodiment, a photolithography system typically has some symmetric behavior based on the illumination source shape. A user will expect that the resulting mask synthesis solution will also exhibit these symmetries. In an embodiment, the ML model is designed to enforce symmetry specified by the user. This is discussed further with regard to
For example,
The dimensions each layer are listed in the relevant box as N×N×K where the pixel dimensions, N, are the first two indices and the number of pixelized fields, or channels, is the third index, K. For example, the layer 552 includes pixel dimensions of 1024×1024 and 1 pixelized field. The layer 554 includes pixel dimension of 1024×1024 and 32 pixelized fields. Convolutions on inputs with multiple channels can be three dimensional, convolving over the N×N pixelized domain as well as through all the channels at the same time. Convolution kernel sizes are denoted by ci and co, the number of input and output channels, respectively, between any two boxes in the figure. To get an output with multiple channels, we can create a convolution kernel of shape ci×N×N for every output channel. We concatenate them on the output channel dimension, so that the shape of the convolution kernel is co×ci×N×N. Thus, the number of convolutions, with activation functions applied to their output, between each layer in
In an embodiment, dilated convolutions are used to allow larger convolutional range than traditional convolution functions. The depth of the network (e.g., the number of convolution steps from left to right), is limited so that the total ambit of the model in terms of maximal extent of the influence of any pixel in the input to another pixel in the inferenced result is finite and limited to a value which comparable to the physical ambit of the lithography system. A typical way to grow the model ambit is by using larger convolution kernels or having a network with large depth (allowing cumulative additions of kernel ambits).
However, both these options result in larger turn around time and more complex networks. In an embodiment, dilated kernels are very beneficial. Dilated kernels allow for increased model ambit (larger convolutional range) without incurring the turn around time penalty. The ambit of the model can be computed by using the model depths, kernel dilation factors: {Di}, and the undilated kernel widths, w. Given a target model maximal ambit, A, one can compute various combinations of depth, kernel width, and kernel dilation factors so that the total model ambit is less than the target ambit A. In an embodiment, each dilated convolution includes a kernel dilation factor greater than 1.
Alternatively, or in addition, model grid shift invariance can be addressed by predicting the output, irrespective of its grid alignment, using limited grid alignments in the input (and without bloating up the training data set). This can be done by making sure the input data and training data (e.g., the design polygons or a representation of them), are themselves grid shift invariant. One way to achieve this is to avoid using pixelized representation of design polygons, at all. For example the design polygons can be represented by offsets from an edge, instead of a pixelized representation. A neural network can be configured to receive, as input, features describing the circuit design within a neighborhood of an input location, and to output an offset distance from an edge of a circuit design polygon. The neural network can be used to determine offset distances for locations associated with circuit design polygons. For example, the system may select locations along the edges of a circuit design polygon and generate offset distances from the edges of the polygon (e.g., as illustrated in
To prepare the polygons for usage in CNNs, they can be transformed to a pixelized domain. For example, “subresolution-pixel” or “sub-pixel” sampling (SPS), wherein an input image is first rendered into a high-density pixel grid, which is subsequently converted to a desired lower resolution grid by sampling with a finite impulse response (FIR) filter, can be used. As another example, “flash”-based techniques can be used. For example, a flash-based technique is used to compute two-dimensional convolution values for a plurality of query points on the edges of a pattern layout. The flash-based technique precomputes (through numerical integration) the convolutions of a set of basis functions with one or more model kernels that represents the optical lithography system behavior. For example, the set of basis functions can be a set of half-plane basis functions that correspond to a set of predetermined face angles (e.g., a 45° face angle, a 90° face angle, a 135° face angle, etc). Each of the half-plane basis functions divides a two-dimensional space into two regions. The convolution values evaluated at an array of predetermined pixel locations are then stored in a set of two-dimensional lookup tables, referred to as model flash lookup tables.
In an embodiment, a system decomposes a polygon pattern into a flash representation, where each flash in the flash representation is an instance of one of the set of basis functions (e.g., half-plane basis functions as described above). The system then creates a sampled pattern layout by establishing a sampling grid over the polygon pattern layout. Next, at each grid location in the sampling grid, the system computes a convolution value (i.e., a filtered value) between an anti-aliasing filter (AAF) kernel (e.g., filter) and the input pattern layout (e.g., using a lookup table) The system stores the convolution value at the grid location in the sampling grid. The system repeats the final two steps for the entire sampling grid, to obtain a pixelized sampled image which is usable by CNNs. Additional techniques are discussed in relation to
In an embodiment, the input to the ML model layer 652 can be used for model grid shift invariance. For example, in one embodiment the ML model layer 652 receives as input only rasterized design polygons 674. In another embodiment, the model grid shift invariance can be improved by providing rasterized design polygons 674 as one input to the layer 652, along with a second input: lithography simulation of the design polygons using the design polygons as the mask (e.g., with dimensions 1024×1024×1).
In another embodiment, rasterized design polygons 674 are provided as one input to the layer 652, along with a different second input: a rasterized version of corrected design polygons. This is illustrated in
In another embodiment, rasterized corrected design polygons 678 are replaced with a lithography simulation of the corrected design polygons using the corrected design polygons as the mask (e.g., with dimensions 1024×1024×1). Design polygons 672 are rasterized, and the rasterized design polygons 674 are provided as input to the layer 652. In addition, the design polygons are corrected using known techniques (e.g., optical proximity correction (OPC) to generate corrected design polygons 676. The corrected design polygons are treated as though they were the mask, and used in a lithography simulation. The simulated mask, based on the corrected polygons, is provided as a second input to the layer 652 (e.g., in place of the rasterized corrected design polygons 678 illustrated in
In another embodiment, a level-set function of the design polygons (e.g., with dimensions 1024×1024×1) is provided as a second input to the layer 652, along with the rasterized design 674. In another embodiment, an ML architecture with different resolutions for input and output fields can be used. For example, the input can be a coarse bandlimited target or aerial image field, whereas the output can be a finer rasterized field (e.g., with dimensions 2048×2048×1), with upsampling convolution between the layer 664 and the finer output.
In an embodiment, model grid shift invariance can be further improved by eliminating, or modifying, model terms or functions which potentially have high pixel placement sensitivity. Terms which select the value of a single pixel from a group of pixels tend to magnify the SV, for example maximum selection over a range of pixels or down sampling by choosing a single pixel value from a group of pixels (e.g., a max pooling function and a subsampling (down sampling) function). These can be avoided. This also extends to methods such as strided convolutions. In an embodiment, using dilated convolutions to expand the model convolution ambit, as opposed to using strided convolutions, results in significantly improved performance. In summary, the ML model structure is designed to carefully reduced the highly non-linear and aliasing inducing terms, so that the model has smooth response (thereby improving the grid sensitivity), while still allowing the model to encapsulate the complex non-linear functional representation required for predicting an ILT mask for a given design.
In an embodiment, the ML model can be designed to be invariant under these transformations by ensuring that operations in the model architecture are invariant. This can be done, for example, by applying the operations in R to each operation in the model architecture. For convolutions this means replicating a convolution kernel, Kj, by Ri (Kj) for all Ri in R.
In an embodiment, the ML model structure 750 further includes the R mirrored, or rotated, versions of the convolution (e.g., as illustrated in
At block 820, the ML inference service (or any other suitable service) runs further post-processing on the mask generated at block 810. In an embodiment, the service can post-process the mask to enhance the lithography performance of the mask, and fix any artifacts or other areas where the inferenced solution was not accurate enough. This post processing could be any combination of rule-based correction, model-based edge perturbations, application of additional ML models, etc. The service generates the output mask 830.
In an embodiment, the output mask 830 is a data type that is not suitable for use with typical lithography tools. For example, the output mask 830 could be pixelized, in a level-set domain, etc. The output mask 830 can be converted to a data type suitable for native use by lithography tools (e.g., polygons). This is discussed further with regard to
In an embodiment, offsets from a design edge (as illustrated in
Alternatively, or in addition, offsets from a design edge (as illustrated in
Specifications for a circuit or electronic structure may range from low-level transistor material layouts to high-level description languages. A high-level of abstraction may be used to design circuits and systems, using a hardware description language (HDL) such as VHDL, Verilog, SystemVerilog, SystemC, MyHDL or OpenVera. The HDL description can be transformed to a logic-level RTL description, a gate-level description, a layout-level description, or a mask-level description. Each lower abstraction level that is a less abstract description adds more useful detail into the design description, such as, for example, more details for the modules that include the description. The lower levels of abstraction that are less abstract descriptions can be generated by a computer, derived from a design library, or created by another design automation process. An example of a specification language at a lower level of abstraction language for specifying more detailed descriptions is SPICE, which is used for detailed descriptions of circuits with many analog components. Descriptions at each level of abstraction are enabled for use by the corresponding tools of that layer (e.g., a formal verification tool). A design process may use a sequence depicted in
During system design, at block 1014, functionality of an integrated circuit to be manufactured is specified. The design may be optimized for desired characteristics such as power consumption, performance, area (physical and/or lines of code), and reduction of costs, etc. Partitioning of the design into different types of modules or components can occur at this stage.
During logic design and functional verification, at block 1016, modules or components in the circuit are specified in one or more description languages and the specification is checked for functional accuracy. For example, the components of the circuit may be verified to generate outputs that match the requirements of the specification of the circuit or system being designed. Functional verification may use simulators and other programs such as testbench generators, static HDL checkers, and formal verifiers. In some examples, special systems of components, referred to as emulators or prototyping systems, are used to speed up the functional verification.
During synthesis and design for test, at block 1018, HDL code is transformed to a netlist. In some examples, a netlist may be a graph structure where edges of the graph structure represent components of a circuit and where the nodes of the graph structure represent how the components are interconnected. Both the HDL code and the netlist are hierarchical articles of manufacture that can be used by an EDA product to verify that the integrated circuit, when manufactured, performs according to the specified design. The netlist can be optimized for a target semiconductor manufacturing technology. Additionally, the finished integrated circuit may be tested to verify that the integrated circuit satisfies the requirements of the specification.
During netlist verification, at block 1020, the netlist is checked for compliance with timing constraints and for correspondence with the HDL code. During design planning, at block 1022, an overall floor plan for the integrated circuit is constructed and analyzed for timing and top-level routing.
During layout or physical implementation, at block 1024, physical placement (positioning of circuit components, such as transistors or capacitors) and routing (connection of the circuit components by multiple conductors) occurs, and the selection of cells from a library to enable specific logic functions can be performed. As used herein, the term “cell” may specify a set of transistors, other components, and interconnections that provides a Boolean logic function (e.g., AND, OR, NOT, XOR) or a storage function (such as a flip-flop or latch). As used herein, a circuit “block” may refer to two or more cells. Both a cell and a circuit block can be referred to as a module or component and are enabled as both physical structures and in simulations. Parameters are specified for selected cells (based on standard cells) such as size and made accessible in a database for use by EDA products.
During analysis and extraction, at block 1026, the circuit function is verified at the layout level, which permits refinement of the layout design. During physical verification, at block 1028, the layout design is checked to ensure that manufacturing constraints are correct, such as design rule check (DRC) constraints, electrical constraints, lithographic constraints, and that circuitry function matches the HDL design specification. During resolution enhancement, at block 1030, the geometry of the layout is transformed to improve how the circuit design is manufactured.
During tape-out, data is created to be used (after lithographic enhancements are applied if appropriate) for production of lithography masks. During mask data preparation, at block 1032, the tape-out data is used to produce lithography masks that are used to produce finished integrated circuits. In an embodiment, lithography masks can be produced using one or more of the techniques described above, in connection with
A storage subsystem of a computer system may be used to store the programs and data structures that are used by some or all of the EDA products described herein, and products used for development of cells for the library and for physical and logical design that use the library.
The computer system may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that computer system. Further, while a single computer system is illustrated, the term computer system shall also be taken to include any collection of computer systems that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example computer system 1100 includes a processing device 1102, a main memory 1104 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), a static memory 1106 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 1118, which communicate with each other via a bus 1130. The main memory 1104 includes or is a non-transitory computer readable medium. The main memory 1104 (e.g., a non-transitory computer readable medium) can store one or more sets of instructions 1126, that when executed by the processing device 1102, cause the processing device 1102 to perform some or all of the operations, steps, methods, and processes described herein.
Processing device 1102 represents one or more processors such as a microprocessor, a central processing unit, or the like. More particularly, the processing device 1102 may be or include complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, a processor implementing other instruction sets, or processor(s) implementing a combination of instruction sets. Processing device 1102 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 1102 may be configured to execute instructions 1126 for performing some or all of the operations, steps, methods, and processes described herein.
The computer system 1100 may further include a network interface device 1108 to communicate over the network 1120. The computer system 1100 also may include a video display unit 1110 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 1112 (e.g., a keyboard), a cursor control device 1114 (e.g., a mouse), a graphics processing unit 1122, a signal generation device 1116 (e.g., a speaker), graphics processing unit 1122, video processing unit 1128, and audio processing unit 1132.
The data storage device 1118 may include a machine-readable storage medium 1124 (e.g., a non-transitory computer-readable medium) on which is stored one or more sets of instructions 1126 or software embodying any one or more of the methodologies or functions described herein. The instructions 1126 may also reside, completely or at least partially, within the main memory 1104 and/or within the processing device 1102 during execution thereof by the computer system 1100, the main memory 1104 and the processing device 1102 also including machine-readable storage media.
In some implementations, the instructions 1126 include instructions to implement functionality described above. While the machine-readable storage medium 1124 is shown in an example implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the computer system and that cause the computer system and the processing device 1102 to perform any one or more of the methodologies described above. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
Various features are described herein with reference to the figures. It should be noted that the figures may or may not be drawn to scale and that the elements of similar structures or functions are represented by like reference numerals throughout the figures. It should be noted that the figures are only intended to facilitate the description of the features. They are not intended as an exhaustive description of the claimed subject matter or as a limitation on the scope of the claimed subject matter. In addition, an illustrated example need not have all the aspects or advantages shown. An aspect or an advantage described in conjunction with a particular example is not necessarily limited to that example and can be practiced in any other examples even if not so illustrated or if not so explicitly described. Further, methods described herein may be described in a particular order of operations, but other methods according to other examples may be implemented in various other orders (e.g., including different serial or parallel performance of various operations) with more or fewer operations.
Some portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm may be a sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Such quantities may take the form of electrical or magnetic signals capable of being stored, combined, compared, and otherwise manipulated. Such signals may be referred to as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the present disclosure, it is appreciated that throughout the description, certain terms refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage devices.
The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the intended purposes, or it may include a 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 not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various other 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 method. In addition, the present disclosure is 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 disclosure as described herein.
The present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.
In the foregoing disclosure, implementations of the disclosure have been described with reference to specific example implementations thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of implementations of the disclosure as set forth in the following claims. Where the disclosure refers to some elements in the singular tense, more than one element can be depicted in the figures and like elements are labeled with like numerals. The disclosure and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
In view of the foregoing, the scope of the present disclosure is determined by the claims that follow.
This application claims priority to and the benefit of U.S. Provisional Patent Application No. 62/948,158, filed Dec. 13, 2019, which is incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62948158 | Dec 2019 | US |