This API group is used primarily to define any layer and text filters prior to loading a layout file; it is also used to get a list of cells (including figuring out the top level cell)
Click on any of the API class boxes in the illustration to get details on specific functions.
Layer and Text (input) Filtering
Before a layout file has been opened in order to define the parameters of the QisMFile Load Control Object.
Set/get an input layer map to filter/map layers of interest
A layer map is an ASCII table (or list) the defines which layers are to be loaded. When dealing with very large, multi-layer input files, it makes sense to only load the layers that one will need to use. This reduces load time and memory footprint.
virtual void Layer_map(const char* layerMap) = 0;
virtual const char* Layer_map() const = 0;
Set and get a flag to load/ignore text entities
Many layout files have a large number of text entities used to annotate the design. If one is doing purely geometric operations one does not need these text entities and by filtering them at load time one reduces the load time and memory footprint.
Of course, if the client is a display application and wanted the text to be visible, then don't filter them out at load time.
virtual void Ignore_texts(const bool set_ = true) = 0;
virtual bool Ignore_texts() const = 0;
Reset to default settings
virtual void Reset_to_defaults() = 0;
Load the file data into memory or access them from the file on disk
For maximum performance the entity data should be loaded into memory. The only exception is if the layout is so large that the entity data will overflow the available memory and cause the operating system to page.
virtual void File_data_on_disk(const bool set_ = true) = 0;
virtual bool File_data_on_disk() const = 0;
Information about Cells and Layers
These functions can only be used after a layout file has been opened/loaded. They are useful when an application wants to present the list of cells or layers with data to the user.
Get the name of the default top cell
virtual const char* Get_default_top_cell() const = 0;
Get the list of cellnames loaded into the database
virtual int Get_cell_list(char**& listPtr) const = 0;
Get the list of top cellnames loaded into the database
virtual int Get_top_cell_list(char**& listPtr) const = 0;
virtual int Get_non_top_cell_list(char**& listPtr_) const = 0;
Get list of names for (child cells) of the specified cell
virtual int Get_cell_children_list(const char* cellname, char**& listPtr) const = 0;
Release the memory allocated to store a list of cellnames
virtual void Free_cell_list(char** list, const int count) = 0;
Get extents (min-max box) of a cell
virtual bool Get_cell_extents(const char* cellname, QisMWindow& extents) const = 0;
Get list of layer and datatype pairs currently loaded into the database
virtual int Get_layer_list(unsigned short*& layers, unsigned short*& dttps) const = 0;
Release the memory allocated to store a list of layer or datatype numbers
virtual void Free_layer_list(unsigned short* layersOrDttps) = 0;
Identify a given cell with a unique number
virtual int Get_cell_index(const char* cellname) const = 0;
Get the cellname for a given cell identifier
virtual const char* Get_cell_name(const int index_) const = 0;
Get file report (as a string)
virtual const char* Get_file_report() const = 0;
Get the size of a single database unit (resolution) in terms of the file units
virtual double Grid() const = 0;
Get the size of a single database unit in meters
virtual double Units() const = 0;
Create (and Destroy) an Exploder Instance
An exploder instance can only be created once a layout is already loaded. In order to extract data from a window you must have an exploder instance. (Both QisMDraw and QisNtrace create their own exploder instance. ClipExtract also contains convenience functions which themselves use the exploder API.)
Create an independent instance of the exploder to get vector data
virtual QisMExploder* Create_exploder() = 0;
Destroy an instance of the exploder
virtual void Destroy_exploder(QisMExploder* handle) = 0;