본문으로 건너뛰기Skip to content 1:1 문의 — [email protected]로 이메일 작성 Contact us — email [email protected]

אל תתחילו מ-UVM: מפת דרכים להכנה לקריירה באימות דיגיטלי

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

מסלול לימוד לאימות דיגיטלי, מהבנת RTL דרך אימות פרוטוקול AXI ועד signoff של שבב
תמונה ממוזערת שנוצרה ב-AI · VLSI Korea

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

התשובה בשורה אחת: אל תתחילו מ-UVM. הסדר הבנת RTL → testbench עם בדיקה עצמית → פרוטוקול כמו AXI → assertion ו-coverage → UVM מהיר הרבה יותר.

UVM חשוב. אבל UVM אינו בסיס האימות, אלא framework שמארגן רכיבי אימות שכבר הובנו במבנה שניתן לשימוש חוזר. אם משננים תחילה את תחביר ה-factory וה-sequence בלי לדעת להסביר איזה ערך ה-DUT צריך להוציא ובאיזה cycle, קל לבנות testbench שנראה משכנע אך אינו מוצא באגים.

אם תרצו להבין תחילה מה עושה בפועל ארגון אימות, קראו גם את המדריך לצוות Design Verification. מאמר זה מתמקד בשלב הבא: “מה ללמוד ובאיזה סדר”.

אור בהיר מאיר שבב על לוח מעגלים כהה.
צילום של Brecht Corbeel ב-Unsplash

מדוע RTL קודם ל-UVM

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

  • היכן עובר הגבול בין לוגיקה צירופית ללוגיקה עוקבת?
  • האם כל המצבים מוגדרים מיד לאחר reset?
  • אם valid עולה ו-ready מתעכב, האם הנתונים נשמרים?
  • האם ביטוי ההשוואה נשאר תקין כאשר parameter או רוחב הנתונים משתנים?
  • מהם סדר העדיפויות ותנאי ה-starvation כאשר בקשות מגיעות בו-זמנית?

רק מי שיודע לענות על השאלות האלה יכול לתכנן stimulus ו-checker. היכרות עם הרבה מחלקות UVM והבנת הדבר שאותו מאמתים הן יכולות שונות.

סדר לימוד בן 6 שבועות בהמלצת איש מקצוע מהתחום

שבוע 1: תכננו בעצמכם בלוק RTL קטן

בחרו בלוק שמורכב מעט יותר ממונה. FIFO, round-robin arbiter, register file או interrupt controller פשוט הם אפשרויות טובות. לפני כתיבת הקוד, הכינו טבלת דרישות ותרשים תזמון.

נקודת הפתיחה של תיק העבודות אינה “RTL שעובד”, אלא “מפרט שמאפשר להסביר מהי התנהגות נכונה”.

שבוע 2: החליפו בדיקה חזותית של גלים ב-self-checking test

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

  1. stimulus שיוצר את הקלט
  2. driver שמניע את פיני ה-DUT
  3. monitor שאוסף את הפלט
  4. reference model שיוצר את הערך הצפוי
  5. scoreboard שמשווה בין הערך בפועל לערך הצפוי

בסוף הסימולציה צריכים להופיע pass/fail וסיבת הכשל, בלי שאדם יצטרך לפתוח את תצוגת הגלים.

שבוע 3: הבינו היטב חלק אחד של AXI4-Lite

אל תנסו לשנן מההתחלה את AXI4 כולו. עדיף לתכנן ולאמת slave אחד של AXI4-Lite, ולהתחיל בהבנת הערוצים העצמאיים וה-backpressure.

  • VALID אינו אות שמרימים רק לאחר שממתינים ל-READY של הצד השני.
  • אסור להניח שערוצי הכתובת והנתונים תמיד מגיעים באותו סדר.
  • כאשר התגובה מתעכבת, המפרט חייב להבהיר אם ניתן לקבל את הבקשה הבאה.
  • יש לבדוק בנפרד reset, העברות רציפות, backpressure וכתובת שגויה.

