Hextract Web Page Header


GDSII & OASIS Hierarchical Extractor

Normally when you attempt to extract a window or windows of data from a GDSII/OASIS file that is hierarchical, the hierarchy must be completely flattened or exploded before entities that cross the window can be computed and extracted. The resulting file is flat and can be quite large if the region extracted was large and dense.

HExtract is a command line based engine used to extract a window out of a GDSII or OASIS file while preserving as much hierarchy as is possible. It does this by analyzing whether a particular cell placement is completely inside of the desired window, completely outside of the desired window or crosses the boundary of the desired window.

User Controls

The user defines the coordinates of the window to extract, the cell to start with, as well as which layers to extract to the output file.

The user can also specify a tiling parameter that will create many tiled outputs, each with its own filename identifying the location in the array of tiles.

For applications where user display/interaction is preferred HExtract is available as a plug-in to Qckvu3.
 

App Note

Preparing a Flip Chip Mask Set

As more packaging is done "on wafer" it becomes necessary to create large masks that define openings, RDL, UMB and BUMP stencils. This note describes how we do this using a combination of GDS-SR and HExract ...

Mask clipped to round using Hextract



Usage

HExtract is command line based. Syntax and examples are shown below:


hextract64 <input_file> <output_file> [options]


hextract                   name/path to the executable  - may vary depending on the platform
                           and whether it is 32 or 64 bit implementation.

input_file                 Path/Filename of the source GDSII/OASIS file.
                           This file can be one of the following types : GDSII, OASIS
                           QIS 'Load' Cache [*.load.(b32 | b64 | l32 | l64)] *
                           QIS 'DbLoad' Cache [*.dbload.(b32 | b64 | l32 | l64)] *

                           * The appropriate supporting files (scan, GDSII) must also be present 
                           in the same directory as the cache file.

output_file                Path/Filename path of file to be created. Output is always GDSII.


Options

-cell:cell_name            Specify the cell to be extracted. If no name specified, the program will
                           determine the top level cell by computing which cell has the deeepest tree 
                           below it.

-top:name                  Specify the name of the top level cell in the output GDSII file. If not 
                           specified this defaults to the name of the cell used from the input file.

-layers:layer_string       Specify the layers to be extracted. (default: All layers)
                           layer_string := All | layer[:datatype][,layer[:datatype]]*

                           OR

                           layer_string := map[,map]*
                           map := layer[:datatype]-layer[:datatype] 
                                  | layer[:datatype]-NULL 
                                    | ALL-layer[:datatype] 
                                      | ALL-NULL

-window:minX,minY,maxX,maxY  Specify a window for extraction. Data crossing the window will either be 
                             clipped or not depending on the absence or presence of the -noclip option.

-tilesz:width,height       Divide the extraction window into tiles of size (width x height) user units. 
                           This may generate more than one output files. Each of these output files 
                           will have a suffix indicating its position in the array of tiles.


-tile:columns,rows         Divide the extraction window into (rows x columns) tiles of equal size. 
                           This will generate (rows x columns) output files. Each of these output files 
                           will have a suffix indicating its row and column. e.g file_name.row.col.gds 
                           (default: rows = 1, columns = 1).

-noclip                    Do not clip the data crossing the extraction window. (default: allow clipping)

-silent                    Supress messages written to stdout or stderr. default behavior is to write 
                           messages to stdout, stderr)

-regions:region            Each region consists of 4 pairs of coordinates (separated by commas) regions
                           are separted by the colon symbol. Use the region option where you want to extract
                           multiple regions to a single file.
                           -region:10,10,50,50:900,900,950,950:1100,1105,1200,1110
                         
                         
-complement                Extract the complement of the specified window/regions. Works with both the -window 
                           and -regions options. -tile and -tilesz options cannot be used with this option.
                         
-flatten                   Flatten (explode) the output data.


-ignorecell_names:list    Ignore the definition and all references to the specified cells while reading the 
                          input file. The list consists of cell names separated by a commma. Cell names 
                          are case sensitive.

-ignorecell_expr:("unix" | "dos"),expr1,expr2,...  

                          Ignore the definition and all references to the cells that match the specified 
                          regular expressionswhile reading the input file.

-notext                  Do not extract TEXT data.

-load2mem                Load the source file (GDSII or OASIS or DbLoad Cache) to memory 
                         for faster operations.(at the costof consuming more run-time memory.)



Example

Extracting a Window from demo8.gds

We wish to extract a small window from the design called demo8.gds. We want all of the layers and want to use the top level structure of demo8. The output and input file are both located in the working directory.

The output file will be called extract_hex.gds and its top level structure will be named TOP. This example was run on our linux box.

the command line (shown broken to fit on page)

$ $CAD/hextract/bin/hextract64 
         demo8.gds 
            extract_hex.gds 
               -top:TOP 
                  -layers:ALL 
                       -window:394.445,-2265.683,1854.705,-813.302

Once [enter] has been pressed the program prints to stdout (my console):

