MBS2TIFF/GDS Revision History

Version 1.46 Windows/Linux 8/25/2022

Empty Pattern File

This version fixes a bug that results in a crash when a pattern file referenced in a job deck contains no data. This happens only under certain conditions, namely when the options corresponding to "Placeholder for ROI Exception" and "Enable Large Pattern Smart Seek" in the Advanced Settings Dialog are both enabled.
The same fix (avoiding a divide by zero) when a pattern file that contains no data avoids a crash in mbschk, a standalone pattern file analyzer/utility.

VS 2015 64 bit

This release is strictly a 64 bit release and as such requires a 64 bit compute platform.
The Windows version is built with VS 2015 and as such requires the requisite redistribution libraries. These are provided by the installer. The sample source code, project files and libraries for C++ and C# are built from VS 2015.
A batch file is now provided in the examples folder of the Windows release that illustrates the use of mbs2tiff.exe, the standard binary as well as usage of the sample C++ and C# binaries (presumably to be built by the end user).

Version 1.44 Windows/Linux 5/14/2019

MEBES parser improvement

This version parses the last 6 bits, instead of all 16 bits, of the 16-bit MEBES code to see if it is a Mode 5 Compaction code (21).

Version 1.42 Windows 2/15/2018

Program Crash

If a pattern in a jobdeck is "Invalid", it failed to set appropriate values and caused the program to crash. To fix this issue, we added a check for each pattern before rasterizing it.

BMP and TIFF outputs do not match

"Large Pattern" was not supported for BMP output in the previous version. This issue was fixed.

Blank output for home view

This can be controlled by the advanced settings "Enable Large Pattern Smart Seek".

Version 1.41 Windows 10/17/2017

Software Update

Upgrade to Windows version to reflect fixes done in the Linux version.

Fix a bug where mbs2tiff library crashed after loading a job deck file multiple times.

Version 1.40 Linux 6/20/2017

Reverse Tone Support

Reverse Tone support for TIFF output flow. The option can be set in the GUI and from the command line.

Version 1.39 Linux 5/20/2017

New Control - Large Pattern Smart Seek

A new control was added in the Advance menu for enabling/disabling an optimization related to large pattern files.

New Control - View MEBES Job Deck File

A new control was added in the main menu to view the MEBES job deck file with a text editor. This is actually a copy of the job deck file to avoid corruption of the original file.

Version 1.38 Linux 5/17/2017

Software Upgrades

This version fixes usability issues with respect to Home View extraction for large pattern files with small address size.

Version 1.37 Linux 5/14/2017

Fine MEBES grid issue

This version fixes the problem with small MEBES grid/address units (0.0004 um) in conjunction with large cell extents (~110000 um) and large ROI extents.

New Features - Main Dialog

The main menu now includes a control to view the output for both TIFF and GDSII (if you provide the location of the respective viewers in the Advanced Settings dialog).

New Features - Advanced Dialog

It is now possible to develop the home view for pattern files with small mebes grids/address units - To do so, you need to set the check boxes for the "Placeholer for ROI Exception" and "X Mark for large patterns" in the Advanced Settings dialog.

The same result can be obtained from the command line as in this example:

mbs2tiff -nogui -levels:1,10 -tiff -width:5000 -large_roi_extbox -mark_large_pattern -log:nogui.log demo.jb nogui.tif

Version 1.36a Linux 5/3/2017

New Features - Main Dialog

By default, Multi Window mode is OFF.
When Multi Window mode is ON, window file must be specified. (Before, it extracted whatever extract window is specified).
File browser remembers the browse filters (extensions).

New Features - Advanced Settings dialog

Enable Logging is ON by default.
Check if valid executables are specified for TIFF/GDSII Viewers at OK.

Version 1.36 Linux 5/2/2017

New Features

Multi-window extraction.
View output and log is available from the GUI - user can set up output viewers in the advanced settings.
Advanced Settings menu added to enable logging, and setup output viewers.

Version 1.36 Windows 11/2/2016

New option "-mark_large_pattern"

In previous releases, when MBS2TIFF detected a large pattern data, it drew approximated extent box and marked with an X. With the new command line option, the user has the flexibility to enable/disable X marks on rendered large pattern data.

