SFGEN Web page header


SFGEN64 Revision History

This page summarizes changes, fixes and enhancements to the SFGEN64 program.


V3.13c Windows and Linux 8/08/2022

GDSCompact Fix

This version fixes an issue when arc recovery is turned on and the input set contained circular-like holes that just grazed the outer edge of a polygon. After arc recovery the edges of these holes could jump outside the bounds of the original polygon resulting in an illegal self-intersecting polygon. Further processing of this data downstream in the gdscompact flow caused this data to be dropped from the output.
This issue was handled by checking if arc-recovered figures intersected with the container of the leonov representation of this figure. If they did, these were removed from the leonov polygon and then subtracted from the modified polygon.




V3.13b Windows and 3.13a Linux 6/08/2022

Union Engine Fix

This version fixes an issue in the initial unionization of data to be processed in a cell definition. The problematic file was a gridded design where data was dropped as a result of problems in this initial unionization.

TTF Library Update

This version fixes several issues in the TTF library that is embedded in the annotation engine.




V3.13 Windows and Linux 5/13/2022

New Features in the Annotation Engine

SFGEN now supports a new annotation model that supports SHX and TTF fonts for TEXT annotations as well as support for bitmap insertions.

Updated ODB++ reader and Misc updates

Several issues which were fixed in our ODB2GBR, are now part of SFGEN. You can read more about each one in the ODB2GBR Revision History page.

  • Fixed parsing of DATUM and ORIGIN records in stephdr files.
  • Boolean library fix that addresses a dropped polygon.
  • Fixed symbol interaction, support for custom symbols as draws, fix related to short non-manhattan line draws with other than standard round tool.
  • Fix for memory allocation error associated with barcode text, correction for macro gap value of type Round Thermal Rounded.



  • V3.12b Windows and Linux 2/20/2022

    Enhancement to Quad extent checker

    All quads are passed through a quad extent checker before being output. Consider the case when the quad length (in user units, nominally in um) divided by the user grid (nominally 0.01 or 0.001) is squared as is done when computing the cross product and is performed in the quad extent checker it is possible that this results in a number greater than 2^31 resulting in an integer overflow. Presented with this result the quad checker would subdivide a legal sized quad into smaller pieces and in turn resulting in an excessive number of quads. The rational for using integer arithmetic was to make use of the best precision in the determination of quad conformance. The fix was to simply to make use of 64 bit integers for these operations. This bug only showed up now because of the use of a larger quad length in conjunction with a user grid of 0.001.




    V3.12a Windows and Linux 1/20/2022

    ODB++ Mode Optimization and Speedup

    This release includes enhancements/speedups for the support of ODB file in the standard product. Additionally it includes an ODB scanning facility.

    ODB++ Scanner Issue

    This version fixes a bug in the odb_scanner binary when opening files with more than one "." in the filename, e.g. odb.r1.tgz would have had a problem where odb_r2.tgz would not. This has been fixed.




    V3.10 Windows 11/5/2021

    LCD Mode Optimization

    Added optimizations to LCD mode in the determination of synthesized cell dependencies and equivalence. In a baseline case of moderate complexity this reduced the throughput time from 13 hours to 3 minutes.




    V3.09 Linux 08/19/2021

    New Command Argument: -ignorecells:

    For control of the Equivstructs computations SFGEN added the command line option -ignorecells:<filename> where filename holds a list of regular expressions of cell names to be passed preserved.

    Bug Fix in Gdscompact Routine

    Fixed a bug in the Gdscompact engine where an optimization associated with synthesized fanout structures having very small rotation angles generated were output 180 degrees opposite of the correct value.

    Bug Fix: Rounding of Pregrid

    Fixed a bug associated with rounding for non-unity pregrid.




    V3.07 Windows 10/8/2020

    Software Updates

    Updated gscan to return an exit code if it fails to read a GDSII file.

    Fixed the issue where the copied input file disappears from the work folder. This is caused by an input file and output file having the same base file name. Since everything is processed in the work folder, having the same input and output name creates a conflict resulting in the input being removed. This is solved by modifying the input file name when copied into the working directory.

    Added logging during the initial scan. The software will now report the scan error in the log file.

    Added an optional argument "+log:[log file]" that will append to the specified log file if it already exists. We also added a check box in the GUI's advanced dialog to allow appending to the log file. The log file name is defined after every open and is based on the input file or a generic name if append is checked (sfgen_pid.log).




    V3.04 Windows 9/14/2020

    Software Updates

    This version fixes an issue in GDSCOMPACT where fan outs were not arrayed even though -fanout_array is specified on the command line. This bug was introduced with the introduction of overlaps between SREFs that could be constructed as AREFs at 0 and 90 degrees to minimize/remove gaps between members of AREFs as the result of numerical noise. It was reported that this issue was fixed in v3.01 when in fact it was not. This confusion, in fact, was the result of not understanding the customer complaint. It is now fixed.

    In v3.02 the command line option "-intersection_threshold:N" was introduced where the default value of N if this command line option was not specified is 10000. Now setting N to 0 defeats this new option. This might be desirable for backward compatibility or simply to turn this mode off as it has a computational cost often paid for in improved overall throughput. In the GUI, the user may set this value to 0 or leave the corresponding text field in the Settings dialog empty.

    In the standard product under Windows it is now possible to specify remote filesystems for input and output files, e.g.
    \\WIN83\benchmark\sfgen\input\gds\c25x20.gds is a candidate input file. The working folder must reside on the platform where execution takes place.

    Improved throughput due to improved thread sharing / load balancing in secondary processes (postnh).

    Improved throughput for negative sizing as a result of flow changes in boolean library.

    Improved partitioning for union operations including when sizing/compensation was active.

    Added timing summary for the steps performed in each of the output modes (standard mode, LCD, GDSCOMPACT) at the end of the log file.

    Added new product ID (429) for GDSCOMPACT licensing. The keys that have been used for Quad output will also enable GDSCOMPACT.

    The Transformation Tab in Advanced Settings for GDSCOMPACT mode has been removed. Settings associated with this tab are not supported for GDSCOMPACT executed from the command line.

    Removed the thread number restriction in the GUI. It is now possible to specify more than 16 threads.




    V3.02 Windows 8/27/2020

    Speed Improvements and Other Updates

    This version features more speed improvement by optimizations particularly in the context of large mesh designs. In addition, an improvement was made in the computation of hierarchical reductions when the extents of a child structure defines the extent of its parent. This version also makes better use of multi-threading in the nonLCD and nonGDSCompact modes for GDSII input..

    This version also makes better use of multi-threading in the nonLCD and nonGDSCompact modes for GDSII input.

    This version is compiled with VS2015.

    Added a control in the GUI and command line for vertex threshold and tiling associated with structures where the vertex count is low but the interactions (intersection of polygons edges) is high. The command line optional arguments are:

    -intersection_threshold:intval
    and
    -vertex_threshold:intval




    V3.00 Windows 8/12/2020

    Major Speed Improvements

    This version includes major speed improvements in the NewHierarchy engine (no improvements in LCD or GDSCompact modes). The improvements were made for GDS input files and for nonLCD and nonGDSCompact modes. These included optimizations particularly in the context of large mesh designs. In addition, an improvement was made in the computation of hierarchical reductions when the extents of a child structure defines the extent of its parent.
    This version also makes better use of multi-threading in the nonLCD and nonGDSCompact modes for GDSII input.




    V2.73 Windows 3/12/2020

    Software Updates

    This version represents the first release of new code base for those flows where gdscompact is used. This version provides more parallelism.

    A fidelity issue related to a boolean functions when butting output is used as part of normal program flow was addressed. The problem was discovered in a polar arrayed version of database that is used in regression testing of fanout structures. It manifested itself in the areas when fan-like lines were "shorted" by nearly perpendicular bars which should have resulted in holes but in fact were filled in. This was fixed in the boolean library used by gdscompact64. Additionally, code was added in gdscompact to detect and flag when bad output was created. This condition is output as a warning if corrected in the log file and as an error if not corrected. (Quad Output Only)

    An optimization yielded > 5x speedups for "gridded" structures when fanout is turned on. This is achieved by partitioning of polygons sets with high aspect ratios, relatively low vertex counts (< 2M) and high edge intersection counts. In the case of an LCD input file, throughput was reduced from 34 minutes to 5.

    Preferred direction output is now more consistent/correct - this is a necessary requirement to be able to deliver quad output which different max quad dimensions in x and y. Some output quads were incorrectly output at 90 degrees to the preferred direction because of an issue related to polygon aspect ratio. This was fixed. (Quad Output Only)

    A memory leak at the application level was fixed. (Quad Output Only - gdscompact and fanouts)

    Some changes were made to the Quad Dialog in the UI to distinguish between hard and soft limits more easily. (Quad Output Only)

    The computation of dominant direction was improved in that non-orthogonal edge groups whose angles were opposite in sign (or nearly opposite in sign) would be disallowed from becoming the dominant angle. (Quad Output Only)

    RectArray and FanOut Optimization including cross cut minimization were implemented per customer specification. (Quad Output Only)




    V2.70 Windows 2/12/2020

    Quad preferred direction

    Updated the GUI to support Quad preferred direction and allowed DBU error. You can also specify these options as command line arguments using "-quad_direction:x|y" and "-allowed_db:intval" respectively.

    Updated ODB++ Modules

    Updated ODB++ related modules to automatically break step and repeat of child steps that overlap with scratch data.
    Optimized use of boolean functions in the ODB++ feature file interpreter.

    Speed Improvement

    This version has a new version of sffcorrections that contains a memory allocation optimization that becomes important for any input GDS file where the number of textual structure references for any cell definition is large ( > 1M). For files that are output from SFGEN which by design creates semi-flat GDS file, the number of cell references could be in the millions depending on the nature of input file and user parameters.
    In a use case consistent with this scenario, a reduction in the execution of sffcorrections was seen to be reduced from 20 minutes to 40 seconds - the larger the number of cell references, the more the improvement in throughput can be expected.
    This problem was manifest more on WIndows platforms are opposed to LINUX.

    sffcorrection64.exe improved log

    This version includes a new sffcorrection64.exe with better log report.



    V2.69 Windows 1/15/2020

    Unit Display Update

    Updated the GUI to reflect the input's unit (UM if input is ODB) when specifying optional arguments such as chord error, offset etc.



    V2.68 Windows 1/6/2020

    Correction Issue

    This version fixed an issue where correction is not applied to the output when the correction is just a shift along the X-axis..



    V2.65a Windows 11/7/2019

    New Polyhierarchy

    Updated Polyhierarchy module - The new module fixed a problem in the quad-tree code where window queries were failing because of an integer overflow during the quad tree construction for designs with very large extents.



    V2.65 Windows 4/5/2019

    Correction Engine

    Updated sffcorrection engine to support distortion and non rectangular domain correction.
    This version also includes the latest boolean and other modules to fix a problem where data was being dropped during the conversion.



    V2.63 Windows 4/5/2019

    Software Optimizations

    This version includes more optimizations which will result in speed ups when creating large output files. This version also includes a fix to database traversal for large datasets ( > 2GB indexing of database - which is a compressed version of the original).
    SFGEN now handles large input file sets as well as file sets that create large intermediate and final output files.



    V2.62 Windows 4/2/2019

    Software Updates and Speed Improvements

    Fixed a bug in the GDSII exploder database which caused application crashes when the span of any structure definition exceeded 2 GB was addressed. Required recompilation of all engines that made use of this (gdsmachine) exploder library.

    Added optimizations in sffcorrections and postnh when traversing hierarchy and polygons data is not of consequence. Speed ups of 30x were observed in these modules.



    V2.61 Windows 3/22/2019

    Update to Correction engine

    Fixed the issue where a GDSII output does not show distortion when ran with corrections. Corrections now supports arbitrary quadrilaterals as oppose to semi-rectangular.



    V2.60 Windows 3/9/2019

    New Windows and Linux



    V2.48 Windows 1/12/2018

    Software Updates

    Fixed floating license issue when there is only one license available.
    Fixed issue when output folder is in a different disk than the working folder.
    Updated modules and boolean.
    Modified quad options in GUI, and added a second parameter to optional argument "-quad_array".
    Added a new product number (430) that enables quad. The old SFGEN (GDS) license (428) will no longer work with quad.
    This release does not check for or install FLEXID key drivers.



    V2.43 (Windows/Linux) 9/15/2017

    Software Updates

    Fixed Advanced Dialog menu since it appeared squeezed in some Linux platforms.
    This version is able to catch crashes of intermediate engines and pops up a failure message. Updated the log file with clearer failure message.
    Added sample code in the Windows release with a lib and header file.
    Removed all the 32bit engines in the Linux release.
    Fixed a bug related to span length where data was dropped.
    Fixed a bug exposed with the introduction of "-minlen" in SFGEN v2.42 Windows. There were small negative structures that were handled incorrectly.



    V2.42 (Windows) 7/25/2017

    Software Updates

    This version fixed correction issue where it fails when the coordinates are delimited by spaces instead of commas.

    Modified the optional argument "-minlen:num" to specify the minimum dimension of a structure. The default value is 100um. This fixes the flat output issue where the structures are very small..



    V2.41 (Linux/Windows) 6/15/2017

    Sizing Update

    This version removed the restriction when using Manhattan sizing.



    V2.40 (Linux/Windows) 6/15/2017

    Sizing Update

    This version includes new -manh and -fivept options for sizing. The feature was added in both commmand line mode and in the GUI.



    V2.38 (Linux/Windows) 5/30/2017

    Software Fix

    This version fixes the issue where large amounts of data was lost.
    This was the result of the presence of "non-conventional" AREFs where the role of the non-achor lattice points was switched.



    V2.37 (Linux/Windows) 5/26/2017

    Software Enhancements

    This version includes optimization for counting structure instantiations.
    This version supports GDS files containing structure names up to 1024 characters in length.



    V2.36 (Linux/Windows) 5/18/2017

    Software Enhancements

    This version fixes Edge Placement Errors.
    Ignore Cell/Pass Through Mode is disabled when not Preserving Hierarchy.
    QISBOOL can now perform multi-threaded sizing.



    V2.29 (Linux/Windows) 12/06/2016

    GUI - Enhancement

    Updated the main window to resize step or layer list sections of the dialog.

    Bug Fix - Crash due to License Fail

    Fixed a bug that caused a program crash when licensing fails. This was the result of a buffer overflow.

    Command Line Syntax Check

    Invalid command line arguments are now reported

    Error Status Fixed

    A state problem when reporting errors was fixed. Previously, a successful run might be flagged as having had an error in the presence of a previous error.



    V2.28 (Linux/Windows) 11/18/2016

    Arc Detection/Rebuilding in GDSCompact Mode

    Added new functionality and a command line argument to implement it. Arc like boundaries can be detected and then can be rebuilt (primarily to use less vertices) in the output GDSII file. This can reduce the number of quads and slivers produced in the output.

    The argument to trigger this routine is:

    -arcrecover:<val,val>

    where the first value is the chord error tolerance used to detect arcs and the second value (normally larger than the first value) is to rebuild them.

    The GUI has been updated to include this new control.

    Quad Size Limits

    Maximum quad size for GDSCompact flow can now have different values for X and Y.


    Orphan cells in output deleted

    The compaction routines in GDSCompact flow would replace original cells in the hierarchy with more efficient merged ones. However previous versions were leaving the original cell definitions in the file even through they were no longer referenced. Those cell definitions are now deleted if not referenced.

    V2.27 (Linux) 11/03/2016

    Clipping of Quadrilaterals to User Set Max

    In the GDSCompact flow, the maximum length/width of a quadrilateral can be set by the user - any quads that would be larger than this value (either in X or in Y) are broken into smaller quads that do not exceed the max.

    Preserve Hierarchy Tree (GDSCompact)

    A new check box, Preserve Tree (command line argument -nhmode3) has been added to the Settings Dialog under the GDSCompact flow. The hierarchy of the input file is preserved; polygons within each structure definition are unionized and can be (optionally) convexed and output as quadrilaterals.

    If this check box is not selected, GDSCompact may modify the file hierarchy such that arrays and structure trees may be restructured according to the rules dictated by "Span Length" and "Vertex Count." (-nhmode2 on the command line).

    Bug Fix in Quadrilateral Output

    A bug was fixed in the GDSCompact mode which resulted in "quadrilaterals" with more than 4 sides.

    Bug Fix in Convex Output

    A bug was fixed in the GDSCompact flow in which convex data was misplaced outside the source polygon as a result of an optimization.

    Selection of Input File Structure

    The main dialog box now allows a user to select any input file structure (STEP from the ODB++ terminology) by use of a directory style navigator. Prior to this the GUI only allowed users to select from top level structures. The command line syntax which specified the structure name directly did not have this limitation.

    If the top structure is not selected and GDSCompact mode has preserve Tree checked, then GDSFILT is used to extract the data at the front end. (This is pretty much invisible to the user and does not require any new licensing.)






    V2.26 10/25/2016

    New Data Flow - GDSCompact

    A new data flow for LCDs has been implemented labeled GDSCompact. It does not produce a semi-flat file. It unionizes data on a cell by cell basis and can also convert the resulting boundaries into quads (the breaking of large quads that exceed the user specified maximum size has not been implemented in 2.26.

    The command line arguments needed to use the GDSCompact flow are:

    -gdscmponly      turns on GDSCOMPACT flow
    
    -convex           output polygons are to be fully convex
    
    -quad[:quadlen]   output quadrilateral only optionally with maximum dimension quadlen (in um)
    

    Annotation and Distortion correction are not available with the GDSCompact Flow.

    The Advanced Dialog Box has been rebuilt to accommodate the new GDSCompact flow:

    advanced dialog

    it does not yet support a check box for deactivation of hierarchical compaction so that must be entered manually.

    Batch File

    a .bat file is created in the working directory as an aid for scripting *if* the "Keep Temp" check box is set in the Advanced Settings Dialog. This is a useful aid for those who wish to run SFGEN from a batch or script file.

    Hierarchical Compaction De-Activation

    Hierarchical compaction can be deactivated (it is on by default) by passing "gdscomp -nhmode3" into the LCD Args text field in the Advanced Settings Dialog as shown above. In this case the hierarchy in the output is identical to that of the input, but all "flat" data in the structure definitions are unionized. If convex or quadrilateral output is requested (Convex and/or Quad check boxes are set) then this "flattened" polygon stream is handled accordingly. In the next revision of the GUI a suitable control for "-nhmode3" will be implemented.

    GDSCompact License Requirement

    GDSCOMPACT can be invoked directly from the command line without the SFGEN front end but will require a license for the GDSCOMPACT product ID 2699; in the normal flow GDSCOMPACT is invoked with Artwork's internal softkey licensing by SFGEN.






    V2.24 09/20/2016

    Progress Dialog

    Modified progress dialog to better reflect progress. Does not reset for each additional layer processed. Now starts during opening of the file.

    -silent fix

    Fixed "-silent" option which is used to prevent messaging dialogs from popping open. Prior to this version this argument was not being recognized on the command line.

    Relative Path Fix

    When run from a batch/script relative paths were not correctly supported. This has been fixed.

    Additional Log Information

    Modified the log file to include more information about ODB conversion.

    View Output - Fixed

    Fixed view output function. Previously there was an issue in calling the GDSII viewer. Note that if multiple ODB layers were selected for processing, each ODB layer produces its own GDSII file, and only the file generated by the first layer is passed to the viewer.






    V2.23 08/19/2016

    GUI Interface Change

    The user interface which was previously MFC based, is now Qt based.

    Port to Linux

    SFGEN has been ported to Linux (RHEL5 and later).






    V2.22 07/15/2016

    Software Updates

    Fixed the speed issue for a client where structures that are similar have too many different instances. This can be controlled by specifying a jitter (1 is default) in the GUI or command line with the optional argument -jitter:value

    Fixed bug issue where a scratch data is missing.

    Added an option to disable step-repeat optimization in the GUI and command line with the optional argument "-nosropt". This should be used if child steps overlap each other.






    V2.21 06/29/2016

    Software Updates

    Fixed bug issue where no data is output if the GDSII input datatype is non-zero.





    V2.20 06/24/2016

    Software Updates

    Fixed bug issue where data is dropped. This is caused by layer polarity bug.
    Added the step and layer information when specifying the output file name (for ODB++ input only).





    V2.19 06/21/2016

    Bad Syntax ODB++ File

    Updated SFGEN to handle ODB++ input files with bad syntax. Customer file contained an empty line with attribute 0 which caused the program to crash.





    V2.18 06/15/2016

    Sized Polygon Fix

    Fixed an error that occurred when a sized down polygon with scratch becomes completely filled (reference: ATP-13-Single-Cell.GDS). This was caused by a bug when the data is rotated; some vertices overlapped which resulted in the program filling the polygon when sized.


    Misaligned Data Fix

    Fixed a bug where a section of data was output mis-aligned. This was caused by a bug in choosing the structures when there is a rotation.


    Fixed Failure to Convert

    Previous versions could not convert customer file. The cause was an illegally named symbol - the name string had a colon ":" in it which is a forbidden character. This has been addressed by detecting and dropping symbols with the colon and continuing to convert the balance of the data. WARNING - dropping such symbols may result in output not matched to the input data. It is not clear why a file with this type of symbol name would be generated - likely an error by the software that produced the ODB++ file.


    Dropped Pads Fixed

    Fixed a bug where pads are dropped. This was caused by a bug that occurred when handling insertion of more than 8190 pads of the same symbol. This is fixed by organizing the insertion array into groups when the insertion count exceeds 8190.


    Speed Enhancements

    Conversion time to GDSII when correction is applied is reduced. reference: Sample_PXL.gds.






    V2.17 03/01/2016

    Product License ID Updated

    Updated Product ID: 427 (ODB++ input), 428 (GDSII input)

    Bug Fix

    Fixed duplicate polygons issue of adjacent cells.






    V2.16 11/11/2015

    Product Fixes

    Speed improvements.
    New licensing.






    V2.15 10/11/2015

    Product Fixes

    Speed improvements.
    New key routine.






    V2.14 9/21/2015

    Product Fixes

    Fixed polarity issues.
    Improved frame arc resolution.
    Fixed logging issues.







    V2.13 6/30/2015

    Product Fixes

    Fixed rotated/mirrored child step issue.
    Fixed long path fonts issue.
    Updated boolean module.






    V2.12 6/16/2015

    Product Fixes

    The latest SFGEN will fixed odbfnt2shx module to handle wide characters.
    It also includes an updated sffcorrection and acsbool.






    V2.11 3/20/2015

    New Product Number

    The latest SFGEN will require new key codes corresponding to product IDs 527 for ODB and 528 for GDS (LCD).

    Speed Improvements

    Speed up in new hierarchy calculation.






    V2.10 1/29/2015

    Program fix

    Program crash on a customer file. The problem was related to the presence of a circular sliver in a surface. This has been corrected.






    V2.09 12/4/2014

    Speed Improvements

    Improved speed and addresses LGE's throughput issues






    V2.08 11/14/2014

    Updates

  • Much improved speed.
  • Fixed bugs in serialization.
  • Fixed dropping data issue (Advantools Tianjin).





  • V2.07 07/29/2014

    Precision Issue fix

    Precision issue in the hole detection within a surface caused the program to create the wrong output.






    V2.05 04/29/2014

    New feature and bug fix

    Random sizing for offset both or xyboth is implemented.

    Fixed rip library that causes a crash when ripping very narrow data.






    V2.04 04/7/2014

    Speed Improvement

    Speedup in creation and comparison of instances have been implemented.






    V2.03 03/17/2014

    Crash during conversion

    Fixed a bug that causes some files with a large number of vertex count to crash during translation.






    V2.02 03/14/2014

    Crash during conversion

    There are no more crashes during translation of customer file.






    V1.06 06/25/2013

    Modified Text Merge

    Enhancements to Text Merge

    Update Correction Algorithms

    Updated the correction algorithms to sync up with the ones implemented in RTCR.






    V1.05a 06/15/2013

    Text Merge Added

    Added support for text merge. (The strings and placements are defined in SFGEN but the actual text is not rendered until the file is processed by the RTCR.

    Fixed Scale and Rotation Resolution

    Fixed a bug in the input argument parser that did not allow for very fine adjustment of scale factor and rotation angle.






    V1.04 05/21/2013

    Initial Release

    This is the initial release of SFGEN64. The annotation (text merge) function is not implemented.