Hierarchy Extractor v1.03 rcs(1.35 2010/01/25)
Build 10.01.25.16.59 on Linux 2.6.9-5.ELsmp [x86_64] Architecture x86_64

(c) 2009 Artwork Conversion Software Inc.
417 Ingalls St. Santa Cruz CA 95060
Tel  : (831) 426-6163
Fax  : (831) 426-2824
Email: info@artwork.com
Web  : www.artwork.com

Command Line:

/home/cad/hextract/bin/hextract64
          demo8.gds 
             extract_hex.gds 
                -top:TOP 
                    -layers:ALL 
                         -window:394.445,-2265.683,1854.705,-813.302 


QisLib v2.67 (November 25, 2009)

Loading Extractor Engine ... done.
Initializing Extractor Engine ... done.

XtrakH v1.07 rcs(1.51 2009/11/19) Build 10.01.25.16.59 [64bit]

Opening input GDSII file demo8.gds

Scanning...   0%
Scanning... 100%
Scanning... 100%
Scanning in 0 min 0 sec
Loading...   0%
Loading...  57%
Loading... 100%
Loading in 0 min 1 sec

Extracting file extract_hex.gds (394.445, -2265.68, 1854.7, -813.302)

<End Of Operation> (1.735 sec)

Comparing the Size of the Flat vs Hierarchical Extraction

If we extract the same region by flattening the hierarchy and compare the size of the two files we see that:

-rw-r--r-- 1 stevedb 29061198 demo8.gds
-rw-r--r-- 1 stevedb  1392640 extract_hex.gds
-rw-r--r-- 1 stevedb  9222144 flat_extract.gds

The source file, demo8.gds, is 29MB in size, the hierarchical extraction is 1.39 MB in size and the flattened extraction is 9.2 MB in size. Scaling these ratios up to larger files shows the value of keeping the extraction hierarchical.


To see how much hierarchy was preserved I did a "dump" of the cell tree for the extract_hex.gds file:


TOP
  |_  G130S0F36
  |_- G130S69F35
      |_  G51S3F35
  |_- G130S101F35
      |_  G51S3F35
  |_- G130S105F35
      |_  G51S6F35
  |_- G130S29F35
      |_  G7S2F35
  |_  STDAND2$STS
  |_  STDINV$STS
  |_  STDNOR2$STS
  |_  SCLATCH$F36
  |_  SCINV$F36
  |_  G130S104F35
  |_- G130S95F35
      |_  G51S4F35
  |_- G130S146F35
      |_  G51S7F35
  |_- G130S108F35
      |_  G51S7F35
  |_- STDOA22$STS
      |_  G51S0STS
  |_  STDOR4$STS

  |_  G130S4F35
  |_  SCNOR2$F36
  |_- G130S103F35
      |_  G7S1F35
  |_  STDOR2$STS
  |_- TOPINDEXNOISE_INDEXDP1
      |_- G111S1F35
          |_  G193S1F35
      |_  G206S1F36
      |_  G139S0F36
      |_  G47S9F35
      |_- G203S2F36
          |_- G36S0F36
              |_  G143S0F36
      |_  G197S1F36
      |_  G165S2F36
      |_  G191S1F35
      |_- G203S3F36
          |_  G189S0F36
      |_  G202S0F36
      |_  G73S0F36
      |_  G74S2F35
      |_  G94S0F36
      |_- G111S2F35
          |_  G193S2F35
      |_  G47S2F35
      |_  G175S0F36

      |_  G165S0F36
      |_  G102S0F36
      |_- G216S5F36
          |_  G0S0F36
          |_  G182S1F36
          |_  G22S0F36
      |_- G216S0F36
          |_  G0S0F36
          |_  G80S0F36
          |_  G22S0F36
      |_- G216S9F36
          |_  G222S1F36
          |_  G177S1F36
          |_  G164S1F36
      |_- G216S6F36
          |_  G0S1F36
          |_  G223S0F36
          |_  G22S1F36
      |_- G216S11F36
          |_  G222S3F36
          |_  G177S3F36
          |_  G169S1F36
      |_  G74S1F35
      |_- G216S7F36
          |_  G0S0F36
          |_  G223S1F36
          |_  G22S0F36

      |_- G216S4F36
          |_  G0S0F36
          |_  G182S0F36
          |_  G22S0F36
      |_- G216S8F36
          |_  G222S0F36
          |_  G177S0F36
          |_  G164S0F36
      |_- G216S12F36
          |_  G222S4F36
          |_  G176S0F36
          |_  G169S2F36
      |_- G216S10F36
          |_  G222S2F36
          |_  G177S2F36
          |_  G169S0F36


More Examples ...



  Download   FAQ   Revision History   Price




ARTWORK CONVERSION SOFTWARE, INC.                  Company Profile
417 Ingalls St.,     Santa Cruz, CA 95060         Tel (831) 426-6163     Fax 426-2824               email: info@artwork.com