Menu
Coddy logo textTech

Dumpfile ו־Dumpvars

חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 76 מתוך 90.

צורות גל הן ייצוג חזותי של שינויים באותות לאורך זמן. צורת גל מציגה כיצד אותות (כמו clk, a, b, out) משתנים במהלך סימולציה. הציר האופקי מציג את הזמן, והציר האנכי מציג את ערכי האותות (0, 1, X, Z).
 

$dumpfile ו־$dumpvars הן משימות מערכת המשמשות ליצירת קובץ צורת גל (קובץ VCD) שאפשר להציג במציג צורות גל כמו GTKWave. VCD הוא ראשי תיבות של Value Change Dump. זהו קובץ שמתעד את כל שינויי האותות במהלך הסימולציה. אפשר לפתוח את הקובץ הזה במציג צורות גל כדי לראות את האותות באופן חזותי.

$dumpfile

$dumpfile מציין את השם של קובץ צורות הגל שייווצר.

תחביר:

$dumpfile("filename.vcd");

דוגמה:

$dumpfile("my_waveform.vcd");

כך נוצר קובץ בשם my_waveform.vcd.

$dumpvars

$dumpvars מציין אילו אותות לתעד בקובץ צורת הגל.

תחביר:

$dumpvars(level, module_name);
פרמטרמשמעות
levelכמה רמות בהיררכיה להוציא (0 = כל הרמות)
module_nameמאיזה מודול להוציא את האותות

הערה: היררכיה פירושה מודולים בתוך מודולים אחרים. שימוש ב־0 כותב את כל האותות מהמודול העליון ומכל מודול שבתוכו, ואילו 1 כותב רק את האותות מהמודול העליון.

שימוש נפוץ

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → יוצר קובץ בשם dump.vcd
  • $dumpvars(0, testbench) → שומר את כל האותות במודול testbench ובכל תתי-המודולים

דוגמה עם סביבת בדיקה

module or_gate (
  input x,
  input y,
  output z
);
  assign z = x | y;
endmodule

module testbench;
  reg x, y;
  wire z;
  
  or_gate dut (
    .x(x),
    .y(y),
    .z(z)
  );

  initial begin
    $dumpfile("dump.vcd");
    $dumpvars(0, testbench);
    
    $display("Creating waveform file...");
    
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    $finish;
  end
endmodule

דוגמאות לרמות Dumpvars

רמהמה נכלל בקובץ הפלט
0כל האותות במודול ובכל תת-המודולים
1רק האותות במודול שצוין (לא בתת-המודולים)
challenge icon

אתגר

הוסף את פקודות $dumpfile ו-$dumpvars החסרות כדי ליצור קובץ צורות גל.

מה לעשות:

  1. הוסף את $dumpfile כדי ליצור קובץ בשם waveform.vcd
  2. הוסף את $dumpvars כדי לשמור את כל האותות במודול testbench

נסו בעצמכם

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

module testbench;
  reg a, b;
  wire c;
  
  and_gate dut (
    .a(a),
    .b(b),
    .c(c)
  );

  initial begin
    // TODO: הוסיפו את $dumpfile כדי ליצור את "waveform.vcd"
    
    
    // TODO: הוסיפו את $dumpvars כדי לשמור את כל האותות ב-testbench
    // רמז: $dumpvars(0, testbench);
    
    if ($test$plusargs("vcd")) begin
        $display("VCD file created successfully");
    end
    
    $display("Simulation running...");
    
    a = 0; b = 0; #10;
    a = 0; b = 1; #10;
    a = 1; b = 0; #10;
    a = 1; b = 1; #10;
    
    $display("Simulation complete. Open waveform.vcd");
    $finish;
  end
endmodule
quiz iconבחנו את עצמכם

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

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

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