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 | רק האותות במודול שצוין (לא בתת-המודולים) |
אתגר
הוסף את פקודות $dumpfile ו-$dumpvars החסרות כדי ליצור קובץ צורות גל.
מה לעשות:
- הוסף את
$dumpfileכדי ליצור קובץ בשםwaveform.vcd - הוסף את
$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השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים14יסודות ה־Testbench
מהו Testbenchיצירת אותות גירויהצגה וניטורDumpfile ו־Dumpvarsשימוש במשימות מערכתסיכום — Testbench מלא3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין