Menu
Coddy logo textTech

הנחיית Timescale

חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 70 מתוך 90.

ההנחיה timescale מגדירה את יחידת הזמן ואת דיוק הזמן עבור סימולציה. היא אומרת לסימולטור כיצד לפרש ערכי השהיה כמו #10.

בשיעורים הקודמים השתמשנו בהשהיות כמו #10 בלי לציין מה פירוש "10". האם מדובר ב־10 ננושניות? ב־10 פיקושניות? ההנחיה timescale עונה על השאלה הזאת.

תחביר:

`timescale time_unit / time_precision
חלקמשמעותדוגמה
time_unitיחידת הבסיס לעיכובים1ns
time_precisionרמת הדיוק של הסימולציה1ps

התו backtick ` לפני timescale פירושו שזו הנחיית קומפיילר.

דוגמה

`timescale 1ns / 1ps
  • time_unit = 1ns → #10 פירושו 10 ננו־שניות
  • time_precision = 1ps → הסימולציה מעגלת לפיקו־שנייה הקרובה ביותר

ערכי סולם זמן נפוצים

יחידת זמןדיוקמקרה שימוש
1ns / 1nsננו־שנייהסימולציות פשוטות
1ns / 1psפיקו־שנייהמדויק יותר
1ps / 1psפיקו־שנייהתכנונים במהירות גבוהה
1us / 1nsמיקרו־שנייהסימולציות איטיות

איך זה משפיע על השהיות

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // ממתין 10 ננו־שניות
end

ללא timescale, יש סימולטורים שמניחים ערך ברירת מחדל (לעיתים קרובות 1ns). עדיף לציין אותו תמיד.

כללים חשובים

כללהסבר
חייב להיות מחוץ למודוליםמוצב לפני כל הגדרת מודול
סימן גרש נטוי לאחור`timescale ולא 'timescale 
יחידת הזמן ≥ דיוק הזמן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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין