By tagging each element of a netlist with a unique name, netlist extraction becomes much easier and faster. This feature, known as dynamic netlist identification, involves the tagging and retagging of netlist elements as they are created and modified by the user so as to reflect the new netlist connectivity. As the user creates a new netlist, the points and wires comprising the netlist are tagged with the unique netlist name. If the user solders two netlists together or splits two netlists apart, then the netlist tags are updated accordingly. In effect, netlists are ``extracted'' while they are being created and modified, thus eliminating the need for expensive netlist traversals each time the user wishes to simulate the circuit. Further details regarding the soldering and splitting of netlists and the subsequent retagging are presented in a later subsection.
In addition to permitting easier netlist extraction, dynamic netlist identification also serves to help enforce many of the restrictions with respect to netlist layout. Because such restrictions can be identified quickly, the GUI can prohibit potential layout errors interactively. For example, using dynamic netlist identification, the GUI can determine in constant time whether or not the user is attempting to introduce a cycle in a netlist.
Using dynamic netlist identification, it is very simple to implement a feature which will let the user see all the wires and points which comprise a single netlist. Users can highlight an entire netlist by using the NETLIST toolbar button. This procedure creates a binding which is triggered whenever the user moves the mouse pointer inside a netlist element, as shown previously in Figure 3.4. The implementation extracts the unique netlist tag name from the netlist element and changes the colour attribute of all the items on the canvas having that tag name. The netlist is dehighlighted when the mouse pointer leaves the netlist element.