מאת: יניב משה, Sandisk
הקדמה:
3 שנים לאחר שהטמענו את מתודולוגית
ה- (CDV (Coverage Driven Verification בקבוצת הורפיקציה ובהסתמך עליה אנו מאשרים יציאה ל- tape out, זהו זמן טוב לעצור ולסכם את היתרונות והחסרונות של מתודולוגיה זו, את הדרכים למזער את חסרונותיה ולבחון את הכיוונים לעתיד.
רקע:
בין מגוון תפקידיה של קבוצת ה- ASIC של חברת Sandisk בתפן, מפותחים IPs המממשים פרוטוקולים כגון SD/MMC בבקרי הזכרון של המוצרים מבוססי FLASH אותם החברה מפתחת ומוכרת. כמות ה- Hosts (מצלמות, טלפונים סלולאריים, טבלטים וכל מיני גד’טים למיניהם) בשוק אשר מתממשקים לאותם מוצרים הוא אדיר. פרוטוקולים אלו עוברים שינוים ותוספות בקצב מסחרר ואיתם גם אותם IPs המפותחים בקבוצה. צוות הורפיקציה אמון על אימות הפיתוח של אותם IPs בסביבה דינמית זו.
עד לפני כ 3 שנים עבדנו בשיטת ה direct testing לאמור: עבור כל feature בנינו test plan בו הוגדרו התרחישים (scenarios) המדויקים אותם צריך לבדוק ולהריץ. חסרונה העיקרי של שיטה זו שהיא איננה ניתנת להרחבה (Non Scalable). חוסר יכולת הרנדומיזציה (randomization) של שיטה זו וכמות הטסטים השונים אותם יש להריץ תלויה בסיבוכיות הפרוטוקול וגם בכמות ההוסטים (hosts) בשוק כל הוסט מממש את הפרוטוקול בצורה קצת שונה) אליהם צריך המוצר להתממשק.
בעקבות חסרונות אלו החלטנו לעבור לשיטת ה- CDV אותה מימשנו באמצעות Specman – eRM.
יתרונות השיטה:
יתרון ברור לשיטה היא העובדה שהרנדומיזציה מביאה את ה-(DUT (Device Under Test למקומות שמהנדס הורפיקציה ומהנדס הדיזיין (design) לא חשבו עליהם, וכן היתרון שטסטים הרצים בזמן ה- regressions “עושים את העבודה” למהנדסים ומטסט אחד מוגרלים מספר רב של תרחישים שונים, בנוסף לכך מצאנו שאצלנו בגלל קצב השינויים והדינמיות של המפרטים (specification) של אותו IP, השיטה טובה לוודא שהשינויים שהוכנסו ב- DUT לא פגעו בפיצ’רים (features) הקיימים מה שמכונה backward compatibility וזאת אודות לתכונה של ה- CDV הקשורה “בכיסוי שטחים” יותר מאשר נקודות סינגולאריות.
חסרונות השיטה:
“חורים בסביבה” – עם הזמן וככל שה-CDV methodology התבסס יותר ויותר כחלק ממתודולוגית העבודה שלנו גילינו שעדיין קיימת אפשרות ל- CDV holes – “חורים” ב- coverage plan ותרחישים שלא ירונדמו סביב אותם “חורים” ולכן עדיין יתכן שבאגים (אומנם במספר נמוך משמעותית יחסית לשיטה ל- Direct testing) לא יתגלו… בנוסף לכך, ה- regression time הלך וגדל עם הפיתוחים שהתווספו לאותה סביבת ורפיקציה מה שהביא אותנו לעבוד עם ה- test ranking של ה- emanger על מנת להוריד את זמן הסימולציה.
בעיה נוספת היא מתי יוצאים ל- (T.O. (tape out? – חיסרון מובנה זה בשיטה, בעולם הדינמי של שינוים תכופים, מקבל משנה תוקף:
א. טכנית – האם ניקינו את כל הבאגים? אולי יש כאלה שלא עלינו עליהם? מה עושים כשאילוצי הזמן מאוד כבדים?
ב. תכנון מסגרת לוחות הזמנים של תקופת הורפיקציה ל- sign-off.
יוצא איפה, שכשמתרגמים את החסרונות האלו לשינויים התכופים של ה- spec תוך כדי הפרויקט וממילא השינויים שה DUT עובר והסביבה צריכה לעבור בהתאם, עלולה להווצר תופעת זליגה של איכות הסביבה מעולם הרנדומאלי אליו כוונה ונבנתה לכתחילה, לכיוון ה- direct, וזאת הודות לשתי תופעות:
א. Sign-off יתבצע על data base קיים (טסטים + seeds קיימים) על מנת לא להכניס רעש…
ב. טסטים יכתבו באיכות (מבחינת רנדומזציה) פחות טובה על מנת לפצות על ה- trade – off עם הזמן שלוקח לכיסוי ה- coverage items הקיימים והחדשים שהוגדרו.
לפני שנציע פתרון (אמנם חלקי) לבעיית הזליגה לכיוון ה- direct בגבולות הגזרה של מתודולוגית ה- CDV בלבד, נבחן את ההבדל ברמת התפיסה בן טסט רנדומאלי “טהור”
ל- semi – random או direct.
בטסט semi – random או direct כיוון הטסט אליו הוא חותר, ברור לכותב הטסט ולכן יכתוב אותו בהתאם.
מיומנות כותב ה- test מתבטאת בשמירה על רנדומיזציה לוקלית עם כיוון ה- flow של הטסט.
בטסט רנדומאלי “טהור” כותב הטסט לא מוטרד מכיוון הטסט אלא מאיך בונים אותו בצורה כזאת שכשירוץ בפעם הבאה עם seed אחר, לא יגיע לאותם נקודות כמו בריצה הקודמת אלא להתפלגות אחידה פחות או יותר.
ומכאן לפתרון: יש לשמור על שני קווים מקבילים לאורך חייו של הפרויקט – חלק מהבדיקות יפותחו בצורה של ה- semi – random וחלק האחר של הבדיקות יכיל את הטסטים הרנדומלים “הטהורים”. הכיון של semi –random יתן מענה לשינויים התכופים השניוהטסטים הרנדומלים “הטהורים” יכוונו לנקות את ה-design וכששניהם חותרים ל- 100% coverage נוכל להתגבר על תופעת הזליגה.
גם פיתרון מעין זה אינו מלא ומצריך ניסיון ומיומנות לא מבוטלות של מהנדסי הורפיקציה וכן ניהול שעומד על המשמר לראות שהאיזון בסוגי הורפיקציה לעיל אינו מופר.
כיוונים לעתיד:
כיוון אחד אותו אנו בודקים ולומדים בימים אלו הוא ה- formal verification אשר אמור להשלים את מתודולוגית ה- CDV ולעזור הן בסגירת החורים ב- coverage והן בהחלטה מתי יוצאים לtape out . קיימים היום בשוק מספר מתודולוגיות מובנות סביב ה- formal verification.
כיוון נוסף שאנו לומדים ובודקים הוא כיוון תומך CDV וזה באמצעות עזרים שיושבים על ה- regression ובודקים את איכות סביבת הורפיקציה באמצעות הזרקת באגים חכמה ל- DUT ובדיקה האם הסביבה “תופסת” את אותם באגים.
בסופו של יום, כנראה שאין מתודולוגיה אחת שהיא חסינת באגים אבל יתכן ושילוב של המתודולוגיות הנ”ל יצמצם את אותם חסרונות אליהם התייחסנו לעיל.
הכותב הינו מנהל קבוצת הוורפיקציה במרכז הפיתוח של סאנדיסק בתפן.