Menu
CoddyTech

Dumpfile وDumpvars

جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 76 من 90.

الأشكال الموجية هي تمثيل مرئي لتغيرات الإشارات بمرور الوقت. يوضح الشكل الموجي كيفية تغير الإشارات (مثل clk وa وb وout) أثناء المحاكاة. يعرض المحور الأفقي الوقت، ويعرض المحور الرأسي قيم الإشارات (0 و1 وX وZ).
 

إن $dumpfile و$dumpvars مهمتان من مهام النظام تُستخدمان لإنشاء ملف شكل موجي (ملف VCD) يمكنك عرضه في عارض أشكال موجية مثل GTKWave. يرمز VCD إلى تفريغ تغيّر القيم. وهو ملف يسجّل جميع تغيّرات الإشارات أثناء المحاكاة. يمكنك فتح هذا الملف في عارض أشكال موجية لرؤية الإشارات بصريًا.

$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

أمثلة على مستويات تفريغ المتغيرات

المستوىما يتم تفريغه
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 عبر الإنترنت