From the GUI, the new option is controlled from "Advanced settings" dialog.
We updated the C# sample source code to show the new API.
One function definition is changed.
[C++ mbsextract.h]
MBSEXTRACT_API int acsMBS_SetHandleLargePattern(int onoff, int xmark);
there is a second argument to this function now, which enables/disables the X mark.
C# source code is updated as well.

Version 1.35a 10/21/2016

New MBSCHK 1.17

A new version of MBSCHK v1.17 has been incorporated into MBS2TIFF.
MBS2TIFF now ships with 32 and 64 bit versions.

Bug fix when Grid below 1nm

This version fixes a bug in generating GDSII files where the pattern file grid is finer than 1 nm. Previously, a pattern file with a grid of 0.0005um created empty GDSII output files because the database unit has collapsed to zero. This has been fixed.

Software Enhancements

Optimizations have been made to the smart search algorithm for multi-window extraction mode.
A random window mode was implemented to avoid issues with file caching while testing multi-window extraction mode.
An indexing scheme was implemented to work with multi-window extraction mode.
More detailed instrumentation has been added to program output.

New Command Line Options

There are new command line options with the latest version.

-info           header info only
-log:[name] redirect stdout to a log file, optionally using name
-rand:N,D capture N windows DxD in size at random over entire pattern
-no_output don't create any GDSII output on disk
-gdsfilt create a cmd file suitable for GDSFILT to stitch GDS output into a single file
-index:F create and/or use index file F

Version 1.35 09/21/2016

Placeholder Improved Approximation

When generating a placeholder for a pattern file insertion that cannot be processed because it would overflow the internal database, we now determine the extents based on stripes containing data as opposed to using the entire stripe array (even when many are empty.) This generates a more accurate placeholder representation and is especially helpful when the full extents of a placeholder was covering other small and important features.

Bug Fix for Overflow Pattern File

A crash was occurring when the job deck instantiated only a single pattern file where the combination of extents and address unit would cause an overflow. (This did not occur when there were multiple pattern files referenced by the job deck.) This has been fixed.

Version 1.34d 09/13/2016

-seektest diagnostic - Update to mbschk v1.16 rcs 1.165

A diagnostic function which is activated on the command line using -seektest:N, performs N random seeks over the extents of the MEBES file and proceeds to read 2K of data after each seek. The results are then reported to the log.

The purpose of this diagnostic is to test the IO system to determine the maximum rate of seeks/reads that can be achieved. This would then be a limiting factor in how many GDSII clips could be generated even if further compututation took zero time.

Version 1.34c 09/09/2016

multi-threaded clipping - Update to mbschk v1.16 rcs 1.163

a new directive, -clip:N, has been added where N is the number of concurrent threads that can be used to clip trapezoids extracted by the -win argument. Using more processors for clipping should increase throughput if clipping is the bottleneck.

Version 1.34b 09/7/2016

Updates to the mbschk utility v1.15

Two important updates were made to mbschck (on Windows) in order to aid a customer in evaluating the speed with which GDSII clips can be extracted.

    Window Extraction

    This version includes "exact" window mode by default. This means that only polygons that cross or are contained by the user specified window will be included in the output; all other trapezoids are dropped. Previous versions extracted all of the trapezoids belonging to any stripe that was contained by or crossed the selection window.

    New Offset Argument

    Includes new command line option -offset where the origin of the output GDSII file is set to LL corner of the user window; the default behavior preserves the original coordinates of the MEBES file: the LL of the stripe extents is 0,0. This was added because modern MEBES files can have a combination of size and resolution that exceeds GDSII's internal dynamic range.

Version 1.34a 08/30/2016

Updates to mbschk v 1.13
    Seek Bug Fixes

    Fixed a number of bugs associated with seeking to stripe positions that do not exist; dealing with stripes that have no data; dealing with transitions between segments; dealing with empty or low density segments.

    Reporting Bug Fix

    Fixed a bug related to statistical reporting which resulted in crashes.

    Two flavors - win32 and Console

    The Win32 version of mbschk is provided as mbschk.win32.exe - its output needs to be captured by redirection. For example:

    c:\wcad\mbs2tiff\mbschk.win32.exe mebes_file.A0 -gds > report.txt 

    mbschk.exe is now a console application. When running it, a DOS box will pop up and output messages from the software will get displayed there.

Version 1.34 08/26/2016

Updates to mbschk v 1.12

