Using System Tasks
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 77 من 90.
مهام النظام هي أوامر مضمّنة في Verilog تبدأ بعلامة الدولار ($). وهي تنفّذ وظائف مفيدة مثل طباعة الرسائل، وإنهاء المحاكاة، وإنشاء ملفات أشكال الموجات.
لقد تناولنا بالفعل $display و$monitor و$dumpfile و$dumpvars في الدروس السابقة. في هذا الدرس، سنلقي نظرة على مهام نظام إضافية مفيدة في testbench.
مهام النظام الإضافية
| مهمة النظام | الغرض |
|---|---|
$time | إرجاع وقت المحاكاة الحالي |
$finish | إنهاء المحاكاة |
$stop | إيقاف المحاكاة مؤقتًا |
$random | إنشاء رقم عشوائي |
$time
يعيد وقت المحاكاة الحالي. مفيد لتتبّع وقت حدوث الأحداث.
$display("Current time is %0t", $time);$finish
ينهي المحاكاة. استخدمه دائمًا في نهاية testbench الخاص بك.
$finish;$stop
يوقف simulation مؤقتًا. يمكن استئنافها باستخدام أمر simulator. مفيد لتصحيح الأخطاء.
$stop;$random
يُنشئ رقمًا عشوائيًا. مفيد لإنشاء مُحفّز اختبار عشوائي.
reg [7:0] rand_value;
rand_value = $random;مثال باستخدام مهام النظام المتعددة
module system_tasks_demo;
reg [7:0] data;
integer i;
initial begin
$display("Simulation started at time %0t", $time);
for (i = 0; i < 5; i = i + 1) begin
data = $random;
$display("Random value %d: %b", i, data);
end
$stop;
#10 $display("Resumed at time %0t", $time);
$display("Simulation finished at time %0t", $time);
$finish;
end
endmoduleالتحدي
Add مهام النظام المفقودة إلى testbench هذا.
ما يجب فعله:
- Add
$displayلطباعة current time في البداية - Add
$displayلطباعة current time في النهاية - Add
$finishلإنهاء simulation
جرّب بنفسك
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: أضف $display مع الوقت الحالي في البداية
// التنسيق: "Start time: %0t"
$monitor("Time %0t: a=%b, b=%b, c=%b", $time, a, b, c);
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
// TODO: أضف $display مع الوقت الحالي في النهاية
// التنسيق: "End time: %0t"
// TODO: أضف $finish
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge14Testbench Basics
What Is A TestbenchCreating StimulusDisplay And MonitorDumpfile And DumpvarsUsing System TasksRecap - Full Testbench3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logicتدرّب بنفسك: مترجم Verilog عبر الإنترنت