The soldering operation results in an action opposite to that performed by the deletion operation -- instead of splitting netlists, soldering unites two or more netlists. Uniting two netlists is much simpler to implement than splitting two netlists. To unite two netlists, one of the netlists is retagged with the tag name of the other. For example, to unite netlists net1 and net2, we simply assign the tag net2 to all netlist elements which have the net1 tag and then remove the net1 tag. This can be performed by a two line procedure as shown in Figure 3.12.
Figure 3.12: Source Code Uniting Two Netlists
The main procedure responsible for soldering netlists is net_start_solder. In order to solder netlists, the procedure identifies all the points, wires and ports which overlap with the location where the soldering iron was activated on the workarea canvas. This list of items is sorted with points first, ports second and wires last. Then, a loop is executed in which an attempt is made to solder the first item in the list with each of the successive list items via calls to procedures of the form net_connect_*_to_* where * is one of point, port or wire, depending upon the types of the two items being soldered. A point identifier representing the junction point for the soldering is returned by the net_start_solder procedure.
As mentioned earlier, the implementation prohibits the user from performing solderings that will create cycles or other inconsistencies in the netlists. Most of these consistency checks can be done quickly because of the dynamic netlist identification feature. Furthermore, as a visual aid to the user, the implementation fills in the ports of components when they are soldered to a point. Inputs ports are filled in a green colour and output ports are filled red. In addition, if the resultant soldering point has a degree greater than two, the implementation creates a soldering dot ( ) at the junction point to help express the connectivity. This dot will be deleted if the degree of the point falls below three during subsequent manipulation of the netlist.