예제 #1
0
        /*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();
        }