QISLIb_MT Revision History
This page contains notes on the release history and revisions made to QISLib_MT. QISLib_MT's initial release is "embedded" inside an application/library called clipextract. Clipextract also embeds QISBool and acsRasterLib in order to convert data extracted by QISLib_MT into useful output products such as GDSII and TIFF.
QisMLib 1.33 11/21/2024
New QisMDxf Release
Scan DXF files for layer, block, geometry, and font information.
Import DXF files into QisMLib databases and transform them into GDSII format or rasterized outputs.
QisMOdbScan Notes
Scripting Bug Fix: Fixed minor bugs regarding cleaning up query and setting objects in the scripting commands.
API Bug Fixes:
Resolved an issue where steps were incorrectly reported multiple times as child steps when they also appeared as children of grandchildren.
Fixed a bug where a step was missing from the graphical hierarchy if its name was a substring of another step's name (e.g., "two" and "step_two").
Removed inconsistent newlines and carriage returns from report files that occurred with certain ODB files.
QisMOdbRip Notes
Improved Loading Speed: Increased performance when processing surfaces using multiple threads.
Fixed a bug where the option "-out_scale:mode" was not being applied correctly.
QisMOdbPS Notes
Improved Loading Speed: Increased performance when processing surfaces using multiple threads.
QisMGbrRip Notes
Resolved a crash in the Gerber preprocessor caused by macros containing zero-dimensional primitives (circles, polygons, and line draws) when their data required booleanization.
Resolved a potential race condition in the boolean library related to logging during booleanization when a boolean handle spawns child instances.
QisMLib 1.32 10/4/2024
QisMOdbScan
This version includes:
New Feature: Introduced the ability to scan and report feature attributes.
Bug Fix: Resolved an issue that occurred when processing steps with very long lists of layers (over 1KB of characters total).
QisMOdbScan Abort feature
This version includes a new feature with the ability to abort the ODB file loading process mid-operation.
Code implementation for mid-operation abort:
In order to implement the mid-operation abort feature you will need to make use of the call back functionality provided in QisMOdbPSNotify.
This class is defined in the QisMOdbPS extension header: `qismodbps.h`.
By implementing this class and passing it to `QisMOdbPS::Load_odb(...)` you will get regular updates during the process and have the ability to continue or abort.
QisMLib 1.282 12/4/2023
Abort Rasterization
This version includes a new rasterization abort/stop mechanism.
This version includes improvements and bug fixes when handling Gerber data.
This version includes the new API to register with the scripting run-time, object handles (file database, rasterizer, exploder etc.) that were created using the C++ APIs. Previously, the application could only add string variables to the scripting run-time. You can download the package here
QisMLib 1.281 12/1/2023
QisMLOA Update
This version has a fix to qismloa64.dll for the crash in the new annotation set.
QisMLib 1.28 11/20/2023
ODB++ transformations
This version includes support for applying transformations (rotate in multiples of 90, scale in X & Y, reflect about X, Y and XY) when loading ODB++ data. This support is available via the C++ API (qismodbps.h), script command (odbps.load) as well as command-line utility qismodbrip64.exe.
Terminating the rasterization in QisMRaster
This version includes support for terminating the rasterization in QisMRaster.
QisMLib 1.271 10/6/2023
Apply a mask to a raster image
This version includes support and sample code to apply a mask to a raster image.
Software Updates
Bug fix related to paths with "spaces" in ODB++ components.
Faster rasterization of "circular flashes" in Gerber data.
The custom dithering feature, qismoemdither.h, is now a part of this package. Note - During installation, the user should make sure the "QisMoemDither" feature is checked (by default it is checked).
QisMLib 1.27 8/26/2023
Enhanced Gerber and ODB++ Importers
This release has improvements and bug-fixes in the Gerber and ODB++ modules of QISMLIB.
QisMLib 1.252 05/12/2023
Windows and Linux initial release with Gerber, ODB++, and Annotation Extension.
This version includes the latest binaries for QisMLib with MRTCR, Gerber, ODB++, QISMLOA on Windows and Linux.
This version supports opening and rasterizing ODB++ files defined as .ZIP, .TAR, .TGZ and folder versions.
The new ODB++ importer quietly ignores symbol feature files and folders that should contains the respective feature file if they do not exist rather than hang as in the previous version.
QisMLib 1.25 04/20/2023
QisMLib installation Issue
This release fixes an issue with a newly released QisMLib installation (v1.25) which failed if only QisMRaster was selected during installation.
QisMLib 1.24 02/24/2023
New extension QisMOdbPS
This package contains a new extension QisMOdbPS which allows the user to create a paint & scratch spatial database (QisMFile object) from ODB++ files.
Once you have created the database, you can then use it along with the QisMRaster API to achieve the rasterization objectives just like QisMGbrPS. The QisMOdbPS API and flow is just like QisMGbrPS. In fact, there is no real distinction between Gerber or ODB++ data once this database is created.
[install]/artwork contains the extension at qismodbps64.dll. As with all QisMLib extensions, whichever config (.cfg) file you use with QisMLib, the user needs to make sure this extension is listed as EXTENSION=qismodbps64.dll. The default config file qismlib.cfg and the scripting config file qismscript.cfg will have this entry already.
You can find the API and script reference at ${install}/reference/qismodbps.html.
In [install]/scripts you will find a sample odbrip.script and a corresponding odbrip.bat to run it.
You will need license for product no. 11502 to load the ODB++ file. Each active instance of the corresponding database will hold one such license until it is destroyed. You can have multiple such databases active at any time. Loading ODB++ files and unloading the database are not thread safe and therefore should be executed sequentially.
QisMLib 1.23 08/30/2022
New extension QisMBoolUtil
This release contains a new extension QisMBoolUtil that can be used to create a new database from a unionized/sized view of a source db.
artwork folder contains a new DLL qismboolutil64.dll. Please make sure this is listed in the config file used by your application.
include folder contains a new header file qismboolutil.h.
reference folder contains the HTML qismboolutil.html.
scripts folder contains a sample script/batch file to create a GDSII from the sized/unionized input.
The Application Flow - QisMBoolUtil is designed so that your application flow for working with GDSII/OASIS is nearly the same as GERBER.
Custom Dithering - This release also contains an updated QisMRaster with support for a custom API for you to apply 4x4 dithering to a monochrome image in memory. No new license required.
QisMLib 1.22 6/30/2022
Gerber import bug fix
This version fixes a bug where a leak in the open file handles resulted in file open errors after 507 gerber loads. This problem is specific to Windows and GDSII files (QisMGbrPS uses GDSII as the intermediate format). Apparently, Windows by default limits the number of open file handles to 512 (can be changed upto a hard limit of 8192).
QisMLib 1.21 6/7/2022
New QisMLOA Annotation Extension
This version contains the new QisMLOA Annotation Extension which helps create annotations (text, bar codes and QR codes) that can be output to the rasterizer, Boolean or merged into a GDSII file. Ideal for device serialization.
QisMLOA Additional Information
The qismloa64.dll extension (plug-in) is located in the artwork directory and it provides the core LOA functionality and API.
In the same folder you will also find the loaclient64.exe console application that makes use of QisMLib and QisMLOA to define and merge annotations with a GDSII/OASIS source.
Note that loaclient.cfg (used by loaclient64.exe), qismscript.cfg (used by qismscript64.exe) and qismlib.cfg (the default config. file) all list EXTENSION=qismloa64.dll so that this extension is loaded by qismlib64.dll during initialization (QisMLib_initialize_once()).
The C++ header file qismloa.h can be found in the include directory. It is fully documented in-line with the code.
The examples folder contains a batch file loaclient.bat that demonstrates the use of the console application.
The scripts folder contains a script file loa.script and a batch file loa.bat to execute that script using qismscript64.exe. The script follows the same basic flow as the console application.
The samplecode directory contains an empty VC++ 2015 project qm_app.sln. Open this project and add the file loa_sample.cpp in order to build a sample program that follows the same flow as the console application (albeit with reduced options). Upon building, the sample application qm_app.exe will be automatically copied to the artwork directory.
You can make a demo run of this sample application using the batch file loa_sample.bat in the examples directory.
QisMLib 1.202 05/02/2022
New Subsampling function for improving moire
This release contains the latest QisMRTCR modules with support for 2x2 sub-sampling to improve Moire patterns.
Here is a summary of the relevant changes:
The 2x2 sub-sampling function is now available to the QisMRTCR module.
qmrtcrclient64.exe (application) has a new command-line argument -subsample OR -subsample:[recipe]. If this argument is used, the raster images will be downsized by 2x before being written to disk. If -subsample is used, the built-in default recipe shall be used. Alternatively, you can specify your own recipe using -subsample:[recipe]. [recipe] is a string of exactly 16 1's and 0's. No commas or spaces required. E.g -subsample:0000000100010111 makes use of the default recipe (same as -subsample).
-subsample or -subsample:[recipe] can also be specified inside a config. file just like the other arguments.
There is a new formatting option -tiff:packbits64 to generate TIFF files larger than 4GB.
Here is the HTML document for the qmrtcrclient64.exe command-line.
Here is the HTML document for 2x2 sub-sampling.
QisMLib 1.201 03/29/2022
Software Updates
This version contains a bug fix for qismsnputil64.dll/so.
This version contains sample code which demonstrates the use of QisMExploder and QisMBool APIs.
QisMLib 1.19 12/3/2021
New API QisMGbrPS with Gerber Raster Support
This version includes support for writing your own Gerber raster application.
Useful information
Assuming you install the software in a directory called [install_dir]:
In [install_dir]/include, you will find all the header files for using various QisMLib APIs.
On Windows, [install_dir]/lib contains the symbols definition library (qismlib64.lib) if you choose to bind qismlib64.dll to your application at build time. Alternatively, you can load qismlib64.dll directly on-demand at run-time using the LoadLibrary, GetProcAddress, FreeLibrary Win32 APIs.
The sample code that demonstrates a simple Gerber rip flow can be found in [install_dir]/samplecode. To do so, follow these steps:
- Open the sample VC++ 2015 project qm_app.sln. This contains one empty project - qm_app.vcxproj
- Add qm_gbrip.cpp to the qm_app project
- Build the project in Release mode. The sample application executable (qm_app.exe) will be created in [install_dir]/artwork
- Run the application using the sample batch file [install_dir]/samplecode/qm_app_gbrip.bat
The steps to use the sample code on Linux is same as Windows except:
- Use [install_dir]/samplecode/qm_app_gbrip.demo to **build and execute** the sample code. The executable will be created at [install_dir]/artwork/qm_app.exe and can be launched using the script [install_dir]/artwork/qm_app
The qm_gbrip sample code uses the sample flow as the script [install_dir]/scripts/gbrip.script. It makes use of the QisMGbrPS api to load a Gerber file into QisMLib and then rasterize it using the "Large disk image" model of rasterization in the QisMRaster API.
The large disk image model creates a raster image on disk. It is used when there is not enough RAM to hold the entire image buffer in memory.
QisMRaster also offers two other models of rasterization:
- "Image in memory" model allows you to rasterize and access the image bits in a memory buffer (provided there is sufficient memory). Here you create one or more rasterizer objects and then use those objects to generate raster images. Each rasterizer can only rasterize one image at a time.
- "Many small images" model allows you to rasterize multiple images (that are not very large) in parallel threads for maximum throughput. All the multi-threading is handled within the API. You application will receive the images in memory using C++ callbacks.
NOTE -- When working with a database created using QisMGbrPS, ONLY use those QisMRaster rasterization functions that have been marked as "pns_v2" (paint & scratch). This is because QisMGbrPS creates a database in a special format that maintains the paint and scratch information associated with Gerber designs. Using non-pns_v2 functions of QisMRaster will result in wrong looking outputs as they are intended for positive-only (GDSII/OASIS style) data.
QisMLib 1.04 Windows & Linux 5/7/2019
Software Updates
Bug fix qismraster64.so/dll - Raster compare for two files crashed when the cells to be compared have different names.
New API qismraster.h, qismraster64.so/dll for creating an image writer as if it were a stream.
Bug fix qismxor2files64.exe- Misleading error message when the comparison aborted for the reason that the number of differences exceed the specified limit.
QisMLib 1.03 Windows & Linux 5/1/2019
New Layermap feature QisMRstrCmp2Files and QisMXor2Files
New feature in QisMRstrCmp2Files and QisMXor2Files to allow user to compare two different layer numbers from two input files.
-layermapA:{mapping} and -layermapB:{mapping} to equate layers in the two files for comparison.
Example1: -layermapA:ALL-NULL,1-2,2-1 -layermapB:ALL-NULL,1-1,2-2
will map and compare fileA:1:* to fileB:2:* and fileA:2:* to fileB:1:*. All other layers will be dropped from loading.
Example2: -layers:1,2
will compare 1:* and 2:* in A and B (same as using -layermapA:ALL-NULL,1-1,2-2 and -layermapB:ALL-NULL,1-1,2-2)
Example3: qismxor2files64.exe +inputA:File1.gds -layermapA:ALL-NULL,1-1,4-2,12-3 +inputB:File2.gds -layermapB:ALL-NULL,1-1,22-2,23-3 +output:xor.gds -log:xor.log
This command will compare File1.gds layer 1 to File2.gds layer 1, layer 4 to 22 and 12 to 23.
New Layermap feature HExtrcator, QisMCorrections, ClipExtract
New option -layermap:{mapping} to re-map layers at load time.
These apps extract qualified layer data on the same layers as they were loaded. Therefore, using -layermap: has the appearance of controlling the layer numbers in the extracted output.
Example: -layermap:ALL-NULL,4-111:0 will drop all layers except 4:*.
These will be mapped to 111:0 (all datatypes merged) at load time and therefore any data extracted on this layer will also show up on 111:0 in the output.
QisMLib 1.02 package (full set) with QisMCorrX and QisMRstrCmp2Files 2/10/2019
New QISMCORRX - API/APP to apply multi-point corrections to GDSII/OASIS/DBLOAD data
New API/APP used in conjunction with QisMRaster to correct data to accommodate distortion of the substrate to be imaged.
Application: ${install}/artwork/qismcorrections64(.exe)
Extension: ${install}/artwork/qismcorrx64(.dll, .so)
Demo script: ${install}/examples/qismcorrx*demo*
Readme: ${install}/reference/qismcorrections.readme
API: ${install}/include/qismcorrx.h
Sample code: ${install}/samplecode/corrections.cpp
QisMLib 1.021 Linux 2/10/2019
Optimization Flag
Compiled QisMRaster with proper flags to improve speed.
QisMLib 1.02 package (full set) with QisMCorrX and QisMRstrCmp2Files 2/10/2019
New QISMCORRX - API/APP to apply multi-point corrections to GDSII/OASIS/DBLOAD data
New API/APP used in conjunction with QisMRaster to correct data to accommodate distortion of the substrate to be imaged.
Application: ${install}/artwork/qismcorrections64(.exe)
Extension: ${install}/artwork/qismcorrx64(.dll, .so)
Demo script: ${install}/examples/qismcorrx*demo*
Readme: ${install}/reference/qismcorrections.readme
API: ${install}/include/qismcorrx.h
Sample code: ${install}/samplecode/corrections.cpp
QISMRSTRCMP2FILES - APP to compare two GDSII/OASIS/DBLOAD files using rasterization
New API/APP to compare two GDSII/OASIS/DBLOAD files using rasterization (QisMRaster) and image compare (${install}/artwork/qismxor2files64). This approach can be much faster than a standard boolean XOR between two sets of data (approach which requires flattening the data).
Application: ${install}/artwork/qismrstrcmp2files64(.exe)
Extension: ${install}/artwork/qismraster64(.dll, .so)
Demo script: ${install}/examples/rstrcompare*files*demo*
Readme: ${install}/reference/qismrstrcmp2files.readme
QISMClipextract v2.101, QISMLib/QISMRaster 1.011 10/30/2018
Software Update
This version fixes a problem which was introduced in the previous version which have resulted in incorrect raster images in situations where a polygon width/height/box is <= 1 pixel.
QISMClipextract v2.10 Windows/Linux 10/25/2018
Speed Improvement
Speed improvement was made in a marginal case where an extremely long polygon along Y (~1m long) passed a relatively small window (1000 x 1000um) and was being rasterized at a very fine resolution (0.02um/px). In a situation like this, the memory footprint of the rasterizer shot up significantly (multiplied by number of exploder threads) affecting the application performance. This has been fixed in the new revision.
QISMClipextract v2.09 Windows/Linux 2/20/2018
Visual Studio Sample Code
This release includes a sample Visual Studio solution for a customer to demonstrate the use of QisMLib and QisMClipExtract
for extracting images.
QISMClipextract v2.08 Windows/Linux 1/23/2018
C++ Only version
QISMClipextract contains new structure of the install folders with more examples. No C# code in this release.
Clipextract v2.07 Windows 11/5/2017
Load Function Update
This version fixes a bug in the file load function which caused it to crash after the load function was called a certain number of times.
Clipextract v2.06 Windows 09/08/2017
Updated clipextract_cs.exe
In this new package, the sample C# program (clipextract_cs.exe) now supports the -lsynth option to generate clips of polygons using layer operations.
Clipextract v2.05 Windows 08/01/2017
Incorrect Clips due to Rounding Error
This version fixes a bug that caused rounding error when converting floating point values to integer resulting in output co-ordinate values such 69999 instead of 70000.
New Installation Folders and Examples
Upon installation, there will be a new folder called 'qismlib_cs Source' which contains the source code and a Visual Studio 2008 .NET project to build qismlib_cs.dll. When you build this project, it will make a copy of the new qislib_cs.dll and qismlib_cs.xml to the installation directory so that it is ready for use.
There will also be a new folder 'CS Sample' which contains the source code and VC# 2008 project to build a sample application that uses qismlib_cs.dll - When you build the project, a copy of clipextract_cs.exe will be created in the installation directory so that it is ready for use.
In 'Example Files', there is a new batch file 'extract-demo-cs.bat' which provides a sample run of this new C# based exe. To see all the command-line options of clipextract_cs.exe, Please run clipextract_cs.exe -h. Please be aware that there are some slight differences in the command-line syntax between clipextract64.exe and clipextract_cs.exe.
Clipextract v2.04 Windows 08/01/2017
New Features
Multiple file support in QisMLib. The software creates each instance of the file using IQisMLib.Load_file(..) and destroys it using IQisMLib.Unload_file(..)
New C# interface in form of qismlib_cs.dll - The documentation for the C# API can be found in VC# Object browser when qismlib_cs.dll is added as a reference.
Clipextract v1.001 Windows 09/06/2016
Initial Windows Release
We now have a Windows 64 version of clipextract (including, of course, the underlying libraries: QISLib_MT, QISBool, acsRasterFmt
Clipextract v1.00.1 Linux 08/31/2016
Bug Fix Parsing Window File on Command Line
Failed to read window files (@window:CWH:) where the first line was commented out (expecting width, height). Now, the very first valid line is read as width,height.
QISLIB v2.94.1 Linux64 08/23/2016
Initial Release on Linux
The QISLib_MT has been released as a part of a sample application called Clip Extract v1.00.
product IDs for licensing are:
|