Post by Matan Ben Nehemia
Computers and Electronic Engineer - Made in IMPACT!
חברים וחברות יקרים! שמח לחזור אחרי תקופה עמוסה בשנויים טובים וסיום של החלק האחרון של התואר קודם כל נתחיל בבדיחה שתקראו עם חיוך : אשתי מדברת אליי בבינארית. היא כל הזמן קוראת אחריי – אפס אחד, אפס אחד. וניגש לביזנס הציפ בשלב הווריפיקציה! הפייז הראשון הושלם ה-RISC-V SoC שלי (UltraCore-V): שלב תכנון ה-RTL הושלם! ואני מתחיל במקביל את שלב ה-Verification המקיף באמצעות SystemVerilog. כמו שאחד המנטורים אמר לי בכנס באמזון : "תכנון RTL זה להאמין שהקוד שלך מושלם, ווריפיקציה זה להוכיח לעצמך שחיית באשליות." 😄 אבל רגע לפני שאני בונה סביבה מורכבת עם SVA ו-Randomization, החלטתי לעשות לליבה תרגיל ברטוב אמיתי. המטרה הייתה להשתמש ב-RTOS ככלי בדיקה אגרסיבי – יישום של מתודולוגיית Software-Driven Verification (SDV) הנהוגה בתעשייה, כדי לבצע בדיקת מאמץ (Stress Test) ברמת המערכת. העליתי מערכת הפעלה לזמן אמת (FreeRTOS) על הליבה שבניתי. האופי האסינכרוני של המערכת – פסיקות חומרה, טיימרים והחלפות הקשר (Context Switches) מהירות – יצר מקרי קצה (Corner cases) אקראיים שקשה מאוד לדמות בסביבת בדיקות סינתטית. התוצאה? מצאתי באג, העומס שיצר ה-RTOS חשף באג חמקמק בלוגיקת הפינוי (Eviction) של ה-L1 Data Cache שלי. בודדתי את הבעיה, עדכנתי את קוד ה-SystemVerilog, וכעת המערכת יציבה לחלוטין ועומדת בעומס. התובנות שלי מהשלב הזה: כתיבת סביבת SystemVerilog היא השלב הבא, אבל הכוח של SDV והרצת עומסי עבודה (Workloads) מהעולם האמיתי הוא כייון שלא הכרתי מעולם הויריפקציה באיתור באגים אסינכרוניים. חומרה טובה נמדדת רק ברגע שהיא פוגשת תוכנה לא צפויה. מצורף תרשים סכמטי של ארכיטקטורת המעבד, המציג את תכנון הפייפליין והאינטגרציה של רכיבי ה-SoC במערכת. ממשיכים פול גז לשלבי הווריפיקציה המתקדמים! 🛠️ הקוד המלא והמעודכן זמין ב-GitHub (לינק בתגובה הראשונה 👇). #RISCV #SystemVerilog #Verification #DV #FPGA #FreeRTOS #ComputerArchitecture #RTLDesign #HardwareEngineering #SDV