היבטים אלגוריתמיים בתכנון VLSI

נערך ע"י ישראל וגנר – כל הזכויות שמורות

 

פרק 1. מבוא למעגלי CMOS

 

 

תוכן

§         התקני CMOS

§         מימוש לוגיקה בשיטת CMOS 

§         עריכה: מיפוי מתיאור סכמטי לתיאור פיסיקלי

§         מימוש טרנזיסטורים בחומרה

§         חיבורים: קוי מתכת ומגעים

§         פורמט שתי השורות

 

התקני CMOS

 

איור 1 טרנזיסטור NMOS במבט על (משמאל) מבט צד (אמצע) וסימון סכמטי (מימין).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

איור 2 אופן הפעולה של טרנזיסטור NMOS במצב קיטעון (למעלה) ובמצב הולכה (למטה)

 

 

 

 

 

 

איור 3 מודל חשמלי לטרנזיסטור בשלושת מצביו: קיטעון CUTOFF)), לינארי, ורויה SATURATION) ).

 

 

איור 4 איפיון טרנזיסטור ע"י היחס בין הזרם Id לבין המתח  Vds

 

 

איור 5 מהפך CMOS וגרפים של  מתח הכניסה, מתח היציאה והזרם, הזורם כמעט אך ורק בזמן שינוי המצב.

 

איור 6 תמונה תלת-מימדית של מהפך, כולל שלושת שכבות המתכת שמעליו וחיבורים ביניהן

מימוש לוגיקה בשיטת CMOS 

 