AMD מציינת כי Vivado כולל ללא עלות נוספת AXI Verification IP המבוסס על SystemVerilog. שימוש ב-testbench לדוגמה וב-protocol checker מאפשר לזהות כללים שהבדיקות שכתבתם בעצמכם החמיצו.

שבוע 4: הוסיפו assertion ו-functional coverage

assertion טוב אינו כותב מחדש את קוד המימוש. הוא מבטא את החוזה שעל הממשק לקיים. לדוגמה, הכלל שלפיו ה-payload חייב להישאר יציב במהלך valid && !ready, או הכלל שלפיו ה-write pointer אינו יכול לנוע כאשר ה-FIFO במצב full.

גם ב-coverage, אל תתחילו מהמספר. הכינו תחילה תוכנית אימות.

פונקציהתנאי תקיןתנאי גבול ושגיאהשיטת אימות
כתיבת AXIכתיבה יחידה·רציפהbackpressure, invalid addressscoreboard + assertion
קריאת AXIקריאה יחידה·רציפהעיכוב תגובה, unmapped addressreference model
resetreset במצב idlereset במהלך transactiondirected test + assertion

שבוע 5: בצעו refactoring באמצעות מחלקות SystemVerilog

כעת הפרידו את transaction, generator, driver, monitor ו-scoreboard למחלקות. תוכלו להבין מדוע נדרשים interface, virtual interface ו-mailbox מתוך חיבור לבעיות שכבר נתקלתם בהן.

שבוע 6: רק בסוף עברו ל-UVM

מפו את הרכיבים שיצרתם קודם למבנה UVM.

  • transaction → uvm_sequence_item
  • generator → sequence / sequencer
  • driver → uvm_driver
  • monitor → uvm_monitor
  • scoreboard → uvm_scoreboard
  • חיבורים והגדרות → agent / env / config DB

בסדר הזה, phase ו-factory אינם עוד פריטים לשינון, אלא תשובות לבעיות של שימוש חוזר ו-configuration.

מה מראיינים רוצים לראות בתיק עבודות למועמדות לעבודה

בעמוד הראשון של ה-repository צריכים להופיע חמשת הדברים הבאים.

  1. מפרט הבלוק ותרשים התזמון
  2. תוכנית אימות שמקשרת בין הדרישות לבדיקות
  3. regression שמופעל בפקודה אחת, יחד עם יומן pass/fail
  4. תוצאות assertion ו-functional coverage
  5. תיעוד של שחזור באג שנמצא בפועל, הסיבה לו, התיקון ומניעת הישנותו

המשפט החזק בראיון אינו “למדתי UVM”. הוא קרוב יותר ל-“מצאתי בעזרת random delay ו-assertion באג שנבע מהנחה שסדר ערוצי הכתובת והנתונים קבוע, והוספתי ל-regression בדיקה שמונעת את הישנותו”.

שאלות נפוצות

ש. האם גם סטודנטים לתואר ראשון צריכים ללמוד UVM?

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

ש. האם צריך ללמוד קודם C++ או Python?

הבנת ה-DUT וה-protocol קודמת לשפה עצמה. Python ו-cocotb שימושיים לניסויים מהירים ול-reference model, ואילו C++ חזק ב-DPI ובמידול ביצועים. אבל בלי להבין את ההתנהגות ברמת ה-cycle של ה-RTL, איכות ה-checker לא תשתפר בשום שפה.

ש. האם code coverage של 100% פירושו שהאימות הסתיים?

לא. code coverage מציג רק את המבנים שהורצו ואינו מבטיח שהדרישות נכונות. יש לבחון אותו יחד עם תוצאות functional coverage, assertion ו-scoreboard.

ש. כמה פרויקטים כדאי להכין?

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

סיכום

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

מקורות פומביים

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

Discussion

VLSI KOREA BRIEFING

반도체를 읽는 안목, 메일함으로.

엔지니어의 시각과 산업의 흐름을 함께. 무료로 구독하세요.

이미 구독 중인가요? 로그인