HiTakeJobHiTakeJob

מה זה Physical Design? הסבר פשוט + כמה משרות פתוחות בישראל

זמן קריאה: 8 דקות

Physical Design הוא השלב שבו תיאור לוגי של שבב הופך לצורה גיאומטרית אמיתית: איפה יושב כל טרנזיסטור, איך נמתח כל חוט, ואיך מגיע השעון לכל פינה. הפלט הוא הקובץ שנשלח למפעל. בלוח HiTakeJob פתוחות כרגע 12 משרות בקטגוריית מהנדסים, וכן 9 משרות שמזכירות Verilog.

מאיפה מתחילים ולאן מגיעים

הקלט לתחום הוא netlist מסונתז: רשימה של תאים סטנדרטיים מהספרייה של המפעל וחיבורים ביניהם. אין בו שום מידע גיאומטרי. הפלט הוא GDSII או OASIS, קובץ שמתאר מצולעים בשכבות - היכן יש פוליסיליקון, היכן מתכת ראשונה, היכן חור מעבר. בין שני הקצוות האלה נמצאת עבודת ה-Physical Design.

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

Floorplan - ההחלטה שקשה לתקן

בשלב הראשון מחליטים על מימדי השבב, על מיקום הבלוקים הגדולים - זיכרונות, ליבות מעבד, בלוקים אנלוגיים - ועל מיקום הפינים בגבול כל בלוק. כאן גם נקבעת רשת החשמל הראשית וכאן נקבע כמה מקום פנוי נשאר ללוגיקה.

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

Placement - איפה יושב כל תא

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

בשלב הזה מתחילות גם אופטימיזציות לוגיות פיזיות: החלפת תא בתא חזק יותר שמניע חוט ארוך, שכפול תא שמזין הרבה יעדים, והוספת באפרים. אלה שינויים ב-netlist עצמו שנעשים מתוך שיקול פיזי, וזו אחת הנקודות שבהן הגבול בין סינתזה לבין physical design מיטשטש.

CTS - בניית עץ השעון

עד שלב זה השעון הוא אות אידיאלי שמגיע לכולם באותו רגע. במציאות הוא אות פיזי שצריך להגיע למאות אלפי פליפ-פלופים, וזה מחייב עץ של באפרים. שלב ה-Clock Tree Synthesis בונה את העץ הזה, והוא נמדד בשני מדדים.

מדדמה הוא מודדלמה אכפת
Skewהפרש זמן ההגעה בין יעדים שוניםskew גדול יוצר הפרות hold
Latencyזמן מהמקור עד היעדמשפיע על ממשקים חיצוניים
Duty cycleיחס בין גבוה לנמוךקריטי ללוגיקה על שתי הקצוות
הספק השעוןחלק ההספק שנצרך בעץלרוב נתח משמעותי מסך ההספק

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

Routing - חיבור בפועל

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

הבעיה המרכזית היא congestion: אזור שבו יותר חוטים רוצים לעבור ממה שיש בו מקום. congestion אינו נפתר בניתוב, הוא נפתר בחזרה ל-placement או ל-floorplan. עוד תופעה שמופיעה כאן היא crosstalk - שני חוטים מקבילים וארוכים מצמדים זה לזה ומזיזים זה את זמני זה, מה שמחייב הרחקה או הוספת מגן ביניהם.

STA וסגירת תזמון

ניתוח תזמון סטטי בודק כל נתיב בשבב בלי להריץ סימולציה: הוא מחשב את זמן ההגעה של האות ואת הזמן שבו הוא נדרש, וההפרש נקרא slack. slack שלילי הוא הפרה.

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

המונח timing closure מתאר את התהליך האיטרטיבי של צמצום כל ה-slack השלילי לאפס. זה השלב שגוזל את רוב הזמן בפרויקט, כי כל תיקון של נתיב אחד עלול לשבור נתיב אחר: הגדלת תא מוסיפה עומס למי שמזין אותו, והוספת באפר לתיקון hold מוסיפה שטח וצפיפות.

Signoff: DRC, LVS ובדיקות פיזיקליות

