Tracing Modes - Overview of Tracing Operations and Options
Because of the large size of the layouts that Nettrace is used to trace out, a number of methods are used to divide and conquer. The user also has control over the behavior of the tracer.
Think about a tracer as an operation on a layout file input and a stackup definition. A single tracer can be used to perform sequential point or region (hot-spot) traces resulting in one or more nets.
If a user wants to perform multiple traces in parallel, then additional tracer instances must be licensed.
The input data that serves as the source for tracing (after the appropriate layers have been synthesized) is computed only once for a given view-cell and stackup combination. The data can then be re-used over and over for subsequent traces. The input data is destroyed when the 'tracer' object is destroyed.
Point vs. Region
The user can specify either a single seed point (coordinate/layer) or a region (window/layer). The region is often used when a "hot spot" has been identified by a scanner and the user wants to see what nets are passing through the hot spot region.
Each net is traced using multiple threads. The number of threads working simultaneously depends on the number of cores and a user-driven parameter. The number of threads used is not limited by the license manager.
The input data space is divided into fixed sized tiles for reducing the complexity of computation and achieving parallelism. The number of tiles can either be specified by the user or auto-computed based on the complexity of the home view. This auto-tiling computation is also multi-threaded and invisible to the client.
The polygons that are members of the net are returned back to the client program using a callback system just like getting vector data from the QisMLib exploders.
Max Via Dimensions: The client can optionally specify a maximum size to determine which rectangles are to be treated as vias
Layers to Trace Through: The client can optionally specify a start and stop stackup order to limit the tracing to a subset of the specified stackup layersMax vertices per net: The client can optionally specify a number of vertices beyond which a net will be truncated (to avoid lengthy tracing for nets such as power nets) The client can optionally chose to receive truncated nets or not.
Region Report: Upon completion of a region trace, the client can get a list of regions that cross a specified net or a list of nets that cross a specified region.
Sample Client/Library Flow
Here is a high level sample of how a client would work with the nettrace library (and the QisMLib library needed to load a layout file)