SFGEN Command Line Syntax

The SFGEN program can be run from the command line. This enables a user to create scripts to run multiple layers or to have custom settings for different layers.

Displaying the Syntax

To see the syntax and options type at a command prompt:

sfgen64.exe -h

Syntax Details

sfgen64.exe -job:<input_path> -workdir:<working_dir> [OPT_ARGUMENTS]


sfgen64.exe                   name and path to the executable

-job:input_path               for GDSII input:
                              a path/name of the GDSII file
                              for ODB++ input either:
                              a path to the top level of the ODB file hierarchy
                              a path/filename to a .tgz file
-workdir:<working_dir>        where temp files will be stored during conversion


-outdir:<out_dir>             for ODB++ input
                              an output directory
                              for GDSII input
                              an output directory/file

-log:<logpath>                path and name of the log file

-thrnum:<num_threads>         max number of concurrent threads

-arcres:<res_dbl_value>       arc resolution in degrees

-arcsag:<sag_dbl_value>       arc sag (in um)

-usergrid:<val>               Set the usergrid default? why change?

-maxpts:<val>                 Maximum polygon vertex count

-jitter:<val>                 Specify jitter in classifying structures jitter definition?

-cutline                      if specified gdsii islands are formed as cut lines
                              if omitted, butting polygons are used
-nosropt                      Disable Step-Repeat optimization Why and what is this operation

-silent                       Disable pop-ups (even on error)

-keep                         Keep temporary files; Default is to erase
                              temp files when program completes.


-gds_layer:<layer_int_value> output GDSII file layer

-gds_struct:<struct_name>    output GDSII top structure name

For GDSII Input Only

-struct:<cellname>           input file structure to process
-layers:<+0+1+2>             list of layers to convert (datatype selection yes)
-lcd                         if present, turns on LCD algorithms
-gdscmponly                  Use GdsComp flow only
-fullunion                   Do full union

-preservetree                Preserve GDSII tree (GdsComp flow only)
-ignorecells:<fname>         Ignore cells listed in the specified file
-no_ignore_children          Ignore specified cells only, not their children 
                             (used with -ignorecells and -preservetree) Needs explanation ...
-prescale:<val>              Convex prescale  Needs explanation ...
-spanlength:<span length>    size of aggregation cell in um(see reference)
-structvertcnt:<max count>   max number of vertices in aggregated cell (see reference)
-minlen:<val>                Set minimum structure dimension (length)
-arcrecovery:<val,val>       Recover arcs [input chorderr,output chorderr]
-convex                      Std convex partitioning
-straddle                    Straddle arc recovery
-quad[:<d|x,y>]              Quad convex partitioning [quad length] Needs explanation ...
-quad_array:<val,val>        Specify quad array length and cell size
-quad_algo:<1|2|1,2>         Quad algorithm used
-quad_direction:<x|y>        Quad preferred direction (use instead of -quad_algo)
-xrunlength                  Run length in X direction
-quad_area:<val>             Quad area criteria
-quad_angle:<val,val>        Quad angle error limits (soft,hard)
-quad_aratio:<val,val>       Quad aspect ratio error limits (soft,hard)
-quad_weight:<w,w,w,w>       Quad criteria weights (quad count,angle,aspectratio,area)
-quad_error                  Output Quad error data
-fanout_tile_size:<val>      Fan Out tile size (must be greater than 0.0)
-fanout_array                Fan Out array used with -fanout_tile_size
-allowed_db                  Allowed DBU error
-equivstructs                Prune equivalent structures what are equivalent structures?
-extendedcomparison          Extended comparison used with -equivstructs Needs explanation ...
-sliver                      Equivalent structures tolerance
-lcdarg:<polyhier arguments> Special arguments for LCD mode

For ODB++ Input Only
-dbg[:<log_fname>]           enable debugging and set log file name
-step:<step[,l1,l2,...]>     specify the step and layer(s) to convert
-keep_tmpfiles               if selected temp files are not erased upon completion
-exclude:<stepnames>         set steps to be excluded  (?????????)
-excludel:<layernames>       set layers to be excluded (??????????)
-show_progress               enables the progress dialog (may slow program down)
-nhargs <args>               Pass args to new hierarchy
-pnhargs <args>              Pass args to postnh
-engargs:<args>              special arguments for odb2gdx (rarely used)

Transformation Arguments