Adding the following functions to mbschk in order to use it as a platform to estimate the rate of clips that can be extracted from large MEBES files.

    new "smart" search

    As part of a proof-of-concept, mbschk has a new smart search designed to demonstrate an greatly improved rate of window extraction.

    new window extraction for mbschk

    As part of a proof-of-concept, mbschk has two new window arguments. (prior to this when extracting GDSII the entire MEBES file was converted to GDSII.)




    The syntax of the window file is:

    LLx, LLy, URx, URy
    LLx, LLy, URx, URy
    LLx, LLy, URx, URy
    LLx, LLy, URx, URy


mbschk is for a single pattern file only. It cannot open or process job decks

All trapezoids in any stripe that intersects the user defined window will be extracted to the GDSII file. This results in many more trapezoids being written to the GDSII file than actually should be. More accurate filtering will be added in later version.

Version 1.33 07/19/16

New HandleLargePattern mode

This version includes the "HandleLargePattern" mode to prevent MBS2TIFF from trying to parse a pattern file that would produce an integer overflow; instead, when mbs2tiff detects such a condition it will "draw" a placeholder on screen.

Update to FastMode

"FastMode" will only be applied to very fine pattern files: patterns with grid < 0.0001. This change enables the program to "alias" these fine pattern files while still correctly rendering less fine ones. It is of particular use when viewing a combination of alignment marks and labels which have low resolution and small extents, together with a large product pattern file which has a very fine grid and would take a long time to render.

GUI Changes

This version includes changes in GUI.

  • Enable logging
  • Placeholder for ROI Exception (which uses "HandleLargePattern" mode)
  • Auto Reset Extract Window (when a new file is loaded)
  • Setting path to TIFF/GDS viewers
  • View (output) Button
  • View Log (if logging is enabled)

Version 1.32 05/26/16

New Fast mbs2tiff display mode - No Detail

When "No Detail" mode is turned ON, Mbs2TIFF outputs stripe boxes (not the actual data, but a stripe box) whose density exceeds the user specified threshold value.

For example, if "No Detail" is used with a value 0, then it will output all Non empty stripe boxes to TIFF.

On the command line the argument is: -nodetail:T where varies from 0 (default) to 1.

Version 1.31 03/23/16

Program Updates

Fixed crashing issue in OpenFile() after calling acsMBS_Close() function once.
Improvements on handling internal component states.

Version 1.30a Linux 01/28/16

Flexlm Licensing Library

This release contains v11.13.1.2 FLEX utilities as well as artwork daemons (32 and 64 bit).

Version 1.30 Linux 12/18/15

Linux Updated to RHEL5

This version was compiled under RHEL5. It will only work on RHEL5 and (other compatible flavors) and up.

Increased Max Number of Segments

A pattern file with more than 10,000 segments caused a crash in mbs2tiff. This version now supports up to 32K segments and has protection against overflowing this static data space; In this case, the pattern file can not be loaded and message to this effect is issued.

Version 1.26 Linux 12/11/15

Traceback for Debug

This version is the same as v1.25 except that it has a traceback system.

The traceback system is normally off by default and must be enabled with the command line option -traceback. Only invoke traceback when debugging because it could potentially decrease throughput if left on by default.

Version 1.25 Linux 11/11/15

Incorrect TIFF output for 200GB MEBES file

Fixed the issue with bad TIFF output when job deck included a MEBES file that was 200GB.
This version avoids some of the problems associated for pattern files with very fine address units.
It also provides some diagnostics (in the log file) when it can not produce a TIFF file subject to the certain limitation (extents of the window never exceed 2^31 address units).

Version 1.24 Linux 10/17/15

New 64 bit Module

This version includes a 64 bit executable to better support large files. The 64 bit modules are located in a folder named 64bit in the bin folder.

The program GUI is located in the the bin folder and is invoked as follows:

path_to_mbs2tiff_installation_folder/bin/mbs2tiff             using 32 bit engine        
path_to_mbs2tiff_installation_folder/bin/mbs2tiff64           using 64 bit engine
mbschk update what version of mbschk?

mbschk,a pattern file checking utility, is now large file compliant. The previous release did not read patterns in excess of 2GB.

log file

The log file is now more verbose and additional information is now printed to the log file but not to the screen.

For each unique pattern file that is referenced in the job file, the mirror and tone flags are reported.
The disk file size is reported in bytes and in MB, together with the effective grid and pattern extents (segment/stripe width and height).
The on chip extents are reported together with statistics reflecting pattern file data in the output, i.e. the number of buffered reads and trapezoids counts used to create user output.