בשיטה זו נתייחס לרכיבים מסוג  PFET  כמתגים עם הדק שלילי (מוליכים כשהשער במצב "0"),  ולרכיבים מסוג  NFET  כמתגים עם הדק חיובי (מוליכים כשהשער במצב "1" (. ").

בהינתן פונקציה בולאנית F  נבנה שני מעגלים: האחד עם רכיבים מסוג PFET  יממש את הפונקציה F , והשני עם רכיבים מסוג NFET  יממש את הפונקציה not(F) . כך נבטיח שלכל ערך אפשרי של הכניסות, יימצא מסלול מוליר לספק (VDD) או לאדמה (GND).

 

 באופן כזה ניתן לממש מהפך :

 

 

 

 

 


 

 

 

 

 

 

 

 

 

את טבלת האמת ניתן לפתח מתוך התנהגותם של הטרנזיסטורים:

 

x

Tp

Tn

y

0

on

off

1

1

off

on

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

באופן דומה נממש NAND   :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


אילו פונקציות ניתן לממש כך ?

 

הגדרה: פונקציה    F(x)  היא מונוטונית יורדת אם:  [X -> Y] -> [F(Y) -> F(X)]

טענה: אם פונקציה ניתנת למימוש בשיטת CMOS  הנ"ל אזי היא מונוטונית יורדת.

הוכחה: לפי ההנחה אם X(i)=1  אזי גם Y(i)=1. לכן, אם עבור הכניסה X ישנו מסלול מהיציאה לאדמה, המסלול הזה קיים גם עבור הכניסה Y. כלומר: אם F(X)=0  אזי גם F(Y)=0, ומכאן נובע שאם F(Y)=1 אזי גם F(X)=1 , כלומר: F(Y)->F(X).                                                                  ٱ

 

יצוג פולני

מעגל מסוג CMOS  ניתן ליצג (טופולוגית) ע"י "ביטוי פולני" (או POSTFIX  )        . לצורך זה נסמן חיבורים מקבילים באות P  וחיבורים טוריים באות S. לדוגמא, צד ה-N  של  הNAND   הנ"ל יסומן כך:

                        X1,X2,S

ואילו שער מסוג AOI   (And-Or-Invert) שהפונקציה שלו היא: F(a,b,c,d)=not(ab + cd) יירשם כך:

                        A,b,S,c,d,S,P

 

תכנית ה MATLAB הבאה יוצרת טבלת אמת מתוך ביטוי פולני:

 

function [TT] = truth(pexp)

% TT = TruthTable induced by

% the polish expression 'pexp' for the N-tree

% part of a CMOS circuit

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 TT=zeros(16,5);

 row=0;

 global STACK

 STACK= [0];

 % main loop

 for a=0:1

   for b=0:1

      for c=0:1

         for d=0:1

     row = row + 1;

     TT(row,1:5)=[a b c d value(pexp, a,b,c,d)];

         end

      end

   end

 end

return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% functions

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [v] = value(pexp,a,b,c,d)

 global STACK;

 n=length(pexp);

 for i=1:n

   z=pexp(i);

   if (z=='P')

      x1 = pop;

      x2 = pop;

      push(x1 | x2);

   elseif (z=='S')

      x1 = pop;

      x2 = pop;

      push(x1 & x2);

   else

      switch z

        case 'a'

            push(a);

        case 'b'

            push(b);

        case 'c'

            push(c);

        case 'd'

            push(d);

        otherwise

         printf('error in switch !!!\n');

      end

    end

 end

 v = ~pop;

return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [] = push(a)

 global STACK;

 STACK = [a STACK];

return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function a = pop

 global STACK;

 h=length(STACK);

 a=STACK(1);

 STACK = STACK(2:h);

return

 

 

 

 

 

 

 

 

 

 

 

 

עריכה: מיפוי מתיאור סכמטי לתיאור פיסיקלי

כדי לממש מעגל אלקטרוני בחומרה, יש ליצור מיפוי מעולם המעגלים (כלומר הרכיבים והחיבורים ביניהם) אל עולם האוביקטים הפיסיקליים (כלומר פוליגונים המוטבעים בשכבות הייצור השונות בתהליך של   VLSI), מיפוי כזה, אם ייעשה בהתאם לחוקי הטכנולוגיה (ground rules) , יאפשר לייצר שבב המבצע את הפונקציה הנדרשת. להלן נעסוק בשלבי העריכה של מעגל מסוג CMOS.

 

מימוש טרנזיסטורים בחומרה

כזכור (מהרצאה מס. 1) ניתן להשיג את תופעת השדה הנדרשת ליצירת מתג MOS  ע"י יצירת שכבת דיפוזיה (כלומר סימום יתר של הסיליקון ביונים) ומעליה שער מפוליסיליקון, כשביניהם חוצצת שכבת בידוד דקה של תחמוצת. במקרה של טרנזיסטור מסוג PMOS, מוטבעת לפני הדיפוזיה גם שכבה מסוג N-well, שתפקידה לאפשר לטרנזיסטור מסוג זה לשהות בפוטנציאל גבוה (בניגוד ל- NMOS השרוי בפוטנציאל אדמה כמו המצע (=bulk)).

 

 

 

 

 

 

 

 

 

 

 

 

 

 


חיבורים: קווי מתכת ומגעים

כדי לממש חיבורים בין הטרנזיסטורים, יש ליצור קוים מוליכים. קוים אלו עשויים בדרך כלל מחוטי מתכת (אלומיניום או נחושת)  וממגעים – היוצרים קשר ושמלי בין מתכת לטרנזיסטור או בין מתכות בשכבות שונות. למעשה מגעים אינם אלא חורים הנוצרים בכוונה בשכבת התחמוצת שבין השכבות האפקטיביות כך שאם יצרנו, למשל, חור בתחמוצת שמעל שכבת  Metal-2, הרי שכאשר ניצור את שכבת המתכת הבאה (Metal-3) היא תזלוג פנימה לתוך החור וכך ייוצר מגע חשמלי בין השכבות. מאחר שתהליך זה של זליגה איננו איכותי כמו המתכת עצמה, קיימת אי-ודאות באשר למוליכותם של מגעים, ולכן רצוי למעט בהם ככל האפשר.

לדוגמא, כדי למש מהפך ניצור את הפוליגונים הבאים:

 

 

 

 

 

 

 

 

 


שימו לב כי החיבור בין השערים נוצר בפוליסיליקון, ללא צורך במתכת, וכן לכך שניתן לחייט את התא בשכבה אחת של מתכת (בניגוד לתאים מורכבים יותר שעלולים להצריך שכבה נוספת).

 

פורמט שתי השורות

 

באינטגרציה של מערכות גדולות, יש להקפיד על מימשק אחיד – אחרת לא יוכלו החלקים השונים להתחבר יחד. במערכות VLSI נהוג להקפיד על פורמט עריכה (layout style) קבוע כדי לאפשר הרכבת יחידות באופן פשוט ונוח. הפורמט הנפוץ ביותר הוא זה שהוצע לראשונה ע"י Uehara & vanCleemput בשנת 1981, ומבוסס על שתי שורות של טרנזיסטורים, האחת מסוג P והשנייה מסוג N. החיוט נעשה מעל הטרנזיסטורים וגם ביניהם, וקווי הספק עוברים גם הם מעל הטרנזיסטורים: קו ה- VDD מעל שורת ה- P, וקו האדמה (GND) מעל שורת ה- N.

פורמט זה מתאים ביותר לאינטגרציה משום שניתן להצמיד שני תאים לשורה אופקית ללא צורך בשינויים (כל עוד מקפידים על גובה אחיד של קווי הספק). פורמט זה גם מאפשר חיסכון בשטח הודות לצירופי דיפוזיות (abutment) כלומר שיתןף שני חלקי דיפוזיה בין טרנזיסטורים שכנים, כמו בדוגמא הבאה:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

דוגמא לעריכת מעגל מורכב: