[Artwork] / [QisMLib] / [Programmer's Corner]
- The complete API details can be found in the respective C++ header files (.h)
- All the relevant header files are placed in the include folder of every QisMLib installation
List of available APIs with QisMLib QisMLib QisMFile QisMWindowProbeQisMExploder QisMBool QisMClipper QisMExplCounter QisMLog QisMFileOutQisMWinQQisMLayerSynthQisMClipExtractQisMRasterQisMNtrcQisMBoolFilesQisMCorrXQisMHExtractQisMRTCR (GDSII only, WINDOWS only)QisMScriptQisMGerber
Gateway to the QisM system
Header : qismlib.h
Binary : qismlib64.dll / libqism64.so
License : 1 x (11003) per process
QisMLib_initialize_onceQisMLib_close_onceKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMLib_initialize_once | Initialize the QisM system once at the start of the program to get a handle to the QisMLib API | |
QisMLib_close_once | Close the QisM system once at the end of the program | |
QisMLib | Load_file | Create a new database from a GDSII/OASIS/DBLOAD file |
QisMLib | Unload_file | Destroy a database |
QisMLib | Get_extension_api | Get access to other APIs in the system |
API to work with a database created from a GDSII/OASIS file
Header : qismfile.h
Binary : qismlib64.dll / libqism64.so
License : -
Key features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMFileLoadCtrl | Set_layer_map | Filter/re-map one or more layers during database creation |
QisMFileLoadCtrl | Set_ignore_texts | Drop TEXT data during database creation |
QisMFile | Get_default_top_cell | Get the name of the (default) root cell with the deepest hierarchy and the largest extents |
QisMFile | Get_cell_list | Get a list of cell names in the database |
QisMFile | Get_top_cell_list | Get a list of root cell names in the database |
QisMFile | Get_cell_children_list | Get a list of cell names referenced directly by the given cell |
QisMFile | Get_cell_extents | Get the extents of the given cell (lower-left, upper-right) |
QisMFile | Get_layer_list | Get a list of layers and datatypes in the database |
QisMFile | Grid | Get the size of 1 grid expressed in the file units (um, mm, inch etc.) e.g for a um file, Grid() == 0.001 implies nm resolution |
QisMFile | Units | Get the size of 1 grid expressed in meters e.g for a um file with Grid() == 0.001, Units() == 1e-9 (nm) |
QisMFile | Create_exploder | Create one instance of the spatial query object (exploder). Requires 1 x (11027) license per call |
API to conduct a probe on a specific view (cell, layers, window, nesting level) of the database to collect statistical information corresponding to a set of user controlled parameters
Header : qismwindowprobe.h
Binary : qismlib64.dll/libqism64.so
License : 1 x (11113) per probe object
QisMWindowProbe::Create_probeQisMWindowProbe::Destroy_probeKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMWindowProbe | Create_probe | Create an instance of the probe object |
QisMWindowProbeObj | Set_probe_param | Turn a specific probe parameter on or off |
QisMWindowProbeObj | Probe_window | Collect information for the specified window |
QisMWindowProbeData | Get_param_info | Get information collected corresponding to a specific parameter |
QisMWProbeParam | List of parameters to be probed for a given window |
API to run spatial queries and collect data vectors (boundary, path, text, reference) crossing a view of the QisMFile database (cell, layers, window, nesting level)
Header : qismview.h, qismexploder.h
Binary : qismlib64.dll / libqism64.so
License : 1 x (11027) per exploder object
QisMFile::Create_exploderQisMFile::Destroy_exploderKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMView | Set_view_cell | Set the view cell (name) |
QisMView | Set_layers_on | Show/hide one or more layers |
QisMView | Set_text_on | Show/hide TEXT items |
QisMView | Set_exact_window | Set a rectangular view window |
QisMView | Set_nesting_level | Show ALL or a specific nesting level |
QisMExploder | Set_convert_paths_to_boundaries | Convert paths to boundaries |
QisMExploder | Get_vector_data | Collect data vectors from the set view (run a spatial query) as a series of callbacks (1 per vector) |
QisMExploderV2 | Get_boundaries | Get only polygons from the set view in form of a container |
QisMExploderV2 | Get_cell_references | Get only reference vectors to a given cell from the set view |
QisMExploderV2 | Get_cell_tree | Get the entire sub-tree of a cell in form of reference vectors |
QisMNotify | On_qismt_vector | Notification/callback to receive a data vector |
API to perform operations (union, intersection, xor, difference, clipping, sizing etc.) on large sets of polygons
Header : qismbool.h
Binary : qismlib64.dll / libqism64.so
License : 1 x (11047) per boolean object
QisMBool::Create_instanceQisMBool::Destroy_instanceKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMBool | Create_instance | Create an instance of the boolean object |
QisMBool | New_settings | Create an instance of the settings object |
QisMBoolInst | UnionMT | Unionize a set of polygons using multiple threads |
QisMBoolInst | BinaryMT | Perform binary operations between two sets of polygons using multiple threads |
QisMBoolX | Find_connected_sets | Group a set of polygons into multiple sets based on connectivity (touching or intersection) |
QisMBoolSettings | Set_clip_window | Set a rectangular clipping window |
QisMBoolSettings | Set_max_points | Set the max. number of points for a polygon in the output (break the ones larger then this) |
QisMBoolSettingV2 | Set_param | Set one of the various parameters that controls the output of the boolean operations |
API clip a set of paths/boundaries against a set of rectangular or polygonal windows
Header : qismclipper.h
Binary : qismlib64.dll / libqism64.so
License : 1 x (11047) per clipper object
QisMClipper::Create_poly_instance, Create_box_instanceQisMClipper::Destroy_instanceKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMClipper | Create_poly_instance | Create a clipping object for polygonal clipping windows |
QisMClipper | Create_box_instance | Create a clipping object for rectangular clipping windows |
QisMClipperObj | Clip_boundaries | Clip a set of boundaries using multiple threads |
QisMClipperObj | Clip_path | Clip one path (output is one or more boundaries) |
QisMClipperObj | Boundary_interaction | Test the interaction of a boundary with the specified windows |
QisMClipperObj | Path_interaction | Test the interaction of a path with the specified windows |
QisMClipperObj | Point_interaction | Test the interaction of a point with the specified windows |
API to get exploded (flat) vertex/polygon counts for a given set of layers of a cell of a QisMFile database
Header : qismexplcounter.h
Binary : qismlib64.dll / libqism64.so
License : -
Key features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMExplCounter | Get_counts_hierarchical | Compute counts using a hierarchy traversal algorithm for fast results |
QisMExplCounter | Get_counts_full | Compute counts using multiple threads with the option for specifying a window |
QisMExplCounterV2 | Get_counts_nl | Get_counts_full with control for nesting level |
QisMExplCounterV3 | Break_window_by_vertnum | Break one or more windows into adjacent, non-overlapping tiles based on the no. vertices contained within |
API for thread-safe logging from both inside and outside the QisM system. Requires logging to be enabled/setup during QisMLib_initialize_once
Header : qismlog.h
Binary : qismlib64.dll / libqism64.so
License : -
Key features
FILE*, receive callbacks etc. ACS_VERBOSE=ON or ACS_VERBOSE=OFF to enable/disable detailed loggingKey classes & operations
| Class | Operation | Description |
|---|---|---|
QisMLog | Log_msg | Send a message to all log targets |
QisMLog | Screen_msg | Send a message to stdout/stderr only |
QisMLog | Verbose_msg | Send a message depending on the state of the ACS_VERBOSE environment variable |
QisMLogCb | On_qismlog_msg | Callback/notification when a log message have been transmitted anywhere in the QisMLib system |
API for writing polygons to a GDSII/OASIS/TIFF/BMP/RAW file
Header : qismfileout.h
Binary : qismlib64.dll / libqism64.so
License : 1 x (14827) per call required only for writing image files
QisMFileOut::Open_image_writerQisMFileOut::Close_writerKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMFileOut | Open_vector_writer | Create a GDSII/OASIS writer |
QisMFileOut | Open_image_writer | Create a TIFF/BMP/RAW writer (requires the QisMRaster extension) |
QisMBndryWriter | Boundary, Boundaries | Write one or more boundaries |
API to run a multi-threaded queue of windows on an operation defined by the client
Header : qismwinq.h
Binary : qismlib64.dll / libqism64.so
License : 1 x (11117) per queue
QisMWinQapi::Create_queueQisMWinQapi::Destroy_queueKey features
Provides two modes of operations :
New windows can be added to the queue once execution begins
The window processor is supplied by the client
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMWinQapi | Create_queue | Create a queue object |
QisMWinQ | Run | Run queue in standard mode |
QisMWinQ | Run_hungry | Run queue in hungry mode |
QisMWinQ | Pre_add_window | Add one or more windows to the queue before execution begins |
QisMWinQ | Wait_for_threads | Wait for all the threads to finish |
QisMWinQProc | Process_winq_window | Callback to the window processor when a window is available to be processed |
QisMWinQLive | Live_add_window | Add one or more windows to the queue after execution has begun |
QisMWinQLive | Stop | Stop the execution of the queue |
API for synthesizing new layers of polygons based on an expression involving operations (union, or, intersection, xor, difference) between existing layers of a QisMFile database
Header : qismlayersynth.h
Binary : qismlayersynth64.dll / qismlayersynth64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : 1 x (11069) per synthesizer object
QisMLayerSynth::New_synthesizerQisMLayerSynth::Delete_synthesizerKey features
A variety of boolean operators -- union + , intersection & , difference - , xor ^ , or/aggregation (without union) | , assignment =
Use an linear notation for simple expressions e.g "0:0=1-2:2&3"
12:2 from it3Use a postfix notation (preceded by @) for complex expressions e.g "@1 2:2 - 3 4:4 ^ & 0:0 ~"
12:2 from it and save the result -- A34:4 and save the result -- BA and B0:00:0 = (1-2:2) & (3^4:4)Multi-threaded computations for faster results
Send the results to QisMBool , QisMCorrX for additional processing or QisMRaster for generating images, QisMFileOut for writing files on disk
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMLayerSynth | New_synthesizer | Create new instance of the synthesizer object |
QisMLayerSynthObject | Synthesize_layers | Execute layer synthesis based on a layer expression |
LSynthNotify | Synthesized_polygon | Notification/callback to receive a synthesized polygon |
API for extracting lots of tiny clips of polygons in parallel threads as GDSII/OASIS/TIFF/BMP/RAW files on disk or a collection/raster image in memory from a QisMFile database
Header : qismclipextract.h
Binary : qismclipextract64.dll / qismclipextract64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : N x (31209) where N = no. clips to extract in parallel (no. extraction threads)
QisMClipExtract::Extract_image , QisMClipExtract::Extract_polygonsKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMClipExtract | Extract_image | Extract the specified set of windows (clips) as raster images |
QisMClipExtract | Extract_polygons | Extract the specified set of windows (clips) as polygons |
QisMClipExtractV2 | Extract_synthesized_polygons | Extract the specified set of windows (clips) as polygons synthesized from a layer expression (requires the QisMLayerSynth extension and license) |
QisMClipExtractNotify | On_clipextract_image | Notification/callback to receive a clip as image |
QisMClipExtractNotify | On_clipextract_polygons | Notification/callback to receive a clip as a set of polygons |
API to generate high resolution monochrome raster images (1 bit/pixel) from a QisMFile database
Header : qismraster.h
Binary : qismraster64.dll / qismraster64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : 1 x (14827) per rasterizer object
QisMRaster::Create_rasterizer , QisMRasterV2::Open_file_writerQisMRaster::Destroy_rasterizer , QisMRasterV2::Close_file_writerKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMRaster | Create_rasterizer | Create an instance of the rasterizer object |
QisMRaster | Create_formatter | Create an instance of the formatter object |
QisMRasterV2 | Open_file_writer | Open a TIFF/BMP/RAW |
QisMRasterWriter | Boundary | Write a polygon to the TIFF/BMP/RAW file |
QisMFormatter | Write_tiff, Write_bmp , Write_raw | Write the contents of an image buffer to a TIFF/BMP/RAW file |
QisMRasterizer | Rasterize_window | Generate a raster image (buffer) from a view (cell, layers, window) of the database |
QisMRasterizer | Rasterize_window_synthesized | Generate a raster image (buffer) from the result of a layer expression over a window of the database (requires the QisMLayerSynth extension and license) |
QisMRasterizer | Rasterize_polygon_set | Generate a raster image (buffer) from a set of polygons |
QisMRasterizerV2 | Overlay_polygon_set | Overlay a set of polygons on an existing raster image (buffer) |
QisMRasterV3 | Rasterize_win_queue_mt | Rasterize a queue of windows with control over no. window threads v/s no. threads per window |
API to trace nets of connected METAL (conductors) and VIA (dielectric) polygons based on a pre-defined stackup for a given QisMFile database
Header : qismntrc.h, qismstackupdb.h
Binary : qismntrc64.dll / qismntrc64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : 1 x (11059) per tracer object
QisMNtrc::Open_traceQisMNtrc::Close_traceKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMNtrc | Open_trace | Create an instance of a net tracer object |
QisMNtrc | New_stackup | Create a new stackup definition |
QisMNtrcTracer | Point_trace | Trace a net from a single point on a METAL layer |
QisMNtrcTracer | Region_trace | Trace one or more nets that cross a region of the layout (hot spot) |
QisMNtrcNotify | Begin_net, Net_boundary, End_net | Notifications/callbacks to receive a net |
API to perform boolean operations (union, or, difference, intersection, xor) over a set of windows between two QisMFile databases
Header : qismboolfiles.h
Binary : qismboolfilesextn64.dll / qismboolfiles64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : N x (11071) where N = no. windows to be processed in parallel (no. window threads)
QisMBoolFiles::Booleanize_two_filesKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMBoolFiles | Booleanize_two_files | Execute a boolean operation over a set of windows for the specified databases |
QisMBoolFilesClient | On_qismboolfiles_window_mt | Callback/notification to receive the results of boolean operations on a single window |
API to apply corrections (bilinear transformation) on a view of the QisMFile database based on one or more known correction points
Header : qismcorrx.h
Binary : qismcorrx64.dll / qismcorrx64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : 1 x (11093) per correction object
QisMCorrX::Create_correction_objectQisMCorrX::Destroy_correction_objectKey features
x,y (it's location in the source data) and dx,dy (the know correction at that point expressed as deltas)Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMCorrX | Create_correction_object | Create a new instance of the correction object |
QisMCorrXObj | Get_corrected_polys | Get corrected polygons from a view (layers, window) of the database |
QisMCorrXObj | Correct_polygons | Correct polygons in the specified set |
QisMCorrXNotify | On_corrected_polygons | Callback/notification to receive corrected polygons |
QisMCorrXObjV2 | Correct_points | Compute corrections for an arbitrary set of points |
QisMCorrXObjV2 | Rasterize_corrected_window | Generate a raster image from the corrected source window |
API to extract a view of the QisMFile database as a GDSII/OASIS file with hierarchy and clipping
Header : qismhextract.h
Binary : qismhextract64.dll / qismhextract64.so (plug-in/extension to qismlib64.dll/libqism64.so)
License : 1 x (11083) per extractor object
QisMHExtract::Create_extractorQisMHExtract::Destroy_extractorKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMHExtract | Create_extractor | Create an instance of the extractor object |
QisMHExtractor | Create_clipper, Create_box_clipper, Create_poly_clipper, Create_circ_clipper | Create a clipping object containing one or more rectangular, polygonal or circular clipping areas |
QisMHExtractor | Create_file_writer | Open a GDSII/OASIS file as a target for extracted cell definitions |
QisMHExtractor | Extract | Extract a view of the database |
QisMHExtractTarget | On_extract_begin_cell, On_extract_boundary, On_extract_path, On_extract_text, On_extract_sref, On_extract_aref, On_extract_end_cell | Callbacks/notifications to receive the definition for each extracted cell |
API to generate high resolution monochrome raster images from a view of a QisMFile database with corrections and annotations
To be used in conjunction with SFGen
Header : qismrtcr.h
Binary : qismrtcr64.dll (plug-in/extension to qismlib64.dll)
License :
1 x (1303) per RTCR job
QisMRTCR::Setup_jobQisMRTCR::End_job1 x (14827) per rasterizer object
QisMRTCRJob::Create_rasterizerQisMRTCRJob::Destroy_rasterizerKey features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMRTCR | Setup_job | Create a new RTCR job (source GDSII + corrections + annotations) |
QisMRTCRJob | Create_rasterizer | Create an instance of the rasterizer object |
QisMRTCRJob | Get_raster_image | Generate a monochrome raster image from the associated job using the associated rasterizer |
QisMRTCRJobV2 | Create_corrx_rasterizer | Create a rasterize to generate raster images from the results of second-level corrections to the source windows |
API to add scripting support to any API/feature/operation within the QisM system. The script engine can be invoked within any QisM client application or using a ready-to-use console application -- qismscript64.exe
Key features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMScriptRunner | Run_script_command, Run_script_command_v | Execute an available script command with the specified arguments |
QisMScriptRunner | Run_script_command_file | Execute a text file containing script commands |
QisMScriptRunner | Get_script_help | Get a complete list of available commands with usage as a string |
QisMScriptRunner | Add_var, Get_var | (From the client application,) define/query a script variable as a name=string_value pair that can be referenced by any subsequent script command |
QisMScriptRegister | Register_command | Register a command and command handler so that it is available to be executed by the script engine |
QisMScript | On_command | Callback/notification to the registered script handler to execute the a command associated with it |
QisMScriptUtil | Add_var, Get_var, Remove | (While executing a command,) define/query/delete a script variable as a type,name=object_handle pair that can be referenced by any subsequent script command |
QisMScriptUtil | Log_msg | (While executing a command,) create a log message to be reported back to the user via the QisMLog system |
API to create database from a Gerber source so that it can be used with other QisMLib APIs
Key Features
Key classes & operations
| Class | Operation | Description |
|---|---|---|
QisMGerber | Load_gerber | Create database from a Gerber file |
QisMGerberFile | File_db | Get a QisMFile handle to use this database with other QisMLib APIs |
QisMGerberFile | Save_to_gdsii | Create a GDSII file from the current database |