[Artwork] / [QisMLib] / [Programmer's Corner]
Command-line program to extract in parallel threads, lots of tiny clips of data from a GDSII/OASIS/DBLOAD design to GDSII/OASIS/TIFF/BMP/RAW files on disk
ClipExtractCommand-line referenceRequired+input:{input_file_path}+outdir:{output_directory}WINDOW-SPEC-window:LLUR:{name}:{llx},{lly},{urx},{ury}-window:LLWH:{name}:{llx},{lly},{width},{height}-window:CWH:{name}:{cx},{cy},{width},{height}@window:LLUR:{name}:{window_list_file}@window:LLWH:{name}:{window_list_file}@window:CWH:{name}:{window_list_file}-tile:RXY:{name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{nx},{ny}[:{i},{j}]*-tile:RWH:{name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{width},{height}[:{i},{j}]*-tile:CWH:{name}:{width},{height}:{cx},{cy}[:{cx},{cy}]*FORMAT+format:IMAGE +format:TIFF+format:BMP+format:VBMP+format:RAW+format:GDSII+format:OASIS+format:POLYSOptionalFILE-OPTIONS-layers:{layer_list}-layermap:{layer-mapping}-cell:{cell}-loadfromdiskFORMAT-OPTIONS for raster images-pixelsize:{size_x}[,{size_y}]-dither:{0.0-TO-1.0}-invert-right-to-left-bottom-to-topFORMAT-OPTIONS for extracting polygons-union-clip-maxvert:{max_vert_per_polygon}-butting:{overlap}-lsynth:{layer_synth_spec}MISC-OPTIONS-thrnum:{n_window_threads},{n_threads_per_window}-log:{log_path}] or -log+:{log_path}-silentLayer Synthesis Spec. Linear syntaxPostfix syntax
clipextract +input:{input_file_path} +outdir:{output_directory} [FILE-OPTIONS]{WINDOW-SPEC} {FORMAT} [FORMAT-OPTIONS] [MISC-OPTIONS]
+input:{input_file_path}+outdir:{output_directory}-window:LLUR:{name}:{llx},{lly},{urx},{ury}{name} is used to identify the window and the file generated thereof{output_directory} + {name} + {extension}-window:LLWH:{name}:{llx},{lly},{width},{height}{name} is used to identify the window and the file generated thereof{output_directory} + {name} + {extension}-window:CWH:{name}:{cx},{cy},{width},{height}{name} is used to identify the window and the file generated thereof{output_directory} + {name} + {extension}@window:LLUR:{name}:{window_list_file}{llx},{lly},{urx},{ury}
(in file units){name} is used to identify the windows and the files generated thereof{output_directory} + {name} + {line_number} + {extension}@window:LLWH:{name}:{window_list_file}{width},{height} (in file units) to be used
for all windows# are treated as comments{name} is used to identify the windows and the files generated thereof{output_directory} + {name} + {line_number} + {extension}@window:CWH:{name}:{window_list_file}{window_list_file}{width},{height} (in file units) to be used for
all windows# are treated as comments{output_directory} + {name} + {line_number} + {extension}-tile:RXY:{name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{nx},{ny}[:{i},{j}]*{nx} x {ny} same sized tiles from a region defined by it's lower
left and upper right co-ordinates (in file units){nx} and
1 <= J <= {ny})are specified, only those tiles will be extracted. Otherwise,
all tiles will be extracted{output_directory} + {name} + {I}.{J} + {extension}-tile:RWH:{name}:{roi_llx},{roi_lly},{roi_urx},{roi_ury}:{width},{height}[:{i},{j}]*{width} x {height} same sized tiles from a region defined by it's
lower left and upper right co-ordinates (in file units){i},{j} 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{output_directory} + {name} + {I}.{J} + {extension}-tile:CWH:{name}:{width},{height}:{cx},{cy}[:{cx},{cy}]*{width} x {height} sized tiles centered at one or more co-ordinates{output_directory} + {name} + {counter} + {extension}+format:IMAGE+format:TIFF+format:BMP+format:VBMP+format:RAW+format:GDSII+format:OASIS+format:POLYS-layers:{layer_list}-layers:1,2:2,3,4:4,4:5layer:datatype that does not match this specification will be filtered out-layermap:-layermap:{layer-mapping}Specify a layer mapping for extraction (vectors)
xxxxxxxxxx{layer-mapping} := [ALL-NULL][,{from}-{to}]+where {from},{to} := {layer}[:{datatype}]e.g -layermap:1-3 (move layers 1:* to 3:*, all other layers extracted as-is)-layermap:1-3:0 (move layers 1:* to 3:0, all other layers extracted as-is)-layermap:1:0-3:0 (move 1:0 to 3:0, all other layers extracted as-is)-layermap:ALL-NULL,1-3 (move layers 1:* to 3:*, drop all other layers)-layermap:ALL-NULL,1-1 (drop all layers except 1:*) (same as -layers:1)
Overrides preceding -layers:
-cell:{cell}-loadfromdisk-pixelsize:{size_x}[,{size_y}]-dither:{0.0-TO-1.0}-invert-right-to-left-bottom-to-top-union-clip-maxvert:{max_vert_per_polygon}-butting:{overlap}-lsynth:{layer_synth_spec}-thrnum:{n_window_threads},{n_threads_per_window}-log:{log_path}] or -log+:{log_path}-silentxxxxxxxxxx+ {layersynth-spec} := {target}[;{target}]* (One or more targets)+ {target} := {target-layer}:{target-dttp}={op-layer}[:{op-dttp}] [{op}{op-layer}[:{op-dttp}]]*(Generate a layer:dttp from operations on one or more layers or layer:dttps)+ {op} := '+' (union) or '-' (difference) or '&' (intersection) or '^' (xor) or ',' (aggregation/OR-without-union) or '|' (aggregation/OR-without-union)
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)
xxxxxxxxxx+ {layersynth-spec} := @{target}[{target}]*+ {target} := {operations}{result}+ {operations} := 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)+ {result} := 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 ~"
"@1 2 ^ 100:0 = 0:0 ~ 3 4 | 200:0 = 0:1 * 100:0 200:0 & 0:3 ~"