Chip layouts generally will contain a large number of identical "polygons" due to the repetitive nature of the designs. Often it is useful to be able to find all occurrences of a particular polygon wherever it appears on the layout. The Polysearch engine does this. It takes as input the layout to be searched and a file containing one or more templates and then finds all the occurrences of the template.
Multi-threaded
Given the size and complexity of chip layouts any such pattern matching software must deal with millions and possibly even billions of comparisons. Polysearch has been written from the bottom up to take advantage of multi-core workstations. Both the extraction of polygons (known as exploding) and the comparison of template vs. candidate polygons are multi-threaded.
Windowing
When doing a pattern match, one often knows that certain areas of a chip can be excluded. For example, if one is searching for patterns likely found in the logic area of a chip, one should not waste computing resources searching memory blocks.
Polysearch supports as input a window or list of windows to search. By crafting a number of windows that only cover the logic region of the chip one can avoid searching where there is no chance of a match.
Rotation and Mirroring
Polysearch will match the template even if the target polygon has been rotated by 90, 180 or 270 degrees and/or mirrored.
File Format
Polysearch uses GDSII as its input; output is GDSII; polygon template data is in GDSII or a text file.
Window definitions are text files.
Detailed explanation of the command line syntax: Engine Syntax Details
polysearch.exe +input:<INPUT-GDSII-FILE> +output:<OUTPUT-GDSII-FILE> +polyf:<POLYLIST-GDSII-FILE> ## WINDOW Specification [-window:LLUR:<LLX>,<LLY>,<URX>,<URY>] [-window:LLWH:<LLX>,<LLY>,<WIDTH>,<HEIGHT>] [-window:CWH:<CX>,<CY>,<WIDTH>,<HEIGHT>] [@window:LLUR:<FILENAME> >] [@window:LLWH:<FILENAME>:<FILE-PATH>] [@window:CWH:<FILENAME>:<FILE-PATH>] ## INPUT FILE SETTINGS [-layers:<LAYERS>] [-cell:<CELL>] [-loadfromdisk] ## MISC. SETTINGS [-thrnum:<N-EXPL-THREADS>[,<N-BOOL-THREADS>[,<N-SCAN-THREADS>]]] [-maxvert:<MAX-VERT-PER-TILE>] [-jitter:<TOLERANCE-FOR-COMPARISON-IN-DATABASE-UNITS>] [-by_layer] [-by_layer_datatype] [-target_lyr:<TARGET-LAYER>] [-log:${NEW_LOG_FILE}] | [-log+:${LOG_FILE}] Details
Linux (64 bit)
Windows (64 bit)