================================================================================ QISMBOOLFILES APP (c) Artwork Conversion Software Inc. www.artwork.com ================================================================================ Perform multi-threaded boolean operations between sets of polygons in two files using QisMLib and QisMBoolFiles extension ================================================================================ ================================================================================ ALSO REQUIRED ================================================================================ ||| WINDOWS (64 bit, VC 2008) -------------------------------------------------------------------------------- + qismboolfilesextn64.dll + qismlib64.dll + acsbool64.dll + zlibwapi.dll -------------------------------------------------------------------------------- ||| LINUX (64 bit, GCC 4+) -------------------------------------------------------------------------------- + qismboolfilesextn64.so + libqism64.so -------------------------------------------------------------------------------- ||| WINDOWS & LINUX -------------------------------------------------------------------------------- + qismboolfiles.cfg + colfill.pat + gdsfont.shx + acs.key -------------------------------------------------------------------------------- ||| LICENSE per execution -------------------------------------------------------------------------------- + 1 x QisMLib (11003) + N x QisMBoolFiles (11071) Where N = number of windows to be processed in parallel (command-line option -ntw:) ================================================================================ ================================================================================ COMMAND-LINE & USAGE ================================================================================ qismboolfilesapp +inputA:{file-A} +inputB:{file-B} +outdir:{output-dir} \ +op:{operation} [OPTIONS] -------------------------------------------------------------------------------- ||| REQUIRED ARGUMENTS -------------------------------------------------------------------------------- +inputA:{file-A} > Path to a valid GDSII, OASIS or DBLOAD file as the first operand -------------------------------------------------------------------------------- +inputB:{file-B} > Path to a valid GDSII, OASIS or DBLOAD file as the second operand -------------------------------------------------------------------------------- +outdir:{output-dir} > Path to a valid directory for creating output file(s) -------------------------------------------------------------------------------- +op:{OR | UNION | XOR | AND | DIFF} > OR : Aggregate polygons from both files without unionizing > UNION : Unionize polygons from both files > XOR : Compute XOR of polygons from file-A vs file-B > AND : Compute intersection of polygons from file-A and file-B > DIFF : Compute difference (file-A minus file-B) -------------------------------------------------------------------------------- ||| WINDOW SPEC. (OPTIONAL, MULTI-USE) If none specified, the cumulative extents of the view cells of the two files is used as the only window to be processed -------------------------------------------------------------------------------- [-window:LLUR,{output-name}:{llx},{lly},{urx},{ury}] > Add a window using the lower-left(ll) and upper-right(ur) co-ordinates (file units) > Final output file path will be: {output-dir} + {output-name} + {extension} -------------------------------------------------------------------------------- [-window:LLWH,{output-name}:{llx},{lly},{width},{height}] > Add a window using the lower-left(ll) co-ordinates and width, height (file units) > Final output file path will be: {output-dir} + {output-name} + {extension} -------------------------------------------------------------------------------- [-window:CWH,{output-name}:{cx},{cy},{width},{height}] > Add a window using the center co-ordinates and width, height (file units) > Final output file path will be: {output-dir} + {output-name} + {extension} -------------------------------------------------------------------------------- [@windows:LLUR,{output-name}:{list-file}] > Read a list of windows from a text file > Each line in the text file is a single window specified in {llx},{lly},{urx},{ury} format (file-units) > {output-name} names the file associated with this window. Exclude directory and extension > Final output file path will be: {output-dir} + {output-name} + ln{line-number} + {extension} -------------------------------------------------------------------------------- [@windows:WHLL,{output-name}:{list-file}] > Read a list of windows from a text file > The first line of the file MUST be the {width},{height} in file-units > Each subsequent line in the text file contains the lower-left point of a single window {llx},{lly} in file units > {output-name} names the file associated with this window. Exclude directory and extension > Final output file path will be: {output-dir} + {output-name} + ln{line-number} + {extension} -------------------------------------------------------------------------------- [@windows:WGC,{output-name}:{list-file}] > Read a list of windows from a text file > The first line of the file MUST be the {width},{height} in file-units > Each subsequent line in the text file contains the center point of a single window {cx},{cy} in file units > {output-name} names the file associated with this window. Exclude directory and extension > Final output file path will be: {output-dir} + {output-name} + ln{line-number} + {extension} -------------------------------------------------------------------------------- [-tiles:RXY,{output-name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{nx},{ny}[:{i},{j}]*] > Generate fixed-sized tiles from a region of interest > {output-name} names the file associated with this window. Exclude directory and extension > {roi_llx},{roi_lly},{roi_urx},{roi_ury} specifies the region of interest in file-units > {nx},{ny} represents the number of tiles along X,Y > One or more {i},{j} values can be specified to process only the ith,jth tile where 1 <= i,j <= nx,ny. Otherwise, process all tiles > Final output file path will be: {output-dir} + {output-name} + .{i}.{j} + {extension} -------------------------------------------------------------------------------- [-tiles:RWH,{output-name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{width},{height}[:{i},{j}]*] > Generate fixed-sized tiles from a region of interest > {output-name} names the file associated with this window. Exclude directory and extension > {roi_llx},{roi_lly},{roi_urx},{roi_ury} specifies the region of interest in file-units > {width},{height} represents the size of each tile along X,Y in file-units > One or more {i},{j} values can be specified to process only the ith,jth tile where 1 <= i,j <= nx,ny. Otherwise, process all tiles > Final output file path will be: {output-dir} + {output-name} + .{i}.{j} + {extension} -------------------------------------------------------------------------------- [-tiles:WHC,{output-name}:{width},{height}[:{cx},{cy}]+] > Generate fixed-sized tiles from a list of center points > {output-name} names the file associated with this window. Exclude directory and extension > {width},{height} represents the size of each tile along X,Y in file-units > {cx},{cy} represents the center point of each tile in file-units > Final output file path will be: {output-dir} + {output-name} + .{sequence} + {extension} -------------------------------------------------------------------------------- [-rand:CXY,{output-name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{width},{height}:{count}] > Generate a random set of fixed-sized tiles > {output-name} names the file associated with this window. Exclude directory and extension > {roi_llx},{roi_lly},{roi_urx},{roi_ury} specifies the region of interest in file-units > {width},{height} represents the size of each tile along X,Y in file-units > {count} is the number of tiles to be generated > Final output file path will be: {output-dir} + {output-name} + .{sequence} + {extension} -------------------------------------------------------------------------------- [-tiles:AUTO,{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{n-vert-per-tile}] > Generate a fixed sized tiles from a specific region of interest based on and estimate of the number of input vertices per tile {n-vert-per-tile} > Final output file path will be: {output-dir} + top + .{i}.{j} + {extension} -------------------------------------------------------------------------------- [-tilev:{n-vert-per-tile}] > If no window has been specified, the cumulative home view of the two files are used as the input window. However, since this window could be huge in terms of data, it is split into equal sized tiles for faster processing. > If specified, {n-vert-per-tile} is used to control how many tiles are generated from the home view -------------------------------------------------------------------------------- ||| VIEW SPEC. (OPTIONAL) -------------------------------------------------------------------------------- [-cellA:{cell-name}] > View cell for file-A > If not specified, the deepest top cell is used -------------------------------------------------------------------------------- [-cellB:{cell-name}] > View cell for file-B > If not specified, it is set to the view cell of file-A -------------------------------------------------------------------------------- [-layersA:{layer-list}] > Comma-separated list of layer(s) or layer:datatype(s) of interest from file-A > If not specified or "ALL", all layers of file-A are used -------------------------------------------------------------------------------- [-layersB:{layer-list}] > Comma-separated list of layer(s) or layer:datatype(s) of interest from file-B > If not specified it is set to the layers of interest from file-A > If "ALL", all layers from file-B are used -------------------------------------------------------------------------------- ||| OUTPUT SPEC. (OPTIONAL) -------------------------------------------------------------------------------- [-layerO:{output-layer:datatype}] > layer and datatype for the output polygons for all windows > Default: 0:0 -------------------------------------------------------------------------------- [-cellO:{cell-name}] > Name of the top cell for all output files > Default: TOP -------------------------------------------------------------------------------- [-format:{GDSII | NONE}] > GDSII: Generate flat GDSII output(s) > NONE: No output files created > Default: GDSII -------------------------------------------------------------------------------- [-merge:{output-file-name}] > Write all the windows to a single output file > Uses dynamic-windowing to break large windows in order to boost performance > Output file type depends on the -format: option > Final output file path will be: {output-dir} + {output-file-name} + {extension} > Default: Each window is written to it's own output file -------------------------------------------------------------------------------- THREAD SPEC. (OPTIONAL) -------------------------------------------------------------------------------- [-ntw:{num-window-threads}] > Specify the number of window/processor threads. Indicates the number of windows that will be processed in parallel > Requires 1 license of QisMBoolFiles per thread > Limited to the number of licenses available > Default: No. cores/2 -------------------------------------------------------------------------------- [-ntp:{num-threads-per-window}] > Specify the number of threads per window for boolean operations > Independent of licensing > Default: 2 -------------------------------------------------------------------------------- ||| BOOLEAN SPEC. (OPTIONAL) -------------------------------------------------------------------------------- [-noclip] > Do not clip polygons to the window extents > Default: OFF. Polygons are clipped to the window extents -------------------------------------------------------------------------------- [-sliver:{value}] > Remove polygons that are smaller then {value} specified in file-units > Default: 0.0 (no sliver removal) -------------------------------------------------------------------------------- [-maxvert:{max-vert-per-polygon}] > Set a max. number of vertices per polygon (>=4 and <=8190) > Default: 8190 -------------------------------------------------------------------------------- ||| MISC. -------------------------------------------------------------------------------- [-silent] > Do not write any messages to stdout/stderr > Default: Not silent -------------------------------------------------------------------------------- [-log:{log-file-path} | -log+:{log-file-path}] > Enable logging and specify the log file path > -log: Creates a new file, -log+ appends if that file exists > Default: No log file created ================================================================================ ================================================================================ VERSION HISTORY ================================================================================ -------------------------------------------------------------------------------- v1.2 (2018-6-26) + Compatible with QisMLib 3.20 (API break) -------------------------------------------------------------------------------- v1.1 (2018-2-23) + Enables QisMLib system-wide logging (QISM_ARG_LOGFP) ================================================================================