Пример #1
0
 private bool SetPoinProcess(ContactSimple prevCnt, ContactSimple inCnt, NodePointProcess pntProcess)
 {
     if ( (prevCnt.layer != inCnt.layer) && ((prevCnt.layer == Layers.siliconTrace || inCnt.layer == Layers.siliconTrace)) )
     {
         if (GetPoint(inCnt, Layers.contactTrace).name != Material.diffusionName)
         {
             pntProcess.ProcessPoint(layoutMap[inCnt.x][inCnt.y][inCnt.layer]);
             return true;
         }
     }
     else
     {
         pntProcess.ProcessPoint(layoutMap[inCnt.x][inCnt.y][inCnt.layer]);
     }
     return false;
 }
Пример #2
0
        private List<ContactSimple> SetOneWave(List<ContactSimple> inWave, List<ContactSimple> bandedConts, NodePointProcess pntProcess, string currentName)
        {
            List<ContactSimple> thisWave = new List<ContactSimple>();

            foreach (ContactSimple cntUnit in inWave)
            {
                //thisWave.Add(cntUnit);
                //passedPoints.Add(cntUnit);
                bool b;

                foreach (int opposLay in Params.GetOppositeLayers(cntUnit.layer))
                {
                    ContactSimple curCnt = new ContactSimple(cntUnit, opposLay);
                    if (bandedConts.FindIndex(el => el == curCnt) < 0)
                    {
                        if ((opposLay == Layers.siliconTrace || cntUnit.layer == Layers.siliconTrace))
                        {
                            if ((GetPoint(cntUnit, Layers.contactTrace).name != Material.diffusionName) &&
                                (GetPoint(cntUnit, opposLay).name == currentName))
                            {
                                //pntProcess.ProcessPoint(layoutMap[cntUnit.x][cntUnit.y][opposLay]);
                                //passedPoints.Add(new ContactSimple(cntUnit,opposLay));
                                if ( cntUnit.x == 31 && (cntUnit.y == 21 || cntUnit.y == 22))// && cntNebor.layer == 1)
                                    b = true;
                                        //pn1 = GetPoint(cntNebor);

                                thisWave.Add(new ContactSimple(cntUnit,opposLay));
                            }
                        }
                        else
                        {
                            if (GetPoint(cntUnit, opposLay).name == currentName)
                            {
                                //pntProcess.ProcessPoint(layoutMap[cntUnit.x][cntUnit.y][opposLay]);
                                //passedPoints.Add(new ContactSimple(cntUnit,opposLay));
                                if ( cntUnit.x == 31 && (cntUnit.y == 21 || cntUnit.y == 22))// && cntNebor.layer == 1)
                                    b = true;

                                thisWave.Add(new ContactSimple(cntUnit,opposLay));
                            }
                        }
                    }
                }
                pntProcess.ProcessPoint(layoutMap[cntUnit.x][cntUnit.y][cntUnit.layer]);
            }

            return thisWave;
        }