Version 1.23 Windows 06/04/15

Sample Code for C#

This release contains a new folder that contains Visual Studio 2010 sample code/project for a C# command line executable as well as the supporting C# bridge code to make use of mbsextract.dll.

Version 1.23 Linux 11-16-12

Large file support

This version supports large pattern files and job decks that reference large pattern files, i.e. those above 4GB in file size. Even though the product had been compiled with the correct LARGEFILE compiler directives (_LARGEFILE_SOURCE and _FILE_OFFSET_BITS=64) some system functions (fseek, ftell, and stat) were not used properly in this context and some computations with respect to file offsets were not made carefully (which resulted in integer overflows). These issues have been resolved.

Version 1.22 10-19-12

Log file

This version has enhance logging and runtime reporting. Otherwise it functions the same as v1.20.

Version 1.19 2-16-12

Empty Output TIFF file

When the window selected was outside the mask area, mbs2tiff could create an empty output file. To avoid this problem, use the new option -no_window_check.

Version 1.18 10-16-11

Sub micron window error

This version fixes the issue with the command line option -window:llx,lly,urx,ury
where if urx-llx or ury-lly were less than 1um the analysis window would revert to the home view.

Multi threading

This version supports multi-threading and striping of data when the -union[:M] value is used. Now data compaction takes advantage of as many cores are available (up to a maximum of 4). Before the user had to make a judicious choice for the optional value of M (the number of items to be collected before unionization would occur on output to the GDSII stream) in a trade off between processing time and generating GDSII minimizing the number of artifacts resulting from fractured MEBES data. On modern platforms the user can specify M to be 500000 or 5000000 (the current default is still 5000).

Version 1.17 08-06-10

window command line option

This version fixes the window command line option. Previous versions only allowed window conversion within the GUI.

Version 1.16 10-2-08

Slice code 99

This version supports slice code 99 (9 inch), 88 (8 inch), 77 (14 inch) in the job deck.
Use the mbs2tiff -h command line option to see the new -slice options.

Union option for compact output GDSII file

We now recommend using -union:50000 - this improves the compaction of the output GDSII file.
Vertex count are guaranteed to never exceed MAXPTS value (see -maxpts command line option).

Version 1.15 9-2-08

Improved MEBES reader

This version of mbs2tiff/gdsii fixes a bug in the MEBES V reader.

Version 1.13 7-21-08

Standard output

This version of mbs2tiff/gdsii is capable of sending the output to the standard output instead of a file.

MBS2TIFF/GDS - a MEBES to GDSII/TIFF/BITMAP conversion utility

Version 1.11 12-18-04

New Feature - Layer Mapping

First release of MBS2TIFF/GDS. Supports Job deck, and Window extraction. Runs as a standalone application or as DLL for companies who OEM the software.

Job deck levels can be mapped to different layers
in the GDSII o/p. By default, ofcourse, job deck levels
are mapped to the same layer numbers in GDSII extracted
o/p. This feature is only available for command line
run (with -nogui).

Command line option, which helps for this feature is,


 l1,l2 are the original level numbers to be extracted
 m1,m2 are the respective mapped layers in GDSII o/p (optional)
 This command, ofcourse, is valid only for MEBES job deck


i) mbs2tiff inputmebes.jb out.gds -nogui -gds -levels:1,2,3

This implies to extract levels 1, 2 and 3 from inputmebes.jb job deck
to GDSII o/p. Since no mapping is done, output GDSII file out.gds
will have respective layers 1, 2 and 3.

ii) mbs2tiff inputmebes.jb out.gds -nogui -gds -levels:1-55,2,3-44

This implies to extract levels 1, 2 and 3 from inputmebes.jb job deck
to GDSII o/p. Level 1 is mapped to 55 and level 3 is mapped to 44.
Level 2 is not mapped to any other. Output GDSII file out.gds
will have respective layers 55, 2 and 44.

To use this feature from libmbsext.so/mbsextract.dll directly use:

MBSEXTRACT_API int acsMBS_SetLevelMap(const short inLevel, const
  short outLevel);

This function will set the input level(inLevel) to desired output
layer(outLevel) in GDSII o/p. User should call this function
for each level, which needs different mapping before calling any
extract GetROIImage functions(extract functions).

