private void SetStartVccGndConnections(int curPrior) { int middleLine = Layers.metal1Trace; if (Params.IsModelBusM2InMiddle()) { middleLine = Layers.metal2Trace; } else if (Params.IsModelWithDif()) { SetStartVccGndWithDiff(curPrior); return; } if (processNode.name == Params.GndName) { for (int i = 0; i < processNode.arcCollection.Count; i++) { trace.SetPinSource(trace.GetSourceContacts(processNode.arcCollection[i], processNode.name)); ContactSimple transistorPoint = processNode.arcCollection[i].GetHigherPoint(2); if (processNode.arcCollection[i].y > Params.GndPosition) { transistorPoint = processNode.arcCollection[i].GetLowerPoint(2); } if (!processNode.arcCollection[i].isInOut()) { trace.SetLine(new LineStruct(transistorPoint, new ContactSimple(processNode.arcCollection[i].x, Params.GndPosition, Layers.metal1Trace)), processNode.name, curPrior, 0, false); } } trace.SetLine(new LineStruct(new PairInt(Params.leftEdge, Params.GndPosition), new ContactSimple(wide - 1, Params.GndPosition, middleLine)), processNode.name, curPrior, 0, true); } if (processNode.name == Params.VccName) { for (int i = 0; i < processNode.arcCollection.Count; i++) { trace.SetPinSource(trace.GetSourceContacts(processNode.arcCollection[i], processNode.name)); ContactSimple transistorPoint = processNode.arcCollection[i].GetHigherPoint(2); if (processNode.arcCollection[i].y > Params.VccPosition) { transistorPoint = processNode.arcCollection[i].GetLowerPoint(2); } if (!processNode.arcCollection[i].isInOut()) { trace.SetLine(new LineStruct(transistorPoint, new ContactSimple(processNode.arcCollection[i].x, Params.VccPosition, Layers.metal1Trace)), processNode.name, curPrior, 0, false); } } trace.SetLine(new LineStruct(new PairInt(Params.leftEdge, Params.VccPosition), new ContactSimple(wide - 1, Params.VccPosition, middleLine)), processNode.name, curPrior, 0, true); } }