QisMFile APIThis 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) FilteringBefore 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 ControlLoad 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 LayersThese 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 InstanceAn 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; |