Menu
CoddyTech

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 אונליין