Menu
Coddy logo textTech

מהו 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 מסיים את הסימולציה

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

challenge icon

אתגר

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

מה לעשות:

הוסף את החלקים הבאים לספסל הבדיקה:

  1. הצהר על reg עבור הקלטים a ו-b
  2. הצהר על wire עבור הפלט c
  3. צור מופע של 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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין