This page contains the summary of odb2gds release dates, versions and changes/fixes made for that release.
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
Odb2gbr or Odb2gds 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.
Both the ODB GUI and library were mistakenly failing to distinguish a local path from a network path. This has now been fixed by treating a network path as a literal one after recognizing it by looking for a beginning pair of backslash characters in the path.
Bug fix to orientation of nested non exploded ODB++ user symbolsThe problem was found with nested user symbols contained in exploded ones. When ODB conversion is done without exploding all symbols, some of the symbols are exploded anyways if there is a change in polarity or dynamic text is floated to be resolved later. This has been fixed by forcing these nested symbols to be exploded as well.
Added memeory map files for speed optimization of ODB++ attributesOdb2gdx64.dll library outputs "attrlist_all.db and "userattr.db" memory map files. This is an optimization for the odb2gdx64.exe ODB feature interpreter engine. This allows the attribute database to be created once and subsequently read in directly by odb2gdx64.exe each time it's called to translate each symbol and layer instead of having odb2gdx64.exe create it every time it's launched. Otherwise, this can be time consuming if there are a high number of attributes to search for in addition to a high number of symbols and layers as the database is being created.
Chord error table fix when concidering surface holes and islandsChord error table fix when concidering surface holes and islands Each entry in the table has a polarity field. The mistake was to only use the surface polarity to help determine which entry to use for a given surface curve. What was needed was to also consider whether the curve was part of a hole or island. This has now been fixed.
Added support for additional ODB++ symbols
Type Name ODB SYMBOL NAME RoundedSquareThermalOpenCorners_type s_ths LineThermal_type s_thr HomePlate_type hplate InvertedHomePlate_type rhplate FlatHomePlate_type fhplate RadiusedInvertedHomePlate_type radhplate RadiusedHomePlate_type dshape Dogbone_type dogbone DPack_type dpackUpdated Boolean Components
The Boolean libraries used by ODB2GDS have been updated to the most recent version.
New Linux release to match the Windows version.
In certain cases, the profile extents incorrectly displayed "unknown". This has now been fixed so that when the profile information has been found to be correct, the extents will be displayed instead of "unknown".
Added ODB++ Cross symbol supportAdded support for type name Cross_type and ODB++ Symbol name cross.
Report of unsupported symbol namesWhen the symbols below are encountered, a warning is reported. Before, nothing was reported.
Type Name ODB SYMBOL NAME LineThermal_type s_thr HomePlate_type hplate InvertedHomePlate_type rhplate FlatHomePlate_type fhplate RadiusedInvertedHomePlate_type radhplate RadiusedHomePlate_type dshape Dogbone_type dogbone DPack_type dpackUpdated Boolean Components
The Boolean libraries used by ODB2GDS have been updated to the most recent version.
The memory used to support these arguments was only 260 bytes long. It has been changed to be dynamically allocated to the length of these arguments.
Software UpdatesFixed ODB2GDX library to include component layers in ODBTREE functions.
Updated ODB feature file converter (ODB2GDX ENGINE)
The Boolean libraries used by ODB2GDS have been updated to the most recent version.
Optimized ODB++ file existence check for speed (Windows only). This generated a speed up of about two to five times.
Added support for ODB++ oblong thermal types.
Added warnings for referenced undefined ODB++ symbol types.
Bug fix to dropped ODB++ arcs with point precision smaller than output grid. These were mistakenly treated as small arcs and output as pads. The data point precision required to calculate the angle precision needed to be 10x the greater of data point precision and output grid. Otherwise, the arc data would be considered a small arc and drawn as a round pad the start point.
Incorrect data was accessed and drawn for these symbols since none were stored for zero dimension data. This has now been fixed to draw lines with zero width round symbols.
Fixed parsing issue for matrix and info filesFixed an issue with handling space characters around '=' characters.
Misc Updates This release includes all the updates mentioned in the odb2gbr revision history page which were done since ODB2GDS 3.19c release.
Includes the latest boolean libraries.
The Boolean libraries used by ODB2GDS have been updated to the most recent version. Specifically, the speed of the boolean engine was improved when sizing is used.
Updated the Boolean libraries used by ODB2GDS to the latest versions.
The problem was with failing to handle space characters around '=' characters when encountered. As a consequence, X and Y DATUM values were being misread and causing stepped data to be offset incorrectly. This has now been fixed.
Boundary generation was broken for arcs that were over 180 degreesThis bug resulted from resetting the number of polygons each time one was created. Since arcs greater than 180 degrees were drawn as two boundaries, only the last one was shown. This has now been fixed. The problem was introduced in v3.18f and it only happened when arcs were exploded into boundaries.
New boolean engine with a fix to dropped polygon issue when prescale is turned on (which is the default).
Use extra precision when handling small arcs. Output round pad with arc width if the angle between start and end is less than 0.01 degrees.
Arc with width are segmented when output as boundaries.
Boolean and Gerber validation components have been updated.
This version was compiled with VS2015. VS2008 is discontinued.
Fixed an issue where ODB2GDS outputs unsmoothed lines. Line draws using standard symbols (other than round and square) were previously stepped in a manner consistent with what was shown in VUV (Valor viewer). Now, line draw is supported exactly without stepping, producing smooth lines. User defined symbols are still stepped producing unsmoothed lines.
Fixed an issue where text was being dropped. This was caused by texts that specify SHX font files as the font name in TEXT feature lines. SHX files are not supported by ODB2GDS. If a text uses a font that is unsupported or does not exist, ODB2GDS will use the default font (standard).
Fixed an issue where ODB2GDS is dropping non-ascii text. These texts are replaced by an 'X'.
This version changed deemb_surf default to 0. Surfaces will be booleanized every
time there is scratch data so that the order of the polygons are preserved and the ODB++ spec is followed.
This can be disabled by specifying -deemb_surf:1 or selecting "reorder surface polygons" in the advanced dialog.
This version fixed an issue where scratch data is dropped.
In previous versions, when the extents of SR'ed steps were defined by scratch data and the step extents overlap, SR optimization was defeated. The
user can now override this behavior from the command line with the option "-nobreaksr" or from the GUI by adding "-nobreaksr" in the
advanced dialog's convert args text box.
Added support for comments in ODB2GDS layer map file. Lines that begins with # is now considered a comment.
Updated unzip module to unzip input files regardless if there is a warning.
Fixed an issue where softkeys with long names fails to acquire a license.
When the odb2gds Advanced dialog's help button is selected, a Browser window will open up with the ODB2GDS Setting Web Page
Improved deembed surface model to be faster and safer.
Fixed issues with string overflow and false failure in the logging. There was an issue where odb2gdx logs an error caused by zero area polygons when it should be considered as a warning.
Fixed units issue of the profile extents reported in the GUI and scan files. There was a bug where the profile extent was converted to the wrong unit.
Removed forced XY ratio setting for deembed surfaces.
Updated the command line executable and added a test script for it in INSTALLDIR/examples/test_nox.sh
Updated the sample test script INSTALLDIR/src/sample.sh to check for odb_sample64 in INSTALLDIR/bin. If the executable doesn't exist,
the script is going to try to compile it. To manually compile odb_sample64, a make file is provided together with the sample code in
the INSTALLDIR/src directory.
Removed the 32bit stragglers.
Fixed the issue where ODB2GDS failed to output Gerber files when the optional argument "-netex" is specified. There was a bug in reading long
component property strings.
Modified ODB2GBR and ODB2GDS to deembed surfaces by default.
Previously, surfaces were booleanized every time there is scratch data so that the order of the polygons were preserved and the ODB++ spec was
followed. This mode can be re-enabled by specifying the optional argument "-deemb_surf:0" or selecting "reorder surface polygons" in the
advanced dialog.
Added OASIS output option in ODB2GDS. An ODB2OAS64 key is necessary to enable this option. There's a checkbox in the GUI to select OASIS
output.
In the command line, the optional argument "-oas:basename" or "+oas:filename" (for combined OASIS output) can be specified.
Layer mapping is added for combined OASIS or GDSII output. It can be specified in the main GUI when the combine checkbox is selected or in
the command line with the "-lyrmap:fname" optional argument. The layer mapping file should have the following format:
layername layer:datatype For example:
top 10:0 bottom 10:1 gnd 12
This version fixes the issue where ODB++ child steps which are step-and-repeated overlap each other; and one scratches their siblings' data. When this happens, SR must be disabled for the child steps.
Degenerate Polygon Crash FixedThis version fixes a crash that was caused by extremely degenerate polygons. These polygons are now discarded during the routine that qualifies input data.
This version holds the license from the start to avoid multiple runs on a single license and getting an error in the middle of a run.
Only one product key is now required for odb2gds64 (the boolmt key is no longer needed).
In version 2.24 a new command line option was added -cir_map_min_cnt:X
to convert circle-like polygons (after Boolean operations) into round flashes if the difference between the computed radius (R0) and distance between the midpoint and any of the polygon's vertices are smaller or equal to a tolerance.
In the previous release, this tolerance was fixed at 1% of the computed radius. That criteria is suitable when the radius is small. However, this criteria converts some polygons that are not true circles into flashes when the radius is large.
In this release, the tolerance is the greater of the user specified chord error or a computed chord error:
(1 - cos(PI)) * R0 * 2.0
This version fixed a problem where the software dropped negative strokes from font files. Instead, a warning will be issued if a feature file uses fonts with negative strokes because characters with negative strokes will not scratch data behind it.
Addresses a bug in the flow where font conversion ends if a failure is encountered. This causes an error for feature files that use fonts that are not converted.
This is now fixed so that all of the fonts are converted even if there's a failure. If a feature file uses an invalid font, only that feature file will fail conversion.
Correction for SHX fontsFixed an issue where conversion fails if text uses an SHX font file directly. The conversion will no longer fail but the text is replaced with a capital 'X' in standard font and a warning will be recorded. This issue will be addressed more usefully in a future release.
Improved Logging of WarningsAdded support for warnings during odb2gdx feature conversions. If a warning is triggered, the messages will be recorded in the log file and will be displayed in the GUI's pop up message.
New Warning Function in APIAdded HASWARNINGS code in the acs_odb_structs.h header file. If warnings were generated, the function ACS_getODBLastErr will return the error code HASWARNINGS during successful runs. Programs using the library must use the latest library and header files included in the packages.
Fixes a bug in reading the netlist when importing an ODB++ input. This bug resulted in the program reporting no nets found even when there are nets defined in the input file.
Memory Leak FixedFixes a memory leak in the function that reports imported ODB++ tree.
Fixed Crash on Consecutive RunsUpdated ODB2GDS post-processor to fix a bug where it crashes when executed several times consecutively. This was caused by file handles that are not closed after each run.
Added API for GDSII and OASIS outputAdded the header file, lib file and sample code to ODB2GDS and ODB2OAS.
Removed Support for Sentinel KeysNo longer supporting Rainbow Sentinel hardware keys. Only the flexlm hardware key.
Updated several modules including Boolean which was dropping data.
Fixed a bug in reading the command line chord error if "-unit" is specified after "-arcsag".
Fixed an issue where the software created large intermediate files and fails to read them.
Added a limitation to arcsag and scale based on the output resolution.
Improved the speed of ACS_openODB.
Modified the library so that calls to RegInitPrgsDlg, RegExitPrgsDlg, RegSetPhaseInit, RegSetPhaseTitle, RegIncrementPhase,
RegIsCancel are no longer necessary to make it work.
Added debugging information for reading exceptions.
This new version uses Qt instead of MFC/Motif. The GUI is now the same
for Windows and Linux. All the underlying components are the same, only
the GUI changed.
The libraries and header file included for the GUI are different:
odbgui.dll, odbgui.lib, odbgui_main.dll and acs_odbgui.h
This version fixed an issue where special characters ' 'space or '-'dash are not converted properly when the text height is much smaller than the text width. We put a safeguard when the text height is less than 25% of the text width..
This version fixed an issue where an output is missing a part of a polygon. It was caused by a bug in qualifying a booldll butting output.
Fixed an issue where the output text's origin does not match VUV when the font used has different sized characters.
This version fixes an issue where special characters ' 'space or '-'dash are not converted properly.
Fixed an issue where step-repeat data was dropped. This was caused by a bug in computing nx/ny of rotated references.
Moved boolean from 32bit to 64bit in ODB2GDS and ODB2OAS.
Updated all the ODB components to reflect all the changes done in the past two years.
Fixed licensing related issue in LINUX.
Updated libraries included in the package.
Circularization during post processing is now multi-threaded. Refer to table below.
Fixed how the command line and GUI passes arguments to post processing (split274x).
Renamed the GUI's "Surface Settings" tab to "Post Processing" to better reflect its function.
Fine control of split274x is available by way of "-bgn_split_args [opt_args] -end_split_args". This control is still available with "-ply_arg [opt_args] -end_args" but should be deprecated. The usage with "-bgn_split_args [opt_args] -end_split_args" is consistent with other programs that make use of split274x.
Added -maxpts:N command line option to be passed on to split274x - does not require circularization.
Added post processing (split274x) log to the log file.
Added loading and conversion timing information in the log file.
Post processing will be triggered if circularization, transformation, max points or other post processing arguments are specified.
Modified library default output arcres/arcsag as 45.0 and 0.0005mm respectively.
Updated libraries and modules (acsbool, gdscomp, gds2oasfrac).
Added new transformation options in the command line (-rotate:0|90|180|270 and -mirror:x|y|xy ). These new options were also added in the GUI (under ODB Settings -> Rotate/MX/MY).
Added ignore .out_mirror option in command line (-g2k_order:2) and GUI (under G2K Settings -> Translation -> No Mirror).
Fixed an issue where ODB2GDS fails to convert an ODB++ file with comments between symbol declarations.
This version fixes a problem related to the fact that the first CHAR entry in the ODB++ font file was for the NULL. We modified the font compiler to throw away characters outside the range of 32 (space) to 255.
Arc IssueThis version fixes a problem where small arcs were translated into a full circular arc.
This version fixed an issue with failing to convert ODB++ files with number of dcodes > 32767. The new maximum is 65535.
The attribute .comp_height is now converted to the correct value (when used with Netex-G import).
This version fixes a problem related to the fact that the first CHAR entry in the ODB++ font file was for the NULL. We modified the font compiler to throw away characters outside the range of 32 (space) to 255.
Makes use of xcopy on Windows (if available) to speed up the copying of an input directory.
Updated gdsx2gbr to fix discarded flash bug in an ODB++ file with a lot of layers.
Updated acsbool library.
Fixed the issue with using extended fonts directly in the features file.
Fixed issue where some dynamic texts are not being converted properly. They are tied to V8 ODB++ where attributes can be tied to more than one class of thing unlike the V6 specification which allows only one.
Added "-cir_map_min_cnt:[val]" option to control the surfaces that will be converted to round flash. The default is 100 where if there are at least 100 round surfaces of the same diameter, they will be converted to a round flash. If it is set to zero, the round surfaces will not be converted into round flashes.
Fixed stackup layer output to NJB (for NetexG).
Added "-outinfo:[full_path]" option to create an output file that stores stepinfo or steplist and layerlist.
Added "-netlayers:[full_path]" option to create an output file that stores the list of steps and net specific layers.
(5) Uses QT for popups.
Fixed text issue where the offset and width of a character is off.
Fixed barcode issue where the text inside the barcode is off in the Y direction.
Fixed thermal issue where the spokes were too narrow.
Fixed the synchronization error that was causing a crash on Windows XP when the optional argument "-nocopyin" was used.
This version ignores invalid lines when reading the netlist or toollist
Bug Fix - trying to render an empty stringFixed the issue where conversion crashes as the result of trying to render an empty string
Sample CodeAdded sample code to exercise the library to this release.
Single license for ODB2GDS (removed overlay license requirement to output a single GDSII file from multiple ODB layers).
Fixed relative path issue.
Major update for LINUXAdded Qt based progress.
Qt libraries QtCore4.dll/libQtCore.so.4 and QtGui4.dll/libQtGui.so.4 are added in the installation.
The library obd2gdx.dll has six new callback functions that need to be defined by programs using the library: NOdb2GdxCB_InitPrgsDlg, NOdb2GdxCB_ExitPrgsDlg, NOdb2GdxCB_SetPhaseInit, NOdb2GdxCB_SetPhaseTitle, NOdb2GdxCB_IncrementPhase and NOdb2GdxCB_IsCancel. These functions are declared at the included header file acs_odb.h.
Added option to disable sr optimization -nosropt (for ODB++ files where child steps overlap).
Calculate dcode start values on the fly (to minimize the dcode values when there are many).
Add multi layer selection and combine multiple layers in ODB2GDS.
Speed improvement on ODB++ files that has a lot of symbols.
Discards invalid symbol definitions inside a feature file.
Fixed issue with feature file's pkzip compression.
Fixed the issue where the program fails opening an ODB++ file. This is caused by mismatched path lengths that is causing memory errors.
Updated 64bit product ID.
Fixed issue where out_scale was not applied to text.
Fixed issue where text is not converted in MM.
Removed patch on outlines.
Fixed issue where conversion fails if the input has extra files not defined in ODB++ spec.
Fixed a bug where the output is incorrect using the option g2k_scale_mode when top step has no data.
Fixed bug in reading softkey arguments with spaces embedded.
Added -acsk option in the softkey support.
Improved timing report in the log file.
Updated gds2oasfrac and bool.
Added softkey support.
Fixed a bug that causes some files with a large number of vertex count to crash during translation.
The following fixes and updates have been implemented:
Fixed paint and scratch bug for GDS/OAS output.
Added the optional argument -odbargs fore debugging.
Removed rotation correction of bottom component if it's already mirrored
The modules in this package have been updated to VS2008 compile
Added VC Redistributables in the install
Added Max Points field in the command line
Missing HolesFixed an issue where the frame data has missing holes.
Added Max Points field in the GUI
Misc Updates
Here are the fixes done with this version:
Here are the fixes done with this version:
Here are the fixes done with this version:
Fixed a bug in drawing user defined symbols that overlap. This bug was caused by layer optimization, the order of scratch and paint data were incorrectly drawn.
Added support of line draws using symbols other than round or square.
Added barcode support.
Polarity issueFixed the polarity issue where the polarity of a negative symbol nested inside another negative symbol is not generated properly.
Fixed the readonly issue where ODBRIP fails to open ODB input with read-only compressed files.
Polarity IssueFixed the drawing polarity issue where a negative data is drawn as positive.
Fixed the week number issue where the output week number differs from VUV.
Rotated Standard SymbolsAdded support of rotated standard symbols.
Fixed bug in reading ODB++ with GZ files.
New -nocopyin optionAdded a -nocopyin option to open the input ODB++ directory as-is. The input directory and sub-folders must be writable. It must be noted that when using this option, the input ODB++ directory will be modified directly by the program.
This version has a few improvements.
This version resolves a few issues reported by different clients.
First Windows release. The keys needed for these packages are ODB2GDS 521 and BOOLMT 2700.
The keys needed for these packages are ODB2GDS 521 and BOOLMT 2700.