================================================================================ LAYERSYNTH APP COMMAND-LINE ================================================================================ $Revision: 1.46 $ $Date: 2018/07/02 23:02:18Z $ -------------------------------------------------------------------------------- layersynthapp64.exe +input: +outdir: +layerspec: [WINDOW SPEC] [MISC OPTIONS] -------------------------------------------------------------------------------- REQUIRED ARGUMENTS :- -------------------------------------------------------------------------------- +input: -------------------------------------------------------------------------------- + Specify the path to a valid GDSII/OASIS or DBLOAD file -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- +outdir: -------------------------------------------------------------------------------- + Specify an exisiting directory where the output file will be created -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- +layerspec: -------------------------------------------------------------------------------- A. DEFAULT SPEC -------------------------------------------------------------------------------- + := [;]* (One or more targets) + := :=[:] [[:]]* (Generate a layer:dttp from operations on one or more layers or layer:dttps) + := '+' (union) or '-' (difference) or '&' (intersection) or '^' (xor) or ',' (aggregation/OR-without-union) or '|' (aggregation/OR-without-union) + All : will be outputted + Any hierarchy if present in the input is flattened Examples: 100:0=2,5:0,7 (aggregate polygons on 2:* 5:0 and 7:* into a new layer 100:0) 100:0=2+5:0+7 (unionize polygons on 2:* 5:0 and 7:* into a new layer 100:0) 100:0=2+5:0-7 (unionize polygons on 2:* 5:0 and then subtract 7:* to create a new layer 100:0) 100:0=2,5:0-7 (aggregate polygons on 2:* 5:0 and then subtract 7:* to create a new layer 100:0) 100:0=2^5 (Compute XOR between 2:* and 5:* as 100:0) 100:0=2&5 (Compute INTERSECTION between 2:* and 5:* as 100:0) 100:0=2+5;200:0=100:0-5;300:0=200^5;400:0=300&5 (Create multiple synthesized layers from multiple operations between layers) -------------------------------------------------------------------------------- B. POSTFIX SPEC (compact and efficient) -------------------------------------------------------------------------------- + := @[]* + := + := list of postfix operations resulting in ONE output. E.g: "L" (single layer all datatypes (A:*)) (0 <= L < 65535) "L:D" (single layer:datatype) (0 <= L,D < 65535) "A B +" (UNIONIZE A and B) (A,B can be of type L or L:D) "A B -" (SUBTRACT B from A) "A A ^" (XOR of A and B) "A B &" (INTERSECTION of A and B) "A B |" (Combine A and B without union) "A C =" (Assing A to C where C is of type L:D) "A B - C D & +" (same as (A - B) + (C & D)) "A B - C & D +" (same as ((A - B) & C) + D) + Not allowed: "A B - C D &" (because it results in TWO outputs A - B and C & D) + := Can be one of the following "R ~" (Emit the result as a new layer R where R is of type L:D, 0 <= L,D < 65535) "R *" (Unionize the result and emit it as a new layer R) Example: "@1 2:2 - 3:3 4 | & 0:0 ~" First subtract 2:2 from 1:* (save the result to A) Then, combine 3:3 and 4:* (save the result to B) Intersect A and B (save the result to C) Output C as 0:0 "@1 2 ^ 100:0 = 0:0 ~ 3 4 | 200:0 = 0:1 * 100:0 200:0 & 0:3 ~" First xor 1:* and 2:* and save the result to 100:0 Next, emit the result as 0:0 New expression, combine 4:* and 3:* and save that as 200:0 Next, unionize the result and emit as 0:1 Finally, intersect 100:0 with 200:0 and emit the result as 0:3 -------------------------------------------------------------------------------- WINDOW SPEC (Optional, Multi-use) :- Individual windows :- -------------------------------------------------------------------------------- -window:LLUR,:,,, -------------------------------------------------------------------------------- + Specify a window using it's lower left and upper right co-ordinates (in file units) + The filename is used to identify the window and the file generated thereof + Final output path = + + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -window:LLWH,:,,, -------------------------------------------------------------------------------- + Specify a window using it's lower left co-ordinates, width and height (in file units) + The filename is used to identify the window and the file generated thereof + Final output path = + + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -window:CWH,:,,, -------------------------------------------------------------------------------- + Specify a window using it's center co-ordinates, width and height (in file units) + The filename is used to identify the window and the file generated thereof + Final output path = + + -------------------------------------------------------------------------------- List of Windows from a txt file :- -------------------------------------------------------------------------------- @windows:LLUR,: -------------------------------------------------------------------------------- + Read a set of windows from a text file located at + Each line in that file specifies a single window as ,,, (in file units) + Lines beginning with a # are treated as comments + The output-name is used to identify the windows and the files generated thereof + Final output path = + + + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- @windows:WHLL,: -------------------------------------------------------------------------------- + Read a set of windows from a text file located at + The first line specifies the , (in file units) to be used for all windows + Each subsequent line in that file specifies the lower left co-ordinate (in file units) where a single window is to be placed + Lines beginning with a # are treated as comments + The filename is used to identify the windows and the files generated thereof + Final output path = + + < LINE NUMBER > + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- @windows:WGC,: -------------------------------------------------------------------------------- + Read a set of windows from a text file located at + The first line specifies the , (in file units) to be used for all windows + Each subsequent line in that file specifies the co-ordinates a point (in file units) where the center of a window is to be placed + Lines beginning with a # are treated as comments + The filename is used to identify the windows and the files generated thereof + Final output path = + + < LINE NUMBER > + -------------------------------------------------------------------------------- Tiling :- ------------------------------------------------------------------------------------- -tiles:RXY,:,,,:,[:,]* ------------------------------------------------------------------------------------- + Generate x same sized tiles from a region defined by it's lower left and upper right co-ordinates (in file units) + Optionally, if a set of , tile positions (1 <= I <= NX and 1 <= J <= NY)are specified, only those tiles will be extracted. Otherwise, all tiles will be extracted + The filename is used to identify the windows and the files generated thereof + Final output path = + + . + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------- -tiles:RWH,:,,,:,[:,]* -------------------------------------------------------------------------------------------- + Generate x same sized tiles from a region defined by it's lower left and upper right co-ordinates (in file units) + Optionally, if a set of , tile positions (1 <= I <= Num. tiles in X and 1 <= J <= Num. tiles in Y)are specified, only those tiles will be extracted. Otherwise, all tiles will be extracted + The filename is used to identify the windows and the files generated thereof + Final output path = + + . + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -tiles:WHC,:,[:,]+ -------------------------------------------------------------------------------- + Generate x sized tiles centered at one or more co-ordinates + The filename is used to identify the windows and the files generated thereof + Final output path = + + + -------------------------------------------------------------------------------- MISC OPTIONS (Optional) :- -------------------------------------------------------------------------------- -cell:: -------------------------------------------------------------------------------- + Set the view cell + Default: Deepest root cell in the file -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -diskload -------------------------------------------------------------------------------- + If specified, the file is accessed from the disk for all operations + Default: File is loaded to memory -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -thrnum: -------------------------------------------------------------------------------- + Specify the number of threads to be used for boolean operations + Default: No. CPU cores -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -noclip -------------------------------------------------------------------------------- + If specified, polygons will not be clipped at window extents + Default: Polygons are clipped at the window extents -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -log:${NEW_LOG_FILE}] || [-log+:${LOG_FILE} -------------------------------------------------------------------------------- + Create an execution log at the specified path (including file name). The directory component of the path must exist with suitable write permissions + By default, no log is created + If -log+ is used, an exisiting file at that path will be appended. With -log, an exisiting file will be overwritten -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -silent -------------------------------------------------------------------------------- + If used, no messages are written to stdout/stderr + If not used (by default), the execution log is written to stdout and error/ warning messages are written to stderr -------------------------------------------------------------------------------- ================================================================================ VERSION HISTORY ================================================================================ -------------------------------------------------------------------------------- v2.3 (2018-6-26) -------------------------------------------------------------------------------- + Compatible with QisMLib 3.20 (API break) -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- v2.2 (2018-2-23) -------------------------------------------------------------------------------- + Enables QisMLib system-wide logging (QISM_ARG_LOGFP) -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- v2.1 (2017-11-07) -------------------------------------------------------------------------------- + Compatible with QisMLib v3.9 (API break) -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- v2.0 (2017-07-11) -------------------------------------------------------------------------------- + Bug fix: Rounding error during conversion of double to int -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- v2.0 (2017-07-11) -------------------------------------------------------------------------------- + Support for a new post-fix layer synthesis expressions which is both compact and more efficient. This should be the best way to use layer synthesizer -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- v1.0 (2017-03-20) -------------------------------------------------------------------------------- + First Cut --------------------------------------------------------------------------------