Graphics engine for high precision lithography
First Claim
Patent Images
1. A method of converting geometry into driving voltages for individual mirrors in a micromirror array, including mapping a work piece into overlap regions, corresponding to patterns of intended energy contributions from a plurality of overlapping exposures of regions of the work piece;
- rendering many polygons to gray scaled pixel values using a plurality of rendering engines operating in parallel;
calculating exposure values for the gray scaled pixel values, taking into account the overlap regions;
contouring the exposure values based on individual micromirror characteristics; and
outputting the contoured exposure values to one or more mirror pixel drivers.
7 Assignments
0 Petitions
Accused Products
Abstract
The present invention includes a method to use a phase modulating micromirror array to create an intensity image that has high image fidelity, good stability through focus and good x-y symmetry. Particular aspects of the present invention are described in the claims, specification and drawings.
-
Citations
166 Claims
-
1. A method of converting geometry into driving voltages for individual mirrors in a micromirror array, including
mapping a work piece into overlap regions, corresponding to patterns of intended energy contributions from a plurality of overlapping exposures of regions of the work piece; -
rendering many polygons to gray scaled pixel values using a plurality of rendering engines operating in parallel;
calculating exposure values for the gray scaled pixel values, taking into account the overlap regions;
contouring the exposure values based on individual micromirror characteristics; and
outputting the contoured exposure values to one or more mirror pixel drivers. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of rendering, including:
-
providing a smaller addressing window, corresponding to a memory;
providing a larger addressing window, comprising the smaller addressing window and a guard zone outside the smaller addressing window, the guard zone being addressable but not corresponding to the memory;
receiving a polygon contained within the larger addressing window;
rendering at least sections of the polygon into the larger addressing window; and
writing data for the rendered sections of the polygon within the smaller addressing window to the memory and discarding said data for the rendered sections of the polygon outside the smaller addressing window. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. A method of rendering polygons to a larger addressing window, the larger addressing window comprising a smaller addressing window corresponding to a memory and a guard zone outside the smaller addressing window, the guard zone being addressable but not corresponding to the memory, the method including:
-
receiving a polygon contained within the larger addressing window, repeatedly selecting a section of the polygon;
converting the section into rasterized representation data;
processing the rasterized representation data to write portions of said rasterized representation data within the smaller addressing window to the memory, and not to write portions of said rasterized representation data outside the smaller addressing window to the memory. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. A device to render a polygon contained within a larger addressing window, the larger addressing window comprising a smaller addressing window and a guard zone outside the smaller addressing window, the device including:
-
input lines;
a renderer connected to the input lines, adapted to receive a polygon contained within the larger addressing window and repeatedly to convert a section of the polygon into one or more addressing instructions and data;
a memory, coincident with the smaller addressing window;
a memory controller, connected to the renderer, adapted to process the addressing instructions and the data, to write portions of the data inside the smaller addressing window to the memory, and to disregard portions of the data outside the smaller addressing window. - View Dependent Claims (32, 33)
-
-
34. A device for writing to memory a section of a polygon contained within a larger addressing window, the larger addressing window comprising a smaller addressing window and a guard zone outside the smaller addressing window, the section represented by one or more addressing instructions and data, the device including:
-
input lines;
a memory coincident with the smaller addressing window;
a memory controller connected to the input lines and the memory, adapted to receive addressing instructions and data referencing the larger addressing window, to write portions of the data within the smaller addressing window to the memory, and to disregard portions of the data within the guard zone.
-
-
35. A method of representing an area of an image utilizing at least two levels of resolution, including:
-
receiving a polygon representation bounded by edges;
repeatedly selecting a section of the polygon for rendering, the section corresponding to pixels;
representing the pixels in a first data structure as filled, empty or partially filled, based on the edges of the polygon representation;
representing the partially filled pixels in a second data structure by arrays of sub-pixels that are filled or empty, defining the edges of the polygon representation, said arrays including at least 3×
3 sub-pixels. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)
-
-
48. A method of representing an area in an image utilizing at least two levels of resolution, including:
-
receiving a polygon representation bounded by edges;
repeatedly selecting a section of the polygon for rendering, the section corresponding to pixels;
classifying the pixels as filled, empty or partially filled, based on the edges of the polygon representation;
representing partially filled pixels by arrays of sub-pixels that are assigned an intensity level, defining the edge of the polygon representation, said arrays including at least 3×
3 sub-pixels. - View Dependent Claims (49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60)
-
-
61. A data structure representing an area having at least one edge, utilizing two levels of resolution, including:
-
at least one memory;
at least one pixel map stored in the memory, representing a pixel as filled, empty or partially filled;
at least one sub-pixel array stored in the memory, corresponding to the pixel map, representing the partially filled pixel by an array of sub-pixels that are filled or empty, defining the edge of the area, said array including at least 3×
3 sub-pixels, without representing the filled or empty pixel with sub-pixel values. - View Dependent Claims (62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81)
-
-
82. A data structure representing at least one trapezoid utilizing two levels of resolution, the trapezoid having first and third parallel edges that are parallel to each other and to a reference axis and having second and fourth opposing edges, including:
-
at least one memory;
at least one pixel map stored in the memory, representing pixels as filled, empty, parallel edge, or opposing edge;
at least one sub-pixel array stored in the memory, corresponding to the pixel map, representing the parallel edge pixel and the opposing edge pixel by an array of sub-pixels that are filled or empty, said array including at least format 3×
3 sub-pixels. - View Dependent Claims (83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94)
-
-
95. A protocol for transmitting graphic data representing a polygon having a plurality of edges, utilizing two levels of resolution, including:
-
representing a section of the polygon by an array of pixels, the pixels being assigned a value of filled, empty or partially filled;
representing the partially filled pixel by a sub-pixel array, the sub-pixels being assigned a value of filled or empty defining the edges, the array including at least 3×
3 sub-pixels;
transmitting a representation of the array of pixels and a plurality of arrays of sub-pixels using at least a first channel and an independent second channel, the first channel being used for the representation of the array of pixels and the second channel being used for the arrays of sub-pixels. - View Dependent Claims (96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106)
-
-
107. A method of calculating a value for a multi-valued pixel corresponding to part of an edge of a polygon, including:
-
providing an array of sub-pixels;
providing a set of pre-calculated sub-pixel bar maps corresponding to edges having particular orientations;
representing the part of the edge of the polygon by sub-pixels that are filled or empty, by applying the pre-calculated sub-pixel bar maps;
super-sampling a set of sub-pixels corresponding to a pixel and assigning a value to the pixel corresponding to the number of sub-pixels in the set that are either filled or empty. - View Dependent Claims (108)
-
-
109. A method of defining an edge of a polygon within an area having sides, the area being subdivided into sub-pixels, including:
-
providing a plurality of pre-calculated sub-pixel bar maps corresponding to potential intercepts and orientations of the polygon edge with the sides of the area;
wherein the potential intercepts are limited to discrete positions along edges of the area;
wherein the potential orientations are limited to orientations that connect the discrete positions;
determining two intercepts of the polygon edge with the edges of the area;
determining an orientation of the polygon edge; and
applying one of the pre-calculated sub-pixel bar maps corresponding to at least one of the two intercepts and the orientation. - View Dependent Claims (110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120)
-
-
121. A method of defining an edge of a polygon within an area having sides, the area being subdivided into sub-pixels, including:
-
providing a plurality of pre-calculated sub-pixel bar maps corresponding to potential intercepts and orientations of the polygon edge with the area;
wherein the potential intercepts are limited to discrete positions along the sides of the area;
wherein the potential orientations are limited to orientations that connect the discrete positions;
determining two intercepts of the polygon edge and an extension of the polygon edge with the edges of the rectangular area;
determining an orientation of the polygon edge; and
applying one of the pre-calculated sub-pixel bar maps corresponding to at least one of the two intercepts and the orientation.
-
-
122. A method of defining an edge of a polygon within a rectangular area, the rectangular area being subdivided into sub-pixels, including:
-
providing a plurality pre-calculated sub-pixel bar maps corresponding to potential intercepts of the polygon edge with the rectangular area;
wherein the potential intercepts are limited to discrete positions along edges of the rectangular area;
determining two intercepts of the polygon edge with the edges of the rectangular area; and
applying one of pre-calculated sub-pixel bar maps based on the two intercepts.
-
-
123. A method of defining an edge of a polygon within a rectangular area, the rectangular area being subdivided into sub-pixels, including:
-
providing a plurality of pre-calculated sub-pixel bar maps corresponding to potential intercepts of the polygon edge with the rectangular area;
wherein the potential intercepts are limited to discrete positions along edges of the rectangular area;
determining two intercepts of the polygon edge and an extension of the polygon edge with the edges of the rectangular area; and
applying one of the pre-calculated sub-pixel bar maps corresponding to the two intercepts. - View Dependent Claims (124, 125, 126, 127, 128, 129, 130, 131)
-
-
132. A method of selecting a sub-pixel bar map to represent an edge intersecting an area, the area having at least first and second edges, the area being subdivided into sub-pixels, the method including:
-
constructing a segment between intercepts along the first and second edges, the segment defining first and second regions of the area;
wherein the intercepts are limited to discrete positions along edges of the area;
forming candidate sets of sub-pixels to represent the first region, the sub-pixels in the set being completely or partially within the first region;
determining a variance between area coverage of the candidate subsets and area coverage of the first region;
evaluating corners formed by combining the candidate subsets with sub-pixel bar maps for other segments;
selecting from among the candidate subsets based on the determination of variance and the evaluation of corners; and
storing the selected subset in a memory. - View Dependent Claims (133, 134, 135)
-
-
136. A method of pre-calculating sub-pixel bar maps for sub-pixels corresponding to pixels, to define part of a polygon edge, including:
-
providing potential first intercepts for a line corresponding to the polygon edge along an edge of one of the sub-pixels on a first side of a pixel pair;
providing potential second intercepts for the line along a second side of the pixel pair opposed to the first side;
wherein the potential first and second intercepts are limited to discrete positions;
providing segments connecting the first potential intercepts and the second potential intercepts spanning a predetermined range of angles;
for the segments, selecting sub-pixel bar maps to define regions bounded by the segments;
wherein the selection of the sub-pixel bar maps takes into account - View Dependent Claims (137, 138, 139, 140, 141)
-
-
142. A method of calculating a value of a pixel corresponding to a corner at an intersection of first and second edges of a polygon, including:
-
providing a memory including a first array of sub-pixels and a second array of sub-pixels, both first and second arrays corresponding to a pixel;
extending the first and second edges into first and second lines;
setting the sub-pixels of the first array to filled or empty, corresponding to a first region defined by the first line;
setting the sub-pixels of the second array to filled or empty, corresponding to a second region defined by the second line;
calculating an intersection of the first array and the second array;
super-sampling from the calculated intersection a set of sub-pixels corresponding to a pixel and assigning a value to the pixel corresponding to the sub-pixels. - View Dependent Claims (143, 144, 145, 146)
-
-
147. A method for loading segments of a micromirror array, including:
-
rendering a plurality of polygons, utilizing a plurality of rendering processors operating in parallel;
writing digital values corresponding to the rendered polygons to a buffer, the buffer having a plurality of regions corresponding to the plurality of rendering processors and having a plurality of segments;
repeatedly writing the digital values from one of the buffer segments to a set of digital to analog converters having analog outputs; and
repeatedly switching the analog outputs among the micromirror array segments. - View Dependent Claims (148)
-
-
149. A method for loading segments of a micromirror array, including:
-
rendering a plurality of polygons, utilizing a plurality of rendering processors operating in parallel;
writing digital values corresponding to the rendered polygons to a first buffer of a plurality of buffers, the buffers having a plurality of regions corresponding to the plurality of rendering processors and having a plurality of segments;
repeatedly transferring the digital values from one of the segments of the first buffer to a set of digital to analog converters having analog outputs;
repeatedly switching the analog outputs among the micromirror array segments;
wherein the rendering and writing steps proceed, utilizing a second buffer, while the transferring and switching steps proceed, utilizing the first buffer. - View Dependent Claims (150)
-
-
151. A method of adjusting a size of a geometric feature in a rasterized image, the feature having edges represented by gray scaled pixels, the method including:
-
receiving at least one size adjustment parameter;
accessing a memory that stores the rasterized image;
applying a convolution kernel to a neighborhood of pixels in the memory, a center pixel of the neighborhood including an edge, to classify the edge as horizontal, vertical or 45 degrees with respect to the neighborhood of pixels and to estimate the orientation of the edge;
modifying gray scale values of the pixels in the neighborhood to apply the size adjustment parameter consistent with the estimated orientation, without modifying the placement of the geometric figure in the rasterized image, including;
for a horizontal edge, sliding gray values of a horizontal row of central pixels of the neighborhood in a vertical direction, followed by filling up from the center pixel in a horizontal direction;
for a vertical edge, sliding gray values of a vertical row of central pixels of the neighborhood in the horizontal direction, followed by filling up from the center pixel in the vertical direction; and
for a 45 degree edge, translating the gray scale value of the center pixel into a distance between the edge and an inside corner of the center pixel, applying the adjustment parameter and translating a resulting modified distance back to gray scale values of the center pixel and of neighboring pixels. - View Dependent Claims (152)
-
-
153. A method of adjusting widths of geometric feature in a gray scale image stored in a memory, the method including:
-
detecting an edge of a feature in a gray scale image, the edge represented by gray scaled pixels;
estimating an orientation of the detected edge;
classifying the orientation of the edge, from classes including at least horizontal, vertical and 45 degree orientations;
displacing the detected edge anisotropically inwards or outwards from the feature, consistent with the classification of the orientation. - View Dependent Claims (154, 155, 156, 157)
-
-
158. A method of compensating for energy variation in a multi-pass, stepped irradiation of a high contrast layer on a work piece, the method including:
-
mapping a work piece into overlap regions, corresponding to patterns of intended energy contributions in multiple passes of irradiation;
irradiating an area of the work piece with energy;
recording the energy applied to the area for the overlap regions in the area; and
adjusting irradiation of particular overlap regions of the area during subsequent exposure passes based on the recorded energy applied to the particular overlap regions. - View Dependent Claims (159, 160, 161, 162, 163, 164)
-
-
165. A method of compensating for response differences among individual micromirrors in a micromirror array, including:
-
providing an array of compensation functions are associated with individual micromirrors in a micromirror array, wherein the compensation functions transfer illumination data values to driving voltages; and
for an individual micromirror, converting illumination data values to driving voltages by applying the compensation function corresponding to the individual micromirror. - View Dependent Claims (166)
-
Specification