Beispiel #1
0
        private void SiliconIntercellular(ILayerCell cell, bool isVertical, SiliconLink siliconLink, Rectangle cellBounds)
        {
            if (siliconLink == SiliconLink.None)
            {
                return;
            }

            Pen pen;

            if (cell.HasN())
            {
                pen = NPen;
            }
            else if (cell.HasP())
            {
                pen = PPen;
            }
            else if (siliconLink != SiliconLink.Slave ^ cell.HasPGate())
            {
                pen = NPen;
            }
            else
            {
                pen = PPen;
            }

            GenericIntercellular(cellBounds, pen, isVertical);
        }
Beispiel #2
0
 static SiliconLink InvertIfNeeded(SiliconLink x, bool invert)
 {
     if (!invert)
     {
         return(x);
     }
     if (x == SiliconLink.Slave)
     {
         return(SiliconLink.Master);
     }
     if (x == SiliconLink.Master)
     {
         return(SiliconLink.Slave);
     }
     return(x);
 }
Beispiel #3
0
 public LinkContent(SiliconLink siliconLink, bool hasMetalLink)
 {
     SiliconLink  = siliconLink;
     HasMetalLink = hasMetalLink;
 }