qislib_mt_web_page_logo.gif

QisMFile API

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)

api and classes for qislibm.so QisMlib API QisMFile API QisMExplode API QisMDraw API QisMBool API QisMView Super Class

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;



Load2Mem Control

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;


Get list of cellnames that are not top cells

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;