b) Silent mode(-silent) does not pop up any messages or
dialog boxes. In the previous versions, it use to message once the
extraction is done. However, this was unsuitable for the batch(command) mode
run and hence the change.

Bug fix - Layer default in MEBES to GDSII

Default layer was different in the extracted GDSII o/p from a single MEBES pattern, on Solaris and Windows. This was the case whenever -union option was used. This has been fixed.

Bug fix - Global Mirroring in Job Deck file

Global Mirroring option in MEBES job deck was not in effect for GDSII extraction. This has been fixed.

Version 1.10 09-28-04

First Release

First release of MBS2TIFF/GDS. Supports Job deck, and Window extraction. Runs as a standalone application or as DLL for companies who OEM the software.

GDSII output is supported in addition to Windows Bitmap and TIFF format in this version. All the Chip specification's in the MEBES job deck are represented as structure in GDSII format. All the levels in the job deck are represented as layers in GDSII format. Internally, each chip's level is a structure in itself in GDSII world and all it's placements(ROWS in job deck) are AREF's in GDSII world.

Command Line Options

Here are the command line argument options,

mbs2tiff [options] input_file output_file


  Run in comamnd line mode.
  No Mbs2tiff main dialog box will be popped up.  On Windows, 
  only the progress dialog box will pop up, which can be disabled
  with -silent option.

  Disable percent progress messages.
  This will help if someone wants to run the program in the back
   ground without any pop-up or print messages, except the
   status message when finished extracting.

  Specify extract window in microns(MEBES units).
  llx,lly are the lower left  x co-ordinate and y co-ordinate respectively.
  urx,ury are the upper right x co-ordinate and  y co-ordinate respectively.

  Specify levels in the job deck to be extracted.
  l1,l2,l3 are the level numbers.
  This is valid only for job deck data MEBES data.

  Specify TIFF output format.
  This is the default format.

  Specify GDSII output format.

  Specify Windows bitmap  output format(Windows only).

  Specify log file LOGFILENAME to be created. 

  Specify output width equal to WIDTH in pixels(dots). 
  Default width is 1000 pixels(dots).
  This is valid only for TIFF/BITMAP output format.

  Specify output height equal to HEIGHT in pixels(dots)
  Default width is 1000 pixels(dots).
  This is valid only for TIFF/BITMAP output format.

  By default, the mbs2gds program will not perform a union boolean
  operation on the MEBES trapezoids as this results in the fastest
  conversion. However the resulting GDSII file can be huge because
  MEBES stores each figure much more compactly than GDSII does.
  The -union:POLYNUM directs the program to read in the specified
  number of polygons and to attempt to unionize them into larger more
  complex polygons. This will greatly decrease the size of the resulting
  GDSII stream file. If the value of POLYNUM is very large the time
  it takes to perform the unionization can grow exponentially.
  Our experiments with a few files indicate a value of 500 for POLYNUM
  gives reasonably good compression without a large penalty in conversion
  This is valid only for GDSII output format.
Window Clipping

Depending on the extract window, if some portion of the pattern array in job deck is entirely inside the extract window, then those patterns are extracted as AREF in GDSII world. The patterns, which are clipped with the extract window are obviously flattened using boolean operation. So, creating array references is by default and only works for job deck MEBES data. We do not create strutures for an array of polygons in a pattern, which we do in mbs2gds with -aref option.

mbsextract.dll (Windows) , libmbsext.so (Solaris)

Updated functions:
If the extract window is inside the home extents of the MEBES data 
and if there is no data in that extract window, library creates a empty
file. However, in the previous versions, we did not have a way to know
about this case.
Following 2 functions have been updated in this version to help in this case,
a) int acsMBS_GetROIImageBits (int OutputWidth, int outputHeight, unsigned
   char **Image, long *ImageSize) 
   This function returns with ImageSize assigned to 0, which indicates that
   the bitmap bits does not have any data.
b) * int acsMBS_GetROIImageToDisk (int outputWidth, int outputHeight, const
  char *filename, long *ImageSize) 
   This function returns with an warning code of 6, which indicates that empty file
   is created.

New functions added,

* int acsMBS_Init(char *ParentDir);
  This function should be called before using any other functions to initialize
  the library.
  Argument Values
  ParentDir : Parent Directory of the program using the library.

* int acsMBS_Close();
 This function should be called just before application exit's to clean up 
  the library, if not clean. 

  Price Download Revision History