-dpi:<dpi_value>                      DPI setting used for subdividing data
-buffer:<buffer_value>                raster buffer (again used for subdividing data)
-rotate:<rot_val[,xanchor,yanchor]>   rotation with anchor point (um)
-mirror:x[,xanchor,yanchor]           x mirror with anchor point (um)
-mirror:y[.xanchor,yanchor]           y mirror with anchor point (um)
-scale:<x_val,yval[xanchor,yanchor]>  scale factor (x,y independent)
-shift:<x_val,y_val>                  move command (um)
-offset:<type,x_val,y_val>            edge bias (see reference) (um)
-fivept                           Set five point sizing
-manh                             Set manhattan sizing

Annotation Options
-annotate:<annotation_file>       turns on annotation and defines file to read
-annoarg:<annotation arguments>   special arguments for annotation engine

Correction Options
-correction:<correction_file>     turns on correction and defines file to read
-corrarg:<corection_arguments>    special arguments for correction engine
-tolerance:<correction_tolerance> tolerance for correction (in um)

Example 1

Assume we have an ODB++ file called input.tgz and we want to create 4 GDSII files using the ODB++ layers: l1, l2p, l3p and l4. The ODB++ step to process is called panel. Our DPI is 5080. No correction or annotation. The command line could look like this: (I've put in returns to make it fit on the page ...)

c:\wcad\sfgen64\sfgen64.exe -job:"E:\cad_files\input.tgz"
   -step:panel,l1 -outdir:"E:\cad_files\l1"
     -gds_layer:1 -gds_struct:TOP
        -thrnum:4 -arcres:45 -arcscag:2 -dpi:5080 -buffer:2048
c:\wcad\sfgen64\sfgen64.exe -job:"E:\cad_files\input.tgz"
   -step:panel,l2p -outdir:"E:\cad_files\l2p"
     -gds_layer:1 -gds_struct:TOP
        -thrnum:4 -arcres:45 -arcscag:2 -dpi:5080 -buffer:2048 

c:\wcad\sfgen64\sfgen64.exe -job:"E:\cad_files\input.tgz"
    -step:panel,l3p -outdir:"E:\cad_files\l3p"
      -gds_layer:1 -gds_struct:TOP
         -thrnum:4 -arcres:45 -arcscag:2 -dpi:5080 -buffer:2048 	

c:\wcad\sfgen64\sfgen64.exe -job:"E:\cad_files\input.tgz"
   -step:panel,l4 -outdir:"E:\cad_files\l4"
    -gds_layer:1 -gds_struct:TOP
        -thrnum:4 -arcres:45 -arcscag:2 -dpi:5080 -buffer:2048  

Each GDSII file would be in its own directory with data on GDSII layer 1 and a top structure named TOP.

Example 2 - Running SFGEN command line with Transformation

Assume we have a GDSII file called D001406_B_PRDL1_29_MP1433.003.gds and we want to run it from the command line with some transformation but no corrections on layer 29:20.
In this example, we are converting the input file an applying a transformation - Mirror along X. No correction is used with this example. We use the -keep option to keep the log file and some other work related files. What we just did is creating a master GDSII file with the transformation you are interested in. You can next run all your corrections on this file with out wasting time running sfgen64.exe again.

C:\wcad\SFGEN64\sfgen64.exe -job:%CD%\D001406_B_PRDL1_29_MP1433.003.gds 
 -outdir:%CD%\out\first.gds -workdir:%CD%\work -log:%CD%\out\first.log
  -struct:TOP -layers:+29:20  
   -thrnum:4 -arcres:3 -arcsag:0.2 
    -jitter:1 -dpi:25400 -buffer:1024 
     -rotate:0,0,0 -mirror:x,0,0 -scale:1,1,0,0 
      -shift:0,0 -keep

Example 3 - Running the Correction Engine by itself

After running the input file through the transformation process using sfgen64.exe, we can now perform corrections on the file we mirrored in the previous step. The correction process is much faster than the first step. You should use this approach if you need to perform multiple corrections on the transformed file.

c:\wcad\SFGEN64\sffcorrection64.exe %CD%\out\first.gds  

Example 4 - Running SFGEN64 with Transformation and Correction in One Command

You can also run the sfgen64.exe with both transformation and correction in one command. Use this approach if you only need to do one type of correction.

C:\wcad\SFGEN64\sfgen64.exe -job:%CD%\D001406_B_PRDL1_29_MP1433.003.gds 
 -outdir:%CD%\out\correction.GDS -workdir:%CD%\work  -log:%CD%\out\correction.log
  -struct:TOP -layers:+29:20  
   -thrnum:4 -arcres:3 -arcsag:0.2
   -jitter:1 -dpi:25400 -buffer:1024
    -rotate:0,0,0 -mirror:x,0,0 -scale:1,1,0,0 -shift:0,0 
      -correction:%CD%\cor.txt -tolerance:2 

Back to Manual