Expert Wiring Tool: Router at Hand

 

Introduction
Modern complex circuit designs require automatic router functionality in circuit layout editors. In multi-layer hierarchical design, it is often necessary to build a single wire between two objects or arbitrary points. It is unpractical to call a heavyweight router that is hardly aware of the design settings and technology parameters. Expert’s built-in Wiring Tool helps to bypass these time consuming operations, since all necessary information for routing is made available during Expert session.

 

The Purpose and Features of Wiring Tool
The purpose of Expert Wiring tool is to draw a wire in the active layer between one of the selected source contacts and one of selected target contacts (Figure 1). These source and target contacts are chosen by a routing algorithm in order trace the shortest route between them. Each of the contacts is a point, an object, or an electrical node. The resultant wire connects them electrically and avoids obstacles in the active layer in the whole hierarchy of the current cell.


Figure 1. Wiring between two points in fixed routing area.

 

To run a wire, select the Tools > Wiring... menu command. This launches the Wire panel. Expert Wiring Tool has the following features:

  • Select an active layer to run a wire by clicking Tools > Pick Layer, or by choosing a layer from the Layer Bar. The Current layer name is then displayed in the Wire panel and all wires are built in this layer until altered.
  • Customize wiring parameters from wire to obstacles in the Wire panel with the Wire width, End and Join styles, and Spacing options. Every time an active layer is changed, the wiring parameters are also changed in accordance with the technology parameters or customized settings.
  • Select the Routing area by the corresponding button on the Wire panel or choose to make it automatically Adjustable by clicking on the correspondent checkbox. If a fixed routing area is chosen, a frame appears around it. In this case, the routing is allowed only in this area. This saves time and memory if its certain the area is routable.
  • Expert divides all contacts by sources and targets. This indicates the direction of wiring. Choose from sources or targets in Wire panel.
  • Contacts are points, objects, or electrical nodes. Select as many contacts in the layout as necessary. The numbers of source and target contacts are displayed in the corresponding strings. Click the same contact twice to deselect it. Click the Assign contact button to choose the type of wiring source or target contacts: Point / Object / Node (electrical).
  • Click Clean to deselect all contacts.
  • After the routing is defined, click Run. The wait time depends on routing area and design complexity. It often takes several minutes to build a draft wire for middle size design cell. The tool displays either the shortest possible draft wire between the selected contacts, or one of the warning messages, if wiring is impossible.
  • Accept or Reject the draft wire.
  • Hide the Wire panel by pressing <Esc>. The contacts and routing area stay untouched and ready for wiring. To drop all assignments, just click Finish button.
  • Along with an easy to use interface, Expert implements advanced functionality in Wiring algorithm.

 

Technology Insight
Expert’s Wiring Tool is based on a wave propagation router that employs a uniform routing grid for all source and target contacts. The Routing grid contains routing cells small enough to provide path between obstacles, but large enough to significantly save memory.

Expert Wiring tool encounters the traditional problem of trade-off between computational speed and memory usage. Addressing to machine word is considerably more speed effective. Taking this into account, the parameters of routing grid cell is described by the following data structure:

int: empty, source, target, obstacle

int: wave propagation queue number

bool: routed / un-routed

The ineffective memory usage is clear. The same parameters are described by the following compact bit-field structure:

bit 0-1: empty, source, target, obstacle

bit 2-3: un-routed, cyclic wave propagation queue #1, cyclic queue #2, cyclic queue #3

This compact cell allocation drastically saves memory. The wave propagation queue is cyclic and has depth=3. This is enough for flat wave propagation. Estimated memory usage gain for Win32 model multiplied twenty times when compared to the first data structure.

At first sight, access to the compact grid cell data may seem somewhat slow. This is because the data requires bit operations. However, compact data requires fewer CPU cache updates, and importantly prevents addressing to virtual memory at larger routes (larger routing grids). Addressing to virtual memory negates most advantages of the Wiring Tool.

A set of contacts is mix of points, objects, and electrical nodes in both sources and targets. Wave propagation from multiple sources to multiple targets locates the closest pair of these contacts in order to build the shortest possible route between them. Efficient connectivity between electrical nodes provides a low-cost solution for electrically connected circuit construction.

The routing algorithm recognizes hierarchical obstacles all over the project cell. Running wire avoids encountered obstacles whether in a simple, flat design or in a deeply encapsulated cell hierarchy.

 

Conclusion

Silvaco Expert Wiring tool:

  • Reduces memory usage
  • Connects multiple sources to multiple targets with one wire
  • Connects wires to and from electrical Nodes;
  • Avoids hierarchical obstacles.

 

Download pdf version of this article