מהו Testbench
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 73 מתוך 90.
סביבת בדיקה היא מודול Verilog מיוחד המשמש לבדיקת מודול אחר. היא מספקת קלטים לתכנון שלך ובודקת אם הפלטים נכונים.
למה אנחנו צריכים סביבת בדיקה?
כשאתה בונה מודול, עליך לוודא שהוא פועל כראוי. סביבת בדיקה מאפשרת לך:
- להחיל ערכי קלט שונים על המודול שלך
- לצפות בפלטים
- בדקו אם הפלטים תואמים למה שציפיתם
- עשו זאת באופן אוטומטי, בלי בדיקה ידנית
מודול תכנון לעומת ספסל בדיקה
| מודול תכנון | ספסל בדיקה | |
|---|---|---|
| מטרה | מממש חומרה | בודק את מודול התכנון |
| יש יציאות? | כן (כניסות ויציאות) | לא (עצמאי) |
| ניתן לסינתזה? | כן | לא (סימולציה בלבד) |
דוגמה פשוטה לסביבת בדיקה
module testbench; // ללא פורטים!
// הקלטים והפלטים מגיעים מהמודול שאנחנו בודקים (ה-DUT).
reg a, b; // reg עבור הקלטים
wire c; // wire עבור הפלט
// זהו מופע של מודול — הוא יוצר עותק של המודול and_gate ונותן לו את השם dut
and_gate dut ( // צור מופע של DUT
.a(a),
.b(b),
.c(c)
);
// זהו בלוק initial שמחיל ערכי בדיקה על הקלטים של המודול הנבדק.
initial begin // החל ערכי בדיקה
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
$finish;
end
endmoduleנקודות עיקריות
- לסביבת הבדיקה אין יציאות
regמשמש לאותות שמשתנים (כניסות ל-DUT)wireמשמש לאותות שמגיעים מ-DUT (יציאות)
- המודול שנבדק נקרא DUT (תכן נבדק)
$finishמסיים את הסימולציה
נעסוק ביצירת גירויים, בהצגת תוצאות ובתכונות נוספות של ספסל הבדיקה בשיעורים הבאים.
אתגר
ניתן לך מודול של שער AND. המשימה שלך היא להוסיף את החלקים החסרים לספסל הבדיקה שלו.
מה לעשות:
הוסף את החלקים הבאים לספסל הבדיקה:
- הצהר על
regעבור הקלטיםaו-b - הצהר על
wireעבור הפלטc - צור מופע של
and_gateבשםdutוחבר את הפורטים
נסו בעצמכם
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule
module testbench;
// משימה 1: הכריזו על reg עבור הקלטים a ו-b
// משימה 2: הכריזו על wire עבור הפלט c
// משימה 3: צרו מופע של and_gate בשם dut
// חברו את .a(a), .b(b), .c(c)
initial begin
a = 0; b = 0; #10 $display("%d & %d = %d", a, b, c);
a = 0; b = 1; #10 $display("%d & %d = %d", a, b, c);
a = 1; b = 0; #10 $display("%d & %d = %d", a, b, c);
a = 1; b = 1; #10 $display("%d & %d = %d", a, b, c);
$finish;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים14יסודות ה־Testbench
מהו Testbenchיצירת אותות גירויהצגה וניטורDumpfile ו־Dumpvarsשימוש במשימות מערכתסיכום — Testbench מלא3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין