Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

توجيه Timescale

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

تحدد التوجيهية timescale وحدة الوقت (time unit) ودقة الوقت (time precision) للمحاكاة. وهي تخبر المحاكي بكيفية تفسير قيم التأخير مثل #10.

في الدروس السابقة، استخدمنا التأخيرات مثل #10 دون تحديد ما يعنيه "10". هل هي 10 نانو ثانية؟ أم 10 بيكو ثانية؟ التوجيه timescale يجيب على هذا السؤال.

الصياغة (Syntax):

`timescale time_unit / time_precision
الجزءالمعنىمثال
time_unitالوحدة الأساسية للتأخيرات1ns
time_precisionمدى دقة المحاكاة المطلوبة1ps

علامة ` القبلية قبل timescale تعني أنها موجّه للمترجم (compiler directive).

مثال

`timescale 1ns / 1ps
  • time_unit = 1ns ← تعني #10 10 nanoseconds
  • time_precision = 1ps ← يقوم المحاكاة بالتقريب لأقرب بيكوثانية

قيم timescale الشائعة

وحدة الوقتالدقةحالة الاستخدام
1ns / 1nsنانوثانيةمحاكاة بسيطة
1ns / 1psبيكوثانيةأكثر دقة
1ps / 1psبيكوثانيةتصاميم عالية السرعة
1us / 1nsميكروثانيةمحاكاة بطيئة

كيف تؤثر على التأخيرات (Delays)

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // ينتظر 10 نانوثانية
end

بدون timescale، تفترض بعض أجهزة المحاكاة قيمة افتراضية (غالباً 1ns). من الأفضل دائماً تحديدها.

قواعد مهمة

القاعدةالشرح
يجب أن تكون خارج الموديولاتتوضع قبل أي تعريف للموديول
رمز Backtick`timescale وليس 'timescale 
وحدة الوقت (Time unit) ≥ دقة الوقت (time precision)1ns / 1ps مقبول، بينما 1ps / 1ns غير مقبول
تؤثر على جميع التأخيرات في الملفالتأخيرات العامة، تأخيرات البوابات، وتأخيرات الإسناد
challenge icon

التحدي

ما يجب فعله:

أضف توجيه timescale المفقود لتمثيل التأخيرات بـ 10ns و 20ns و 30ns.

جرّب بنفسك

// TODO: أضف توجيه timescale (1ns / 1ps)

module timescale_challenge;
  
  initial begin
    $display("Time %0t", $time);
    #10 $display("Time %0t (10ns = 10000ps)", $time);
    #10 $display("Time %0t (20ns = 20000ps)", $time);
    #10 $display("Time %0t (30ns = 30000ps)", $time);
    $finish;
  end
endmodule
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات