This page summarizes changes, fixes and enhancements to the SFGEN64 program.
Fixed an issue with SFGEN which failed to open ODB++ file when all of the attrlist files found in an ODB++ tree were empty.
Added multithreading to odb2gdx64.exe which is the ODB++ feature file interpreter. The feature is ON by default but can also be controlled
with the "-thread_surf:[0:1]" argument (1 is on and 0 is off).
For example: "-engargs -thread_surf:0 -endarg" placed in the "Convert Args" of the "Advanced Settings" dialog box of SFGEN will deactivate this multithreading.
The "Thread Num" setting in this same dialog controls the number of threads used.
This button becomes active when an ODB++ file is opened and changes to a "View Log" button after conversion.
If selected it displays "ODB Tree" output in an editor showing information containing: top step, step, layer, and tree graphs.
The "About" button was added to main dialog and "About QT" button to "About" dialog. The "About QT" launches a "Qt License Information" dialog box.
Updated modulesUpdated split274x and boolean component modules.
The new version includes speed ups, bug fixes, and improved fidelity for ODB++ input and path recovery.
An ODB++ file, with a repeated element that had 1000 paint and scratch changes, failed to convert. This issue has been fixed.
In the presence of coinciding pads the path recovery engine would sometimes output the metal footprint of a smaller pad. This behavior was fixed.
Mew hierarchy engine fixAn algorithm in the new hierarchy engine responsible for balancing compute resources across structures of disparate complexities that has been in place for several years had a bug and resulted in a crash was fixed.
By default redundant pads are removed when pads are output with the pad that encloses all others as the one to survive. This new behavior can be defeated with the -redundant_pads command line option passed to the path recovery engine.
Mew hierarchy engine fixA bug in the new hierarchy engine that resulted in a crash was fixed. This bug manifested itself when handling an highly sparse repeating cell of large extent.
This version fixes an issue in the NewHierarchy engine (which is responsible for creating semi-flat output) when it was submitted poorly constructed data from the ODB++ front end. This resulted in silent significant data loss. The boolean library was changed to better report when detectable data loss has occurred. This information is now available upstream to the calling application which in this case is recorded in the log file and in the GUI as a pop up.
Additionally the ODB++ front end is now called with parameters that are better suited for passing data downstream avoiding in this case the creation of degenerate data for plane data with holes. The SFGEN GUI was changed to reflect these changes and three controls that appear in the ODB2GBR GUI now appear in SFGEN.
This version fixes an issue in the boolean library that for certain values of arcres and chord error manifested itself as dropping "doughnut" shaped pads. The cause of the problem was the result of data extents of the original geometry (doughnut) differing from the extents of the geometry (slightly larger) after arc recovery and then submitting it window breaking to generate butting output. This inconsistency resulted in dropping the output from the arc recovery. This was addressed by making sure that the extents in the data structure associated with geometries coming out of arc recovery were correct.
Fixed a bug discovered while tracking the aforementioned issue which was introduced in v3.18d where a filter was added to remove polygons in the input stream in the form of a triangle having extents of 1 DBU. There was no problem in the filter itself but at one of the two points at which it was applied in the data flow.
This version fixes an issue where data was dropped when the input data stream was
very poorly conditioned. This problem manifest itself in conjunction
with certain cases of the use of the -findbusy command line argument to
the GDSCOMPACT engine. The core problem was that the findbusy flow takes
an intermediate result of unionization (represented as Leonov data) and
then performs difference and intersection operations in the regions
where arc-like contours are found. The ill conditioned input stream
generated Leonov data which was illegal with which boolean operations
will often result in bad and undefined behaviors.
An attempt to remedy this issue with injecting a repair flow before the
above mentioned difference and intersection operations was successfully
performed. However, this repair flow was abandoned because it was
thought that it might perturb output and lengthen throughput when
intervention was not necessary.
It was observed that the illegal intermediate Leonov data was
problematic only when it was partitioned. Because the data at this stage
are relatively simple, code was changed to avoid partitioning and hence
the bad behavior. The repair flows can be added in the future if
required - they are part of the GDSCOMPACT code set but not currently
active.
The correction engine (sffcorrections) now better supports diamond shaped domains. Diamond shaped domains as provided by the user are internally converted to 4 rectangular domains which are passed to the correction engine in place of the non-Manhattan domains. The previous scheme mapped each diamond shaped domain to a single new Manhattan domain without checking the difference between the predicted new correction values and the correction values at the original points that defined the non-Manhattan domain. The new scheme makes two iterative passes to develop quad Manhattan domains to minimize this difference.
The correction engine (sffcorrections) now correctly supports diamond
shaped domains. Diamond shaped domains are internally converted to 4
rectangular domains which are in turn passed to the correction engine.
The previous scheme to support diamond shaped domains apparently really
did not work at all.
This version fixes crash in the gdscompact engine when encountering a polygon in the form of a triangle having extents of 1 DBU. In the event such a polygon is encountered it is dropped and a message (as a warning) to that effect is issued.
This new Windows version has all the updates done on the SFGEN Linux 3.18 version.
This version has a few improvements over the previous version.
This version has an improved threading/partitioning model to process repeating cells that contain paint and scratch layers (ODB++ input). Where before a particular file took 2 hours to process, it now completes in 4 minutes. In general, this change is faster than the previous version/model but in some cases it can be marginally slower, usually for simple cases. The SFGEN/ODB++ benchmark which has run in 6 hours is now 7 minutes faster. In view of this, the problematic customer file clearly presented a different class of data than seen before.
The ODB font compiler is no longer sensitive to non-conforming ODB font file in the following manner. Previously LINE records that had 0.0 or no value for the text stroke weight and/or were missing or did not have an "R" (round) endtype field caused the font compiler to crash. Now LINE records that have 0.0 or no value for the text stroke weight are assigned 0.012 inches for the text stroke weight and LINE records that have missing or do not an "R" (round) endtype field are assigned a round endtype.
The default ODB++ text stroke weight is 0.012 inches.
This version supports table driven arc smoothness control via a text file with the following format:
# rmin rmax polarity degrees chord_error units um 1150 1250 - 45 0 900 1000 - 15 0File Syntax:
This version represents improved path recovery in terms of fidelity over the initial v3.14 release. Additionally, path recovery now supports pad recovery when standard symbols are used. The new functionalities are highlighted in the image of the Advanced dialog here: The associated new command line options are:
-participating - Includes only those pads that touch a path vertex. -pads - Includes pad data in the output as SREFs.The pad data can be mapped to a particular layer by way of the -layer command line option
This version of SFGEN supports Path Recovery which can be driven from the Path Recovery tab in the Advanced dialog. Or via command line options as show below...
../bin/sfgen "-job:`pwd`/array.tgz" "-outdir:`pwd`" "-workdir:`pwd`" -step:array -thrnum:4 -path_recovery_args -percent_area:25 -layer:1,2 The current list of command line options that flavor the path recovery engine's behavior are -keep debris data are not removed (default is to remove debris files) -layer:B[,P] where B and P are layer designators (either layer or layer:datatype) for BOUNDARY and PATH data in the output - (default 0:0) -percent_area:A where A is a number in percent (e.g. 25) which indicates that candidate PATH data whose percent area of relative to it's extent box is greater than this value will be not be output as PATHs (default is 25) -aspect_ratio:R where candidate PATH data whose length to width ratio is less than this value will be not be output as PATHs (default is 5) -singlets indicates that candidate PATH data having only two vertices not to be excluded from consideration to be output as PATHS (default is to not consider "singlets") -arcres:R where R is the arc resolution to be used when converting candidate PATH data to polygon data for analysis (default 45 degrees) -chord_error_um:E where E is the chord error in microns to be used when converting candidate PATH data to polygon data for analysis (default 0.1um) -sliver:S where S is the sliver value associated with boolean operations (default: 10 times chord error) -min_line_width_um:W ignore candidate PATH data with path width less than W (default 0) -max_line_width_um:W ignore candidate PATH data with path width greater than W (default - no restriction on maximum path width) -tolerance:T where T in microns is the precision associated with general computations, vertex matching (default: 1um)
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.
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 UpdateThis version fixes several issues in the TTF library that is embedded 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 updatesSeveral 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.
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.
This release includes enhancements/speedups for the support of ODB file in the standard product. Additionally it includes an ODB scanning facility.
ODB++ Scanner IssueThis 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.
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.
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 RoutineFixed 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 PregridFixed a bug associated with rounding for non-unity pregrid.
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).
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.
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:intvaland
-vertex_threshold:intval
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.
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)
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++ ModulesUpdated 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.
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.
This version includes a new sffcorrection64.exe with better log report.
Updated the GUI to reflect the input's unit (UM if input is ODB) when specifying optional arguments such as chord error, offset etc.
This version fixed an issue where correction is not applied to the output when the correction is just a shift along the X-axis..
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.
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.
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.
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.
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.
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.
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.
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..
This version removed the restriction when using Manhattan sizing.
This version includes new -manh and -fivept options for sizing. The feature was added in both commmand line mode and in the GUI.
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.
This version includes optimization for counting structure instantiations.
This version supports GDS files containing structure names up to 1024 characters in length.
This version fixes Edge Placement Errors.
Ignore Cell/Pass Through Mode is disabled when not Preserving Hierarchy.
QISBOOL can now perform multi-threaded sizing.
Updated the main window to resize step or layer list sections of the dialog.
Bug Fix - Crash due to License FailFixed a bug that caused a program crash when licensing fails. This was the result of a buffer overflow.
Command Line Syntax CheckInvalid command line arguments are now reported
Error Status FixedA 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.
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 LimitsMaximum quad size for GDSCompact flow can now have different values for X and Y.
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.
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 OutputA bug was fixed in the GDSCompact mode which resulted in "quadrilaterals" with more than 4 sides.
Bug Fix in Convex OutputA 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 StructureThe 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.)
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:
it does not yet support a check box for deactivation of hierarchical compaction so that must be entered manually.
Batch Filea .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-ActivationHierarchical 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 RequirementGDSCOMPACT 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.
Modified progress dialog to better reflect progress. Does not reset for each additional layer processed. Now starts during opening of the file.
-silent fixFixed "-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 FixWhen run from a batch/script relative paths were not correctly supported. This has been fixed.
Additional Log InformationModified the log file to include more information about ODB conversion.
View Output - FixedFixed 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.
The user interface which was previously MFC based, is now Qt based.
Port to LinuxSFGEN has been ported to Linux (RHEL5 and later).
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.
Fixed bug issue where no data is output if the GDSII input datatype is non-zero.
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).
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.
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.
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.
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.
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.
Conversion time to GDSII when correction is applied is reduced. reference: Sample_PXL.gds.
Updated Product ID: 427 (ODB++ input), 428 (GDSII input)
Bug FixFixed duplicate polygons issue of adjacent cells.
Speed improvements.
New licensing.
Speed improvements.
New key routine.
Fixed polarity issues.
Improved frame arc resolution.
Fixed logging issues.
Fixed rotated/mirrored child step issue.
Fixed long path fonts issue.
Updated boolean module.
The latest SFGEN will fixed odbfnt2shx module to handle wide characters.
It also includes an updated sffcorrection and acsbool.
The latest SFGEN will require new key codes corresponding to product IDs 527 for ODB and 528 for GDS (LCD).
Speed ImprovementsSpeed up in new hierarchy calculation.
Program crash on a customer file. The problem was related to the presence of a circular sliver in a surface. This has been corrected.
Improved speed and addresses LGE's throughput issues
Precision issue in the hole detection within a surface caused the program to create the wrong output.
Random sizing for offset both or xyboth is implemented.
Fixed rip library that causes a crash when ripping very narrow data.
Speedup in creation and comparison of instances have been implemented.
Fixed a bug that causes some files with a large number of vertex count to crash during translation.
There are no more crashes during translation of customer file.
Enhancements to Text Merge
Update Correction AlgorithmsUpdated the correction algorithms to sync up with the ones implemented in RTCR.
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 ResolutionFixed a bug in the input argument parser that did not allow for very fine adjustment of scale factor and rotation angle.
This is the initial release of SFGEN64. The annotation (text merge) function is not implemented.