לפני שליחה למפעל עוברים סדרת בדיקות שאין עליהן פשרה.

בדיקהמה היא שואלתכישלון טיפוסי
DRCהאם הגיאומטריה עומדת בחוקי המפעלמרווח קטן מהמותר בין שני מצולעים
LVSהאם הפריסה זהה ל-netlistחיבור שנשכח או קצר שנוצר בטעות
ERCהאם החיווט החשמלי תקיןשער שלא מחובר לשום מתח
Antennaהאם מקטע מתכת צובר מטען בייצורחוט ארוך בלי דיודת פריקה
EM ו-IRהאם הזרם הורס את המתכת או מפיל מתחרשת חשמל דקה מדי באזור צפוף

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

ECO - תיקונים אחרי שהכל כבר סגור

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

ECO פונקציונלי מחליף לוגיקה בפועל, ולכן הוא מנצל תאי מילוי שפוזרו מראש בכל השבב בדיוק למטרה הזו - תאים שאפשר לחווט מחדש לשער חדש. ECO של תזמון בדרך כלל רק מחליף תא בגרסה חזקה או חלשה יותר, או מוסיף באפר. בשלב מאוחר עוד יותר קיים גם metal-only ECO, שבו משנים רק את שכבות המתכת ולכן אין צורך במסכות חדשות לשכבות התחתונות - חיסכון משמעותי בעלות ובזמן. כל ECO חייב לעבור מחדש את מחזור הבדיקות, כי שינוי של שער אחד יכול לשבור נתיב אחר או להפר חוק גיאומטרי.

PPA - המשולש שלא נסגר

כל החלטה בתחום נמדדת בשלושה צירים: ביצועים, הספק ושטח. השלושה סותרים זה את זה כמעט תמיד, ותפקידו של המהנדס הוא לבחור נקודה על המשולש ולא לנצח אותו.

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

בפועל הדרישה מגיעה מלמעלה - יעד תדר, תקציב הספק ומחיר יעד ליחידה - וה-Physical Design הוא הצוות שקובע אם אפשר לעמוד בשלושתם בו זמנית, ומדווח מוקדם כשלא.

איך נכנסים לתחום ומה שואלים בראיון

הבסיס הוא הנדסת חשמל עם קורסים בעיצוב VLSI, הבנה של אלקטרוניקה ברמת טרנזיסטור, ושליטה בכלים ובסקריפטים. Tcl הוא שפת ההפעלה של כמעט כל כלי בתחום, ו-Python משמש לעיבוד דוחות. עבודה יומיומית מתנהלת ב-Linux מול חוות שרתים, ריצה של כלי יכולה להימשך שעות, ולכן המיומנות המעשית החשובה היא לדעת לקרוא דוח ולהחליט מה הצעד הבא בלי להריץ הכל מחדש.

בראיון שכיח לבקש להסביר את ההבדל בין setup ל-hold ולמה רק אחד מהם תלוי בתדר, מה עושים כשהניתוב לא מתכנס, איך מזהים שהבעיה ב-floorplan ולא ב-placement, ומה ההשפעה של לוגיקת DFT על הצפיפות. את המשרות הרלוונטיות בלוח אפשר לסנן דרך 13 המשרות בקטגוריית מהנדסים ודרך 12 המשרות שמזכירות Verilog. מספרי שכר שמסתובבים ברשת הם הערכת שוק ולא נתון שקיים במאגר שלנו.

שאלות נפוצות

מה ההבדל בין Physical Design לבין תכנון RTL?

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

למה סגירת תזמון לוקחת כל כך הרבה זמן?

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

מה זה slack שלילי?

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

מה זה GDSII?

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

האם צריך רקע אנלוגי?

לא מלא, אבל כן הבנה של התנהגות טרנזיסטור, של השפעת מתח וטמפרטורה על מהירות, ושל תופעות כמו דליפה ו-IR drop. מי שמגיע רק מרקע תוכנתי מוצא את השלב הזה תלול יותר מאשר אימות.

כמה מהעבודה היא סקריפטים?

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

מאמרים נוספים

המשרות באתר