/*public void AddNamedPins(List<ContactNamed> inCts) * { * foreach(ContactNamed cnt in inCts) * { * if (diffusionExcep.FindIndex(name => name == cnt.namePoint) < 0) * { * trace * } * } * }*/ public void CorrectTrace(System.IO.StreamWriter file) { trace.ClearForAlign(file); //GetTraces(); trace.SetAllSamePriority(); trace.SpreadAllWaves(); file.WriteLine(""); file.WriteLine("---------Correction----------"); trace.PrintMap(Layers.metal1Trace, file); trace.PrintMap(Layers.siliconTrace, file); if (Params.IsModelBusM1InMiddle()) { trace.PrintMap(Layers.metal2Trace, file); } trace.PrintNumb(step, file); trace.PrintNumbM2(step, file); trace.ClearForAlign(file); trace.CheckOnePoint(); for (int i = 0; i < 2; i++) { trace.PropagateAllNotCross(); } trace.CheckOnePoint(); trace.SpreadAllWaves(); trace.CheckOnePoint(); /*file.WriteLine(""); * file.WriteLine("---------Correction_step1---------"); * trace.PrintMap(Layers.metal1Trace, file); * trace.PrintMap(Layers.siliconTrace, file); * if (Params.IsModelBusM1InMiddle()) * trace.PrintMap(Layers.metal2Trace, file); * trace.PrintNumb(step, file); * trace.PrintNumbM2(step,file);*/ trace.ClearForAlign(file); trace.CheckOnePoint(); for (int i = 0; i < 4; i++) { trace.PropagateAllNotCross(); } trace.CheckOnePoint(); trace.ClearForAlign(file); for (int i = 0; i < 2; i++) { trace.PropagateAllNotCross(); } trace.CheckOnePoint(); /*file.WriteLine(""); * file.WriteLine("---------Correction_step2---------"); * trace.PrintMap(Layers.metal1Trace, file); * trace.PrintMap(Layers.siliconTrace, file); * if (Params.IsModelBusM1InMiddle()) * trace.PrintMap(Layers.metal2Trace, file); * trace.PrintNumb(step, file); * trace.PrintNumbM2(step,file);*/ trace.SpreadAllWaves(); trace.CheckOnePoint(); }