|Publication number||US7212217 B1|
|Application number||US 10/170,946|
|Publication date||May 1, 2007|
|Filing date||Jun 12, 2002|
|Priority date||Jun 12, 2002|
|Publication number||10170946, 170946, US 7212217 B1, US 7212217B1, US-B1-7212217, US7212217 B1, US7212217B1|
|Inventors||Heath Feather, Richard Holmes|
|Original Assignee||Candence Design Systems, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (16), Non-Patent Citations (1), Referenced by (11), Classifications (8), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application claims the benefit of U.S. Provisional Patent Application No. 60/298,135, filed Jun. 12, 2001, entitled “Methods And Apparatus For Representing And Manipulating Polygons In A Multidimensional Space.”
1. Field of the Invention
The present invention is directed toward the field of graphics, and more particularly toward rendering multi-layer data on an output display.
2. Art Background
It is typical for graphics applications to manipulate large source images for display on a computer. For example, a source image may consist of many mega-pixels of image data. The graphics application typically operates within a broader application. For example, software, which allows a user to view and manipulate multi-level integrated circuit (“IC”) designs, utilizes a graphics application. The underlying source image for the IC design application is large, and thus the source image can't be displayed entirely on a computer display at full resolution.
In imaging applications, it is important to display images at various resolutions. For example, images are displayed at high resolutions so that image details may be visible. In addition, graphics applications require display of images at low resolutions. Since large source images can't be viewed at full resolution on a typical computer display, displaying the image at low resolutions permits viewing of large portions of the image. Typically, the IC design software permits the user, through use of a user interface, to pan large IC designs to permit viewing desired portions of the design. In addition, the IC design software permits the user to view the IC designs or portions of the IC designs at different resolutions.
Electronic design automation (“EDA”) applications assist engineers in designing integrated circuits. Specifically, these applications provide sets of computer-based tools for creating, editing, and analyzing IC design layouts. The IC design layouts are formed by geometric shapes that represent layers of different materials and devices on IC's. For instance, geometric shapes are defined to represent conductive interconnect lines. Interconnect lines route signals on the IC's. These lines are sometimes referred to as wire segments.
The IC designs represent different layers of an IC, and thus the graphical data to represent the IC designs includes multi-layer data. Typically, a user of the IC design software may desire to view one or more layers of the IC design. The IC design software may provide a means for the user to activate or deactivate different layers of the IC design to view a new modified image. Typically, in prior art systems, substantial computation is required to render a new image with the activated or deactivated layers. Accordingly, it is desirable to develop a graphics system that readily renders images for multi-layer data.
A graphics system readily activates and deactivates layers of a multi-layer source image. Image data is generated for a multi-layer source image. In one embodiment, the multi-layer source image comprises a multi-layered integrated circuit (“IC”) design. The image data defines an “on” or “off” state for a plurality of elements that represent the source image. In one embodiment, the image data comprises a pyramid of image tiles. The image tiles represent the source image at different resolutions. A bit plane identifies values for the elements for each layer of the source image. For example, a bit plane may store values to represent a six (6) layer IC design. Mask image data is generated to zero image data associated with at least one layer of the bit plane. For example, a user may desire to deactivate a layer of an IC design (e.g., turn off the display of layer 2). The graphics system generates pixel data from the mask image data, and renders the pixel data on an output display. In this way, image data is not re-generated in order to activate and deactivate layers of the multi-layered image.
The disclosure of U.S. Provisional Patent Application No. 60/298,135, filed Jun. 12, 2001, entitled “Methods And Apparatus For Representing And Manipulating Polygons In A Multidimensional Space” is hereby expressly incorporated herein by reference.
The present invention renders graphical images on a computer output display. In one embodiment for graphics rendering software, two different techniques are applied depending upon the display resolution of the source image. As used herein, the source image connotes the entire data set for display by the graphics software. For electronic design automation (EDA) applications, the source image consists of an integrated circuit design that includes geometric objects that represents interconnect wires. For this embodiment, if the display resolution of a target image (all or a portion of the source image for display) is greater than a predetermined threshold resolution, then the graphics software uses the data structures to render geometric objects on a display (“data structure technique”). Alternatively, if the resolution of a target image is less than a predetermined threshold resolution, then texture maps are used to render the target image (“texture map technique”).
One embodiment for rendering images on a computer display is as follows. The graphics application receives a target image (e.g., display coordinates and resolution) from the underlying application. For example, if the underlying application is an EDA application, then the graphics software receives resolution and display coordinates for an IC design. The graphics application determines whether the resolution of the target image is greater than, less than or equal to the predetermined threshold image. The predetermined threshold resolution may be selected such that target images with a resolution equal to the predetermined resolution threshold are processed using the texture map technique or processed using the data structure technique. If the resolution of the target image is less than (or equal to) the predetermined threshold resolution, then the graphics software selects the texture map technique. Using the texture map technique, the graphics software converts the image tile data to RGB color data in the form of a texture map, and passes the RGB color data to the graphics sub-system (e.g., computer graphics card) for rendering on the computer output display. If the resolution of the target image is greater than (or equal to) the predetermined threshold resolution, then the graphics software selects the data structure technique. Using the data structure technique, the graphics software obtains the coordinates of the geometric objects within the target image coordinates using the tree data structure, and scales the resolution of the geometric object coordinates to the target image resolution. The graphics software generates RGB color data for the image, and passes the RGB color data to the graphics sub-system (e.g., computer graphics card) for rendering on the computer output display.
Data Structure Technique:
The data structures that represent diagonal lines have applications for use in rendering geometric objects on a computer display (i.e., graphics applications). U.S. patent application Ser. No. 10/066,387, entitled “Methods and Apparatus for Storing And Manipulating Diagonal Interconnect Lines Of A Multidimensional Integrated Circuit Design”, filed Jan. 31, 2002, describes data structures for storing interconnect lines on an integrated circuit design, and is expressly incorporated herein by reference. One application for graphics includes rendering integrated circuit designs on a computer display for use in conjunction with EDA software.
The data structure technique is used for rendering target images with a resolution greater than the pre-determined threshold resolution. For this embodiment, the graphics software generates, prior to run time, an ng-tree, a kd-tree or a quad tree to represent all of the geometric objects in the source image. For the EDA application, the ng-tree, kd-tree or a quad tree data structure stores geometric representations for all the interconnect lines. In one embodiment, the geometric representations are polygons to support integrated circuit designs that employ diagonal wiring geometries. To render sub-images of the source image using the data structure technique, the graphics software locates all geometric objects in the target image. Specifically, the graphics software conducts range queries on the ng-tree, a kd-tree or a quad tree data structure for all geometric images that are included in the coordinates defined by the target image. The ng-tree, a kd-tree or a quad tree data structure stores data at the full resolution of the geometric object. To render the target image on a computer display, the graphics application software scales the geometric objects, obtained from the range query on the tree data structure, to fit the resolution of the target image.
The texture map technique generates image tile data for storage in memory and for subsequent use during run time. One embodiment for generating image tile data is described more fully below. A first image tile consists of a rendering of the source image at a first resolution. For example, the graphics application may select the lowest resolution for rendering the source image as the first resolution. For example, if the lowest resolution for displaying the source image is 1 mega-pixels, then the first image tile stores data to represent the entire source image at one mega-pixel. Additional image tiles, one for each level, are generated for “n” additional levels. Each image tile level represents a different display resolution. In one embodiment, an image tile for a corresponding level is partitioned into four sub-images based on the resolution of the prior image tile level. Thus, for this embodiment, the next image tile level comprises a resolution four times greater than the prior image tile level.
In one example, the first image tile has a resolution of 1 mega-pixel, and thus the second image tile is a division of the source image into four sub-images, wherein each sub-image consists of 1 mega-pixel image. In essence, the four sub-images in the second image tile level partition the source image into a “2×2” array. For this embodiment, a third texture map divides the source image into 16 sub-images (4×4). Thus, for the example image tile data, the source image is partitioned into 16 sub-images, each sub-image having a resolution of 1 mega-pixel. The process of generating additional levels of image tile data is repeated until the resolution of the source image equals the predetermined threshold image. For example, if the predetermined threshold image for the source image is 256 mega-pixels (16×16) sub images and the resolution for the first texture map is 1 mega-pixel, then the graphics application generates four levels of image tile data: a first texture map level that represents a 1 mega-pixel image of the source image; a second image tile data level that represents a 4 mega-pixel image partitioned into 4—1 mega-pixel sub-images, a third level that represents a 16 mega-pixel image; a fourth level that represents a 64 mega-pixel image; and a fifth image tile level that represents a 256 mega-pixel image partitioned into 256—1 mega-pixel sub-images.
The graphics application may generate the image tile data using any well-known technique. One embodiment for generating the image tile data is as follows. The graphics application divides the source image into a two dimensional array of tiles in the manner described above. For example, if the source image is divided into 16 tiles (4×4 array) for a first image tile layer (i.e., image tile layer with the highest resolution), then a second image tile layer consists of 4 tiles (2×2) and a third image tile layer (i.e., image tile layer with the lowest resolution) consists of one tile. The size of the tiles (i.e., numbers of pixels per tile) is selected as a power of two (e.g., 16×16, 32×16 32×32, 64×64, 128×64, 512×256, 1024×1024, etc). The pixels within a tile are referred to herein as elements. The graphics application generates a spatially organized tree, such as a kd tree, for the geometric objects contained in the source image.
A description for one embodiment to generate image tile data for texture maps follows. In one embodiment, the image tile data comprises 32 bits per pixel. However, the image tile data may comprise any number of bits of data depending upon the application. In addition, each tile may include a plurality of layers. The image tile represents underlying “content” for the corresponding pixel. In one embodiment for an EDA application, the image tile represents interconnect lines, for the corresponding area, situated on one or more layers of an integrated circuit design. For example, the image tile data may define, for a corresponding pixel, a wire situated on a metal 4 layer, a wire situated on layer 2 and a wire situated on layer 1. The image tile data defines the importance of a wire for rendering the texture map on an output display. For the above example, the image tile data may define the interconnect wire on layer 4 as the prominent wire to display, the interconnect wire on layer 2 as the second most important wire to display, and the interconnect wire on layer 1 as the third most importance wire to display.
The graphics application populates the pixel data for each image tile layer, and determines the importance level for display. Thus, for each pixel represented in an image tile, the pixel data represents all layers that have content as well as the order of importance for displaying the content. This process is repeated for each image tile. Note that the layer of importance for display of an interconnect wire may change as the resolution level for the image tile decreases. For example, at the lowest resolution (e.g., one tile), several pixels are mapped from the highest resolution image tile. The content for the region (e.g., various interconnect lines) may change due to the mapping of several pixels from a higher resolution to a single pixel in a lower resolution.
The present invention generates image tiles, and subsequently texture maps from source data, such as the data that represents an integrated circuit design. In one embodiment, to generate texture maps, an aspect ratio is selected based on the source data. For example, if the source data is rectangular (e.g., the bounding box of the source data is twice as large as the width of the source data), then a rectangle with a 2-1 aspect ratio, between the width and the height of the rectangle, is selected. In addition to selecting an aspect ratio, the texture map technique determines a maximum resolution for a texture map. In one embodiment, the graphics system selects a resolution of 256 mega pixels as the highest resolution to generate image tiles.
In one embodiment, the texture map technique divides the data of the source image into tiles. For example, the texture map technique may select a tile size of 1K×1K pixels. For a tile size of 1K×1K pixels, if the maximum resolution of a texture map is 256 mega pixels, then the technique divide the highest resolution image into a 16×16 array of 1K×1K tiles.
An abstract image tile array size is set (block 230,
The level of the abstract image tile array is set to 1 (block 260,
In order to determine whether to populate the element on the current level, the corresponding elements of the base abstract image tile array are obtained. Specifically, the base elements from the corresponding layer of the tile on the base abstract image tile are obtained (block 270,
The process then determines whether there are more layers to populate (block 282,
The process then determines whether the last tile for the current level has been processed (block 290,
As discussed above, the texture map technique uses pixel density to determine whether to populate a pixel in a current image tile level based on pixels from the base abstract image tile level (i.e., level 0).
The graphics system of the present invention supports multi-level or multi-dimensional data. For this embodiment, a computer stores image data for a plurality of levels. In one embodiment, the levels represent layers of an integrated circuit design (i.e., layers of a semiconductor device). However, the graphics technique has applications for any type of multi-dimensional graphics data. The image data includes a bitplane. Each pixel of the image data has a corresponding bitplane. The bitplane stores values to represent multiple layers of the image data.
Furthermore, the graphics system generates texture maps for a portion of the uncompressed image data. As is well-known, texture maps are generated from image data by applying multi-spectral information to the image tile data. In one embodiment, conversion of image tile data to texture maps is accomplished through color lookup tables. The graphics system may generate texture maps for 25 image tiles. The texture maps are generally stored in the onboard graphics memory of the graphics hardware of the computer.
The graphics system pre-processes data prior to requests by a user. To accomplish this, the graphics system pre-processes tiles at the lowest resolution in anticipation that the user will first view the source image at the lowest resolution. As the user selects greater resolution to view the source image, the graphics system processes additional tiles to anticipate the user's request. For example, the user may view the center portion of the source image at a first resolution. Based on this request, the graphics system processes image data for the center portion of the source image at the next greater resolution. For example, the graphics system may process tiles that constitute the center portion of the source image, as well as tiles that surround the center portion. For this embodiment, the processing includes obtaining the compressed image tile data from memory, uncompressing the image tile data, and generating texture maps from the uncompressed image data. Similarly, if the user generates a request to pan image data, then the graphics system preprocesses additional data (surrounding tiles) around the new portion of the source image requested by the user. As such, the graphics system attempts to preprocess so as to enhance the overall performance of the graphics system. In the event that a particular piece of data is not readily available, then the system moves up the texture hierarchy searching for a lower resolution substitute that satisfies the request.
Returning to the flow diagram of
Using the texture map technique, the graphics system selects the image tile that has the appropriate resolution for the input request (block 520,
The image tiles also provide a means for masking the content used in the conversion to texture map data. In one embodiment, the image tile data is masked with data by performing a logical AND operation. This technique provides a means for viewing selected content without the need to generate new image tiles. For the EDA application, this technique is used to turn off the layers displayed in an integrated circuit design. For example, the viewer of the integrated circuit design may desire to mask the view of layer 3. For this example, the graphics software masks the content of each layer 3 element within the image tile so as to eliminate layer 3. For example, image tile data may designate content for layer 3 as the most important layer and content for layer 2 as the next most important layer. If the graphics software masks the content for layer 3, then the content of layer 2 is displayed. This technique for masking content of the image tile data may be applied to any type of information stored as image tile element data. For example, the image tile data may store information regarding power consumption for an integrated circuit design. The display of the information content may be turned on and off by this masking technique.
The graphics system provides the ability to turn on and off layers of the multilevel or multidimensional image tile data. In one embodiment, a mask is used to turn on and off layers of the multidimensional image tile data. Specifically, the mask is generated based on input from a user. For example, the underlying application program may provide a user a means to activate (turn on) certain layers of the multi dimensional image data. Also, the underlying application program may provide a means for a user to deactivate (turn off) certain layers of the multi dimensional image data. For the EDA application, the user may desire to turn off one or more layers of an integrated circuit design to view the design with only the layers of interest.
Returning to the flow diagram of
During run time, the graphics application converts image tile data, which represents content of the source image, to RGB texture map data. In one embodiment for the EDA application, the graphics software uses a look-up table to convert content associated with an interconnect layer of an IC design to a unique color. For example, if the pixel data specifies that layer 4 is the most important display data, then the graphics software looks-up the color for layer 4 to generate the RGB color data for the corresponding pixel.
The computer system 1000 further includes a mass storage device 1020, peripheral device(s) 1030, portable storage medium drive(s) 1040, input control device(s) 1070, a graphics system 1050, and an output display 1060. For purposes of simplicity, all components in the computer system 1000 are shown in
The portable storage medium drive 1040 operates in conjunction with a portable non-volatile storage medium, such as a floppy disk or a compact disc read only memory (CD-ROM), to input and output data and code to and from the computer system 1000. In one embodiment, the graphics system software is stored on such a portable medium, and is input to the computer system 1000 via the portable storage medium drive 1040. The peripheral device(s) 1030 may include any type of computer support device, such as an input/output (I/O) interface, to add additional functionality to the computer system 1000. For example, the peripheral device(s) 1030 may include a network interface card for interfacing the computer system 1000 to a network.
The input control device(s) 1070 provide a portion of the user interface for a user of the computer system 1000. The input control device(s) 1070 may include an alphanumeric keypad for inputting alphanumeric and other key information, a cursor control device, such as a mouse, a trackball, stylus, or cursor direction keys. In order to display textual and graphical information, the computer system 1000 contains the graphics system 1050 and the output display 1060. The output display 1060 may include a cathode ray tube (CRT) display or liquid crystal display (LCD). The graphics system 1050 receives textual and graphical information, and processes the information for output to the output display 1060. The components contained in the computer system 1000 are those typically found in general purpose computer systems, and in fact, these components are intended to represent a broad category of such computer components that are well known in the art.
The graphics system may be implemented in either hardware or software. For the software implementation, the graphics system is software that includes a plurality of computer executable instructions for implementation on a general-purpose computer system. Prior to loading into a general-purpose computer system, the graphics system software may reside as encoded information on a computer readable medium, such as a magnetic floppy disk, magnetic tape, and compact disc read only memory (CD-ROM). In one hardware implementation, the graphics system may comprise a dedicated processor including processor instructions for performing the functions described herein. Circuits may also be developed to perform the functions described herein.
Although the present invention has been described in terms of specific exemplary embodiments, it will be appreciated that various modifications and alterations might be made by those skilled in the art without departing from the spirit and scope of the invention.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5022091||Feb 28, 1990||Jun 4, 1991||Hughes Aircraft Company||Image processing technique|
|US5519628 *||Feb 19, 1993||May 21, 1996||International Business Machines Corporation||System and method for formulating subsets of a hierarchical circuit design|
|US5640497 *||Jan 23, 1995||Jun 17, 1997||Woolbright; Phillip Alexander||Layout redesign using polygon manipulation|
|US6005978||Feb 7, 1996||Dec 21, 1999||Cognex Corporation||Robust search for image features across image sequences exhibiting non-uniform changes in brightness|
|US6075538 *||Jul 24, 1997||Jun 13, 2000||Institute Of High Performance Computing||Time and space efficient data structure and method and apparatus for using the same for surface rendering|
|US6184891 *||Mar 25, 1998||Feb 6, 2001||Microsoft Corporation||Fog simulation for partially transparent objects|
|US6326964 *||Nov 6, 1998||Dec 4, 2001||Microsoft Corporation||Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system|
|US6493858 *||Jul 10, 2001||Dec 10, 2002||The Board Of Trustees Of The Leland Stanford Jr. University||Method and system for displaying VLSI layout data|
|US6532581 *||Jul 1, 1999||Mar 11, 2003||Matsushita Electric Industrial Co., Ltd.||Method for designing layout of semiconductor device, storage medium having stored thereon program for executing the layout designing method, and semiconductor device|
|US6801215 *||Nov 29, 2001||Oct 5, 2004||At&T Corp.||Hardware-assisted visibility-ordering algorithm|
|US6886148 *||Dec 10, 2002||Apr 26, 2005||The Board Of Trustees Of The Leland Stanford Jr. University||Method and system for displaying VLSI layout data|
|US6917711 *||Aug 10, 1999||Jul 12, 2005||Digital Accelerator Corporation||Embedded quadtree wavelets in image compression|
|US20010034588 *||Nov 30, 2000||Oct 25, 2001||Maneesh Agrawals||System and method for abstracting and visualizing a rout map|
|US20020170025 *||May 11, 2001||Nov 14, 2002||Ming-Chih Shih||Method for subdividing data of a layout|
|US20030076722 *||Dec 10, 2002||Apr 24, 2003||The Board Of Trustees Of The Leland Stanford Jr. University||Method and system for displaying VLSI layout data|
|US20040080525 *||May 2, 2003||Apr 29, 2004||Miller Gavin Stuart Peter||Object selection using hit test tracks|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7872650 *||Jan 18, 2011||Microsoft Corporation||Remotely viewing large tiled image datasets|
|US8035636 *||Oct 11, 2011||Oracle America, Inc.||Software system for efficient data transport across a distributed system for interactive viewing|
|US8660386 *||Sep 12, 2012||Feb 25, 2014||Google Inc.||Large-scale image processing using mass parallelization techniques|
|US8676743||Oct 24, 2011||Mar 18, 2014||Space-Time Insight||Space-time-nodal type signal processing|
|US8768873 *||May 3, 2011||Jul 1, 2014||Space-Time Insight||Space-time-node engine signal structure|
|US8773435 *||Oct 29, 2012||Jul 8, 2014||Adobe Systems Incorporated||Temporary low resolution rendering of 3D objects|
|US9047353||Jun 3, 2014||Jun 2, 2015||Space-Time Insight||Space-time-node engine signal structure|
|US20070252834 *||Feb 27, 2007||Nov 1, 2007||Microsoft Corporation||Remotely Viewing Large Tiled Image Datasets|
|US20090027712 *||Jul 25, 2008||Jan 29, 2009||Masaki Sone||Image forming apparatus, image processing apparatus, and image processing method|
|US20120284280 *||Nov 8, 2012||Space-Time Insight||Space-time-node engine signal structure|
|US20130050212 *||Oct 29, 2012||Feb 28, 2013||Adobe Systems Incorporated||Temporary Low Resolution Rendering of 3D Objects|
|U.S. Classification||345/630, 345/629, 345/419, 382/302|
|International Classification||G09G5/30, G09G5/00|
|Aug 31, 2004||AS||Assignment|
Owner name: CADENCE DESIGN SYSTEMS, INC., CALIFORNIA
Free format text: MERGER;ASSIGNOR:SIMPLEX SOLUTIONS, INC.;REEL/FRAME:015755/0222
Effective date: 20020927
Owner name: SIMPLEX SOLUTIONS, INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FEATHER, HEATH;HOLMES, RICHARD;REEL/FRAME:015755/0250
Effective date: 20040827
|Oct 23, 2007||CC||Certificate of correction|
|Nov 1, 2010||FPAY||Fee payment|
Year of fee payment: 4
|Nov 3, 2014||FPAY||Fee payment|
Year of fee payment: 8