The present invention is directed to the reduction of shot counts in fractured layout design data. Various aspects of the invention may be particularly useful in creating fractured layout design data that will be more efficiently processed by vector-scanning type reticle or mask writers.
Electronic circuits, such as integrated microcircuits, are used in a variety of products, from automobiles to microwaves to personal computers. Designing and fabricating microcircuit devices typically involves many steps, known as a “design flow.” The particular steps of a design flow often are dependent upon the type of microcircuit, its complexity, the design team, and the microcircuit fabricator or foundry that will manufacture the microcircuit. Typically, software and hardware “tools” verify the design at various stages of the design flow by running software simulators and/or hardware emulators, and errors in the design are corrected or the design is otherwise improved.
Several steps are common to most design flows. Initially, the specification for a new circuit is transformed into a logical design, sometimes referred to as a register transfer level (RTL) description of the circuit. With this logical design, the circuit is described in terms of both the exchange of signals between hardware registers and the logical operations that are performed on those signals. The logical design typically employs a Hardware Design Language (HDL), such as the Very high speed integrated circuit Hardware Design Language (VHDL). The logic of the circuit is then analyzed, to confirm that it will accurately perform the functions desired for the circuit. This analysis is sometimes referred to as “functional verification.”
After the accuracy of the logical design is confirmed, it is converted into a device design by synthesis software. The device design, which is typically in the form of a schematic or netlist, describes the specific electronic devices (such as transistors, resistors, and capacitors) that will be used in the circuit, along with their interconnections. This device design generally corresponds to the level of representation displayed in conventional circuit diagrams. Preliminary timing estimates for portions of the circuit may be made at this stage, using an assumed characteristic speed for each device. In addition, the relationships between the electronic devices are analyzed, to confirm that the circuit described by the device design will correctly perform the desired functions. This analysis is sometimes referred to as “formal verification.”
Once the relationships between circuit devices have been established, the design is again transformed, this time into a physical design that describes specific geometric elements. This type of design often is referred to as a “layout” design. The geometric elements, which typically are polygons, define the shapes that will be created in various materials to manufacture the circuit. Typically, a designer will select groups of geometric elements representing circuit device components (e.g., contacts, gates, etc.) and place them in a design area. These groups of geometric elements may be custom designed, selected from a library of previously-created designs, or some combination of both. Lines are then routed between the geometric elements, which will form the wiring used to interconnect the electronic devices. Layout tools (often referred to as “place and route” tools), such as Mentor Graphics' IC Station or Cadence's Virtuoso, are commonly used for both of these tasks.
With a layout design, each physical layer of the circuit will have a corresponding layer representation in the design, and the geometric elements described in a layer representation will define the relative locations of the circuit device components that will make up a circuit device. Thus, the geometric elements in the representation of an implant layer will define the regions where doping will occur, while the geometric elements in the representation of a metal layer will define the locations in a metal layer where conductive wires will be formed to connect the circuit devices. Typically, a designer will perform a number of analyses on the layout design. For example, the layout design may be analyzed to confirm that it accurately represents the circuit devices and their relationships as described in the device design. The layout design also may be analyzed to confirm that it complies with various design requirements, such as minimum spacings between geometric elements. Still further, the layout design may be modified to include the use of redundant geometric elements or the addition of corrective features to various geometric elements, to counteract limitations in the manufacturing process, etc.
In particular, the design flow process may include one or more resolution enhancement technique (RET) processes. These processes will modify the layout design data, to improve the usable resolution of the reticle or mask created from the design in a photolithographic manufacturing process. One such family of resolution enhancement technique (RET) processes, sometimes referred to as optical proximity correction (OPC) processes, may add features such as serifs or indentations to existing layout design data in order to compensate for diffractive effects during a lithographic manufacturing process. For example, as shown in
After the layout design has been finalized, it is converted into a format that can be employed by a mask or reticle writing tool to create a mask or reticle for use in a photolithographic manufacturing process. Masks and reticles typically are made using tools that expose a blank reticle or mask substrate to an electron or laser beam (or to an array of electron beams or laser beams). Most mask writing tools are able to only “write” certain kinds of polygons, however, such as right triangles, rectangles or other trapezoids. Moreover, the sizes of the polygons are limited physically by the maximum beam (or beam array) size available to the tool. Accordingly, larger geometric elements in the layout design, or geometric elements that are not right triangles, rectangles or trapezoids (which typically are a majority of the geometric elements in a layout design) must be “fractured” into the smaller, more basic polygons that can be written by the mask or reticle writing tool. For example,
Once a layout design has been fractured into shots, then the fractured layout design data can be converted to a format compatible with the mask or reticle writing tool. Examples of such formats are MEBES, for raster scanning machines manufactured by ETEC, an Applied Materials Company, and various vector scan formats for Nuflare, JEOL, and Hitachi machines, such as VSB11 or VSB12. The written masks or reticles then can be used in a photolithographic process to expose selected areas of a wafer to light or other radiation in order to produce the desired integrated circuit devices on the wafer.
A significant consideration to conventional photolithographic manufacturing processes is the size of the fractured layout design, which can be very large. For example, one layout data file for a single layer of a field programmable gate array may be approximately 58 gigabytes. As a result, the process of writing a fractured layout design is extremely expensive, both in terms of computing resources and write time. Improvements in the efficiency and speed of creating masks or reticles thus are continually being sought.
Most reticle or mask writers are either raster-scanning or vector-scanning. With raster-scanning mask or reticle writers, the writing beam traverses the mask substrate from one side to the opposite side in a straight line, while the mask substrate typically is moved orthogonal to the direction of the beam. The writer then interrupts the beam for those areas (e.g., pixels) where a geometric element should not be formed. Alternately, the reticle or mask writer may use some type of gray-scaling technique to generate the desired geometric elements without interrupting the beam. The time required to write a reticle or mask using a raster-scanning writer thus will largely be independent of the overall design being written to the mask or reticle. With vector scanning mask or reticle writers, however, the writer moves the beam to only those areas of the mask substrate where a shot should be written. The mask writer will then either scan the area of the shot with the beam using, e.g., a raster pattern, or it will vary the shape of the beam to write as much of the shot as possible at one time. As a result, the time required to write a reticle or mask using a vector-scanning writer will correspond closely to the number of shots in the fractured layout design.
Aspects of the invention relate to techniques for reducing the number of shots in a fractured layout design. Various examples of the invention may be particularly useful in reducing the reticle or mask writing time of a vector-scanning reticle or mask writer by reducing the number of shots generated during a fracturing process.
According to various implementations of the invention, each polygon in a layout design is examined for “jogs.” For each identified jog, the surrounding region is examined to determine if there are any opposing jogs or parallel edges that can be aligned with the identified jog. As used herein, the term “jog pair” will be used to refer to the combination of an identified jog and an opposing jog that can be aligned with the identified jog. For convenience and ease of understanding, the term “jog pair” also will be used herein to refer to the combination of an identified jog with an opposing, parallel edge that can be aligned with the identified jog. Once the jog pairs have been determined, the surrounding region then is examined for any polygon features, such as edges or vertices, which might restrict or prevent the alignment of the identified jog with an opposing jog or edge. If the identified jog can be aligned with an opposing jog or edge without violating a specified alignment constraint, then those jogs are deemed an alignable jog pair.
One or more of the alignable jog pairs then will be selected for alignment. With some implementations of the invention, the alignable jog pairs may be selected for alignment based upon their impact on the size of the polygon when aligned. That is, a particular set of alignable jogs may be selected that, when aligned, will minimize the impact of the alignments on the polygon. For example, a particular set of alignable jog pairs may be selected that, when aligned, will minimize the area change of the polygon. Alternately, a particular set of alignable jog pairs may be selected that, when aligned, will minimize the total movement of the edges (including jog edges) of the polygon. Once one or more of the alignable jog pairs have been selected, then the layout design data will be modified to align the selected jog pairs.
According to various examples of the invention, this alignment process may be incorporated into a larger resolution enhancement technique (RET) process. For still other examples of the invention, however, a jog alignment process may alternately or additionally be implemented as a stand-alone process. These and other features and aspects of the invention will be discussed in more detail below.
Various implementations of the invention relate to techniques or systems for reducing the shot count of fractured layout design data. As will be discussed in more detail below, polygons in layout design data are examined to identify alignable jog pairs One or more of the alignable jog pairs are then aligned, thereby reducing the shot count required to fracture the polygon.
Referring back to
As will be discussed in more detail below, various implementations of the invention can identify the two “jogs” 301 and 303 in the polygon 201, as seen in
The execution of various electronic design automation processes according to embodiments of the invention may be implemented using computer-executable software instructions executed by one or more programmable computing devices. Because these embodiments of the invention may be implemented using software instructions, the components and operation of a generic programmable computer system on which various embodiments of the invention may be employed will first be described. Further, because of the complexity of some electronic design automation processes and the large size of many circuit designs, various electronic design automation tools are configured to operate on a computing system capable of simultaneously running multiple processing threads. The components and operation of a computer network having a host or master computer and one or more remote or servant computers therefore will be described with reference to
In
The memory 407 may similarly be implemented using any combination of computer readable media that can be accessed by the master computer 403. The computer readable media may include, for example, microcircuit memory devices such as read-write memory (RAM), read-only memory (ROM), electronically erasable and programmable read-only memory (EEPROM) or flash memory microcircuit devices, CD-ROM disks, digital video disks (DVD), or other optical storage devices. The computer readable media may also include magnetic cassettes, magnetic tapes, magnetic disks or other magnetic storage devices, punched media, holographic storage devices, or any other medium that can be used to store desired information.
As will be discussed in detail below, the master computer 403 runs a software application for performing one or more operations according to various examples of the invention. Accordingly, the memory 407 stores software instructions 409A that, when executed, will implement a software application for performing one or more operations. The memory 407 also stores data 409B to be used with the software application. In the illustrated embodiment, the data 409B contains process data that the software application uses to perform the operations, at least some of which may be parallel.
The master computer 403 also includes a plurality of processor units 411 and an interface device 413. The processor units 411 may be any type of processor device that can be programmed to execute the software instructions 409A, but will conventionally be a microprocessor device. For example, one or more of the processor units 411 may be a commercially generic programmable microprocessor, such as Intel® Pentium® or Xeon™ microprocessors, Advanced Micro Devices Athlon™ microprocessors or Motorola 68K/Coldfire® microprocessors. Alternately or additionally, one or more of the processor units 411 may be a custom-manufactured processor, such as a microprocessor designed to optimally perform specific types of mathematical operations. The interface device 413, the processor units 411, the memory 407 and the input/output devices 405 are connected together by a bus 415.
With some implementations of the invention, the master computing device 403 may employ one or more processing units 411 having more than one processor core. Accordingly,
Each processor core 501 is connected to an interconnect 507. The particular construction of the interconnect 507 may vary depending upon the architecture of the processor unit 501. With some processor cores 501, such as the Cell microprocessor created by Sony Corporation, Toshiba Corporation and IBM Corporation, the interconnect 507 may be implemented as an interconnect bus. With other processor units 501, however, such as the Opteron™ and Athlon™ dual-core processors available from Advanced Micro Devices of Sunnyvale, Calif., the interconnect 507 may be implemented as a system request interface device. In any case, the processor cores 501 communicate through the interconnect 507 with an input/output interface 509 and a memory controller 511. The input/output interface 509 provides a communication interface between the processor unit 501 and the bus 415. Similarly, the memory controller 511 controls the exchange of information between the processor unit 501 and the system memory 407. With some implementations of the invention, the processor units 501 may include additional components, such as a high-level cache memory accessible shared by the processor cores 501.
While
It also should be appreciated that, with some implementations, a multi-core processor unit 411 can be used in lieu of multiple, separate processor units 411. For example, rather than employing six separate processor units 411, an alternate implementation of the invention may employ a single processor unit 411 having six cores, two multi-core processor units each having three cores, a multi-core processor unit 411 with four cores together with two separate single-core processor units 411, etc.
Returning now to
Each servant computer 417 may include a memory 419, a processor unit 421, an interface device 423, and, optionally, one more input/output devices 425 connected together by a system bus 427. As with the master computer 403, the optional input/output devices 425 for the servant computers 417 may include any conventional input or output devices, such as keyboards, pointing devices, microphones, display monitors, speakers, and printers. Similarly, the processor units 421 may be any type of conventional or custom-manufactured programmable processor device. For example, one or more of the processor units 421 may be commercially generic programmable microprocessors, such as Intel® Pentium® or Xeon™ microprocessors, Advanced Micro Devices Athlon™ microprocessors or Motorola 68K/Coldfire® microprocessors. Alternately, one or more of the processor units 421 may be custom-manufactured processors, such as microprocessors designed to optimally perform specific types of mathematical operations. Still further, one or more of the processor units 421 may have more than one core, as described with reference to
In the illustrated example, the master computer 403 is a multi-processor unit computer with multiple processor units 411, while each servant computer 417 has a single processor unit 421. It should be noted, however, that alternate implementations of the invention may employ a master computer having single processor unit 411. Further, one or more of the servant computers 417 may have multiple processor units 421, depending upon their intended use, as previously discussed. Also, while only a single interface device 413 or 423 is illustrated for both the master computer 403 and the servant computers, it should be noted that, with alternate embodiments of the invention, either the computer 403, one or more of the servant computers 417, or some combination of both may use two or more different interface devices 413 or 423 for communicating over multiple communication interfaces.
With various examples of the invention, the master computer 403 may be connected to one or more external data storage devices. These external data storage devices may be implemented using any combination of computer readable media that can be accessed by the master computer 403. The computer readable media may include, for example, microcircuit memory devices such as read-write memory (RAM), read-only memory (ROM), electronically erasable and programmable read-only memory (EEPROM) or flash memory microcircuit devices, CD-ROM disks, digital video disks (DVD), or other optical storage devices. The computer readable media may also include magnetic cassettes, magnetic tapes, magnetic disks or other magnetic storage devices, punched media, holographic storage devices, or any other medium that can be used to store desired information. According to some implementations of the invention, one or more of the servant computers 417 may alternately or additionally be connected to one or more external data storage devices. Typically, these external data storage devices will include data storage devices that also are connected to the master computer 403, but they also may be different from any data storage devices accessible by the master computer 403.
It also should be appreciated that the description of the computer network illustrated in
Layout Data Fracturing Tool
The shot count reduction tool 601 may work with a design data store 611. The design data store 611 may be any data storage device that is capable of storing design data and accessible to the shot count reduction tool 601. For example, the design data store 611 may be a magnetic disk drive, a rewritable optical disk drive, a “punch” type memory device, a holographic memory device, etc. Of course, while a single design data store 611 device is illustrated in
As will be discussed in more detail below, the jog identification module 603 obtains layout design data from the design data store 611. With various examples of the invention, the jog identification module 603 will then identify the “jogs” in each polygon of the layout design data. Additionally, for each identified jog, the jog identification module 603 will identify if it has an opposing jog or edge that can be aligned with the identified jog. After the jog identification module 603 has determine one or more jog pairs, the feature identification module 605 will identify surrounding features of the jog pairs, such as adjacent vertices, jogs and edges.
Using the information gathered by the feature identification module 605, for each polygon the jog pair alignment selection module 607 will select which of the identified jog pairs should be aligned. More particularly, the jog pair alignment selection module 607 will determine if a target jog is alignable (that is, whether it can be aligned with an opposing jog or edge without violating an alignment constraint). The jog pair alignment selection module 607 also may determine a subset of alignable jog pairs that are preferred for alignment over other alignable jog pairs. For example, with some implementations of the invention, the jog pair alignment selection module 607 may determine a subset of alignable jog pairs that, when aligned, will still reduce the shot count for the polygon but also will minimize the total displacement of jogs and edges in the polygon. With various examples of the invention, the jog pair alignment selection module 607 may employ, e.g., linear programming, to determine which of the identified jog pairs is alignable, and which of the alignable jog pairs are preferred for alignment.
Once the jog pair alignment selection module 607 has selected jog pairs for alignment, the jog alignment module 609 will modify the layout design data to align the selected jog pairs. The jog alignment module 609 may then store the modified layout design data in the design data store 611. The modified layout design data may be used to replace the original layout design data, or it may be stored in conjunction with the original layout design data.
With various examples of the invention, the shot count reduction tool 601 may be implemented as part of another electronic design automation process, such as a resolution enhancement technique process. For example, use of the shot count reduction tool 601 may be incorporated into an optical proximity correction process. With these implementations, as the optical proximity correction process corrects a layout design data to improve the image resolution it will provide, the shot count reduction tool 601 will concurrently modify the layout design data to reduce the number of shots required to write a mask from the data. The operation of the shot count reduction tool 601 will be discussed in more detail below with regard to the flow chart illustrated in
Referring now to
As will be appreciated by those of ordinary skill in the art, layout design data will include one or more geometric elements to be written to a mask or reticle. For conventional mask or reticle writing tools, the geometric elements typically will be polygons of various shapes. Thus, the layout design data usually include polygon data describing the features of polygons in the design. With various examples of the invention, the layout design data may include unfractured polygon data, previously-fractured polygon data being prepared for re-fracturing, or some combination thereof.
Next, the jog identification module 603 determines if there are any unprocessed polygons in the layout design data. If there is, then in step 703 the jog identification module 603 selects an unprocessed polygon for processing. In step 705, the jog identification module 603 identifies each jog in the target polygon. In addition to identifying each jog, with various examples of the invention the jog identification module 603 also will determine, for each jog, whether it has an opposing jog or edge with which it might be aligned in step 707.
As used herein, the term “jog” refers to an arrangement of polygon edges like the arrangement of polygon edges 801-805 illustrated in
With some embodiments of the invention, the jog identification module 603 may perform a scan analysis to identify both a jog (referred to herein as a “target” jog) and any opposing jog or edge with which the target job might be aligned. To perform the scan, the jog identification module 603 may sort the edges of the polygon by, e.g., their coordinate values in a Cartesian coordinate system. For example, the jog identification module 603 may initially sort the edges according to their x-coordinate values, and then by their y-coordinate values.
Referring now to
Once the jog identification module 603 has sorted all of the edges of a polygon, it reads them out in series to create a list of the edges that extend into a scanning band of a specified width. The band then can be moved across the area of the polygon, so that it includes each identified jog in turn. With various examples of the invention, the jog identification module 603 may first scan the edges extending in a first direction, rotate the process by 90°, and then scan the edges extending in a second direction orthogonal to the first direction. For example, referring to
Thus, with the polygon shown in
With various example of the invention, when the jog identification module 603 identifies a jog (i.e., a target jog), it also examines the edges of the polygon within the scanning band for an opposing jog or edge with which the target jog might be aligned. A jog is considered an opposing jog if it occurs on an opposite side of the polygon from the target jog, the middle edge of the jog is parallel to the middle edge of the target jog, and is within a predetermined distance D≦2dmax of the middle edge of the target jog. As will be discussed in more detail below, dmax is the maximum allowable movement for any edge in a direction orthogonal to the direction of that edge.
For example, referring back to
As will be appreciated by those of ordinary skill in the art, depending upon the polygon, a target jog may have no opposing jogs or edges, one opposing jog or edge, or two or more opposing jogs or edges. If a target jog has only as single opposing jog or edge, then the jog identification module 603 will associate the target jog with its opposing jog or edge as a jog pair. (As previously noted, the term “jog pair” is used herein for convenience and ease of understanding to refer to the combination of a jog and its opposing edge as well as a pair of opposing jogs.)
If, however, a target jog has two or more opposing jogs or edges, then the jog identification module 603 may select a single opposing jog or edge to pair with the target jog. With some implementations of the invention, for example, the jog identification module 603 may employ an algorithm for creating a maximum set of matching of items in a bipartite graph, in order to create the maximum number of jog pairs for a polygon. Various algorithms for determining the maximum set of matching of items in a bipartite graph are well known in the art, and will not be discussed in more detail here.
Still other implementations of the invention may instead select jog pairs by pairing the target jog with the closest opposing jog or edge along a direction orthogonal to the middle edge of the target jog. For example, if the jog identification module 603 is scanning horizontal edges, it will identify the vertical middle edge of a target jog. Next, it will identify the horizontal edge on the opposite side of the polygon that is nearest to the vertical middle edge of the target jog. From that opposing edge, the jog identification module 603 will identify the vertical edge the vertical edge of the polygon adjacent to the endpoint of that nearest opposing horizontal edge. If that opposing vertical edge is within the distance D from vertical middle edge of the target jog, then the jog identification module 603 will pair the opposing vertical edge with the target jog.
Thus, referring to
It should be appreciated that, while various implementations of the invention may employ the maximum bipartite graph matching or closest opposing parallel edge identification techniques discussed above for selecting jog pairs, still other implementations of the invention may employ alternate or additional techniques for selecting job pairs. For example, other selection techniques may be identified or developed for selecting jog pairs that will, upon alignment of at least some of these jog pairs, generate a smaller number of shot counts during fracturing. These other jog pair selection techniques may alternately or additionally be employed by various embodiments of the invention.
It also should be appreciate that, while
Still further, other embodiments of the invention may alternately or additionally employ techniques different from the scanning band described above to identify target jogs and opposing jogs in a polygon. For example, with some embodiments of the invention, the jog identification module 603 may place all of the edges of the polygon in a quad tree or other spatial index. For each target jog, the jog identification module 603 will find its location in the tree, and query the tree to find all of the edges around it to identify the relevant opposing jogs, edges and vertices. Of course, any other desired technique or techniques can alternately or additionally be employed to identify a target jog and any relevant opposing jogs or edges.
Various implementations of the invention also may determine if aligning a target jog with an opposing jog violates an alignment constraint. As will be discussed in more detail below, the alignment constraints may prohibit movement of a jog beyond a maximum displacement distance, prohibit movement of a jog such that its middle edge is within a minimum distance from another edge or vertex of the polygon, prohibit movement of a jog such that either one of its peripheral edges is within a minimum distance from an edge of another polygon, etc. Accordingly, in step 709, the feature identification module 605 will identify one or more features of the target jog's polygon or adjacent polygons that may constrain movement of the target jog.
More particularly, with some embodiments of the invention, the feature identification module 605 may perform another scan analysis to identify the polygon features relevant to each target jog. Again, a region surrounding the target jog is analyzed for relevant polygon features. As discussed in detail above, the feature identification module 605 initially sorts the edges in the region, e.g., their x-coordinate values and then by their y-coordinate values. With some implementations of the invention, the feature identification module 605 may employ the same edge order generated by the jog identification module 603. With still other implementations of the invention, however, the feature identification module 605 may perform its own sorting of the edges in the polygon. It should be appreciated, however, that one or more features from polygons adjacent to the target polygon (i.e., the polygon containing the target jog) may constrain the alignment of the target jog, as will be discussed in more detail below. Accordingly, with various examples of the invention, the feature identification module 605 may include edges from one or more adjacent polygons in the scan region.
When the scanning reference point of a band reaches an identified jog (i.e., the target jog for that band position), the feature identification module 605 can efficiently query locally within the band to recognize edges and vertices that may be relevant to that target jog. The scanning band can be of any desired width in a particular direction, but its width may conveniently be determined by the alignment constraints. For example, as will be discussed in detail below, one alignment constraint that may be that the absolute movement of any edge will be limited to a small value dmax. There may also be an alignment constraint that all vertices in a polygon must maintain a minimum separation distance of smin. With these two alignment constraints, the width of the scanning band may be, for example, W≧2·(dmax+smin), to ensure that, even if the middle edge of an identified jog can be moved by its maximum amount to align with an opposing jog, the scanning band will include any vertices that may nonetheless prohibit the alignment. It should be appreciated, however, that alternate implementations of the invention may employ other scan widths. For example, if the alignment of jog pairs is restricted to movement in only one direction (e.g., a positive direction in an x-y Cartesian coordinate system), then the scan region may extend from the target jog in only that positive direction.
As previously noted, movement of a target jog also may be limited by features of adjacent polygons. For example,
While various implementations of the feature identification module 605 may use a scanning band to identify relevant features in a polygon as discussed above, still other embodiments of the invention may alternately or additionally employ different techniques to identify features relevant to a target jog. For example, with some embodiments of the invention, the feature identification module 605 may place all of the edges of the polygon in a quad tree or other spatial index. For each target jog, the feature identification module 605 will find its location in the tree, and query the tree to find all of the edges around it to identify the relevant opposing jogs, edges and vertices. Of course, any other desired technique or techniques can alternately or additionally be employed to identify relevant opposing jogs, edges and vertices for a target jog.
After the feature identification module 605 has identified the relevant edges and vertices for each jog pair in a polygon, the jog pair alignment selection module 607 selects jog pairs for alignment. More particularly, in step 711, the jog pair alignment selection module 607 determines which of the identified jogs are alignable with an opposing jog or edge. That is, for each identified jog pair, the jog pair alignment selection module 607 will determine if aligning the jog pair will violate any assigned alignment constraints.
As previously noted, various examples of the invention may impose one or more constraints on the alignment of an identified jog with an opposing jog or edge. Some constraints may be specified to prevent the alignment of jogs in a layout design from degrading the resolution of a mask or reticle created from the design. For example, an optical proximity correction process may intentionally add one or more shape characteristics to a polygon, in order to improve its reproduction resolution when that polygon is subsequently written to a mask or reticle. It might therefore be undesirable to remove those added shape characteristics, even if their deletion would reduce the shot count required to write the polygon to a mask or reticle.
Accordingly, various implementations of the invention may prohibit the absolute movement of any edge, such as a middle edge of a jog, from being moved more than a maximum movement value dmax. A relatively small value can be selected for the maximum movement value to ensure, for example, that no alignment of a target jog with an opposing jog or edge will significantly alter the shape of their polygon. With various examples of the invention, the maximum movement value dmax may be, e.g., 30 nm. Some implementations of the invention also may prohibit any vertex of the polygon from being within a minimum separation distance smin from another vertex. The minimum separation distance smin may be selected to ensure that, after the layout design has been written to a reticle or mask, the diffractive effects from one vertex do not significantly impact the diffractive effects of an adjacent vertex during a photolithographic manufacturing process, to ensure that the mask can be accurately examined during a subsequent inspection process, etc. With various examples of the invention, the minimum separation distance smin may be, e.g., 60 nm. As will be discussed in more detail below, these constraints may be employed in a vector environment. Accordingly, with various implementations of the invention, one or both of these constraints may be measured using, e.g., the l-inf norm.
In addition to determining whether jog pairs are alignable based upon specified constraints, some implementations of the invention also may select only a subset of the alignable jog pairs for alignment. For example, as previously noted, a designer may wish to ensure that reducing the shot count does not in turn degrade improvements in the layout design created by an earlier resolution enhancement technique process. Accordingly, with various examples of the invention, in step 713 the jog pair alignment selection module 607 may additionally select only a subset of alignable jogs that would reduce or minimize the changes to the polygon. For example, the jog pair alignment selection module 607 may select only the subset of alignable jogs that would minimize the change in total area of the polygon, minimize the total cumulative movement of edges in the polygon, or some combination of both.
In addition to selecting a subset of alignable jogs to align, in step 715 the jog pair alignment selection module 607 will determine, for each jog pair, how much each jog or edge in the pair will be moved for alignment. For example, referring back to
With various examples of the invention, the jog pair alignment selection module 607 may simultaneously determine the alignability of each identified jog, select a subset of the alignable jog pairs, and determine the movement of each edge in the selected jog pairs using integer programming (IP), also known as integer linear programming (ILP). As known in the art, integer programming is a form of linear programming in which one or more of the variables are integers. As also known in the art, linear programming is a mathematical methodology used to determine the maximum (or minimum) solution of a linear function given a defined set of constraints.
For example, the standard form for linear programming (and integer programming) will take the format: maximize cTx, subject to the constraints Ax≦b, and x≧0, where A, b, c, and x are vectors such that:
Accordingly, the jog pair alignment selection module 607 may both determine the alignable jogs and select a subset of the alignable jogs by treating the selected subset of alignable jogs as a solution to an integer programming problem. Still further, the jog pair alignment selection module 607 also can determine the amount of movement of each selected edge as part of the integer programming problem solution. More particularly, the jog pair alignment selection module 607 can use the alignment constraints to create one or more constraint equations for each identified jog. For example, when the feature identification module 605 identifies one or more features relevant to a target jog (such as an opposing jog or edge), the jog pair alignment selection module 607 can create a constraint equation based upon both the target jog and one of the relevant features. With some implementations of the invention, when the feature identification module 605 identifies relevant features for a target jog, it may pass that information onto the jog pair alignment selection module 607 before analyzing the next target jog. In this manner, the constraint equations for the integer programming process can be generated as the relevant features for each target jog are identified.
Employing this technique, the jog pair alignment selection module 607 may generate an integer programming problem such that, for each vertical edge i and each horizontal edge j in a polygon, a variable hi can represent the horizontal displacement of the vertical edge, the variable vj can represent the vertical displacement of the horizontal edge, the constant xi can represent the original (e.g., lowest) x-coordinate value of the corresponding vertical edge and the constant yj can represent the original y-coordinate value of the corresponding horizontal edge. It should be noted that, because the displacement variables hi and vj represent movements of one jog or edge toward another jog or edge in a jog pair, these movements will comply with a non-negativity constraint. Using these representations, the alignment constraints for the polygon 901 show in
Non-negative alignment constraints:
hivj≧0∀i,j (1)
Maximum alignment constraints:
hi,vj≦dmax∀i,j (2)
Minimum geometric separation constraints between jogs:
(x917+h917)−(x913−h913)≧min(smin,x917−x913) (3)
(x921+h921)−(x909−h909)≧min(smin,x921−x909) (4)
Minimum geometric separation constraints between jogs and edges:
x
931−(x917−h917)≧min(smin,x931−x917) (5)
x
933−(x921−h921)≧min(smin,x933−x921) (6)
x
927−(x917−h917)≧min(smin,x927−x917) (7)
(y925+v925)−y919≧min(smin,y925−y919) (8)
(y925+v925)−y915≧min(smin,y925−y915) (9)
Maximum alignment constraints provided by alignable edges:
(y925+v925)−y919−y935) (10)
Maximum alignment constraints provided by alignable jogs:
h
917
+h
921
≦x
921
−x
917 (11)
h
909
+h
913
≦x
913
−x
909 (12)
The objective function for the polygon 901, with the goal of selecting the alignment movements that will minimize the total displacements of all alignable jog-to-jog or jog-to-edge pairs, may be:
As previously noted, various implementations of the invention may alternately or additionally select jog pairs for alignment so as to minimize the area change of the target polygons.
As known in the art, the jog pair alignment selection module 607 can use any of a variety of well-known integer programming solution techniques to determine the solution that minimizes the objective. If there is no solution for the objective equation, then the jog pair alignment selection module 607 will determine that no jog alignments should be made.
With still other embodiments of the invention, the jog pair alignment selection module 607 alternately may employ a conventional linear programming solution technique, such as the well-known simplex method, with an initial zero feasible solution. Once the jog pair alignment selection module 607 determines the optimized solution for the linear programming equations, it can then round the result to integer values. Again, if the rounded results cannot provide an exact alignment among the vertices in jog or jog-and-edge pairs, then no action will be taken.
It should be appreciated that, while the constraint requirements and objective function for a single polygon are described in detail above, various implementations of the jog pair alignment selection module 607 will be solved for all of the input edges input to the shot count reduction tool 601 (e.g., all of the polygons in the layout design data for a layer of an integrated circuit device). Solving the objective function for all of the input edges simultaneously will ensure that the alignment of any jog in one polygon will take into account the proximity of one or more characteristics of an adjacent polygon.
Once the jog pair alignment selection module 607 has selected a set of jogs for alignment, the jog alignment module 609 will revise the layout design data to align the selected jogs in step 717. Once the layout design data has been updated to align the selected jogs, it can be stored in the memory 609. With some examples of the invention, the modified layout design data may be subject to further processing (e.g., further resolution enhancement techniques processing). In step 719, the modified layout design data then is fractured for use by a mask or reticle writing tool.
While specification embodiments of the invention have been shown and described in detail above to illustrate the principles of the invention, it will be understood that the invention may be otherwise embodied with departing from the invention. For example, while specific terminology has been employed above to refer to electronic design automation processes, it should be appreciated that various examples of the invention may be implemented using any desired combination of electronic design automation processes.
Further, various examples of the invention discussed in detail above relate to layout design data for normal-tone masks and reticles (i.e., masks and reticles where the opaque portions of the mask or recticle will be within the polygons). It should be appreciated, however, that some implementations of the invention can be employed with layout design data for reverse-tone masks, where the opaque portions of the mask will be outside of the polygons. With these implementations, the alignment of jogs would be made for the areas of the layout design data outside of the polygons. Still further, while the various implementations of the invention discussed above limit movement of edges to only isothetic movements (i.e., parallel to a designated x-axis or y-axis direction), alternate examples of the invention may permit non-isothetic edge movements.
Moreover, various implementations of the invention may include one or more features to prevent the alignment of jog pairs in undesired areas. For example, some embodiments of the invention may allow a user to designate one or more areas of a design where no changes should be made, regardless of whether one or more jog pairs in the designated region are selected for alignment. Still other implementations may allow a user to designate regions where, e.g., the alignment of jog pairs must be manually approved by the user.
Thus, while the invention has been described with respect to specific examples including presently preferred modes of carrying out the invention, those of ordinary skill in the art will appreciate that there are numerous variations and permutations of the above described systems and techniques that fall within the spirit and scope of the invention as set forth in the appended claims.
This application claims priority under 35 U.S.C. 119 to U.S. Provisional Patent Application No. 60/971,461, filed on Sep. 11, 2007, entitled “Fracture Shot Count Reduction” and naming Emile Y. Sahouria and Jainlin Wang as inventors, which provisional patent application is incorporated entirely herein by reference.
Number | Date | Country | |
---|---|---|---|
60971461 | Sep 2007 | US |