[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_once
QisMLib_close_once
Key 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_probe
QisMWindowProbe::Destroy_probe
Key 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_exploder
QisMFile::Destroy_exploder
Key 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_instance
QisMBool::Destroy_instance
Key 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_instance
QisMClipper::Destroy_instance
Key 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_writer
QisMFileOut::Close_writer
Key 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_queue
QisMWinQapi::Destroy_queue
Key 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_synthesizer
QisMLayerSynth::Delete_synthesizer
Key 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"
1
2:2
from it3
Use a postfix notation (preceded by @
) for complex expressions e.g "@1 2:2 - 3 4:4 ^ & 0:0 ~"
1
2:2
from it and save the result -- A
3
4:4
and save the result -- B
A
and B
0:0
0: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_polygons
Key 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_writer
QisMRaster::Destroy_rasterizer
, QisMRasterV2::Close_file_writer
Key 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_trace
QisMNtrc::Close_trace
Key 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_files
Key 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_object
QisMCorrX::Destroy_correction_object
Key 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_extractor
QisMHExtract::Destroy_extractor
Key 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_job
QisMRTCR::End_job
1 x (14827) per rasterizer object
QisMRTCRJob::Create_rasterizer
QisMRTCRJob::Destroy_rasterizer
Key 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 |