RTL למתחילים - מה זה Verilog/VHDL?

📚 מסע לעולם עיצוב השבבים - חלק 5 עיצוב שבבים #RTL#Verilog
תוכן עניינים

RTL למתחילים - מה זה Verilog/VHDL?

בפוסטים הקודמים דיברנו על RTL כ”שפה לתיאור חומרה”. עכשיו הגיע הזמן להבין מה זה באמת אומר - ולהכיר את השפות המרכזיות: Verilog ו-VHDL.

מה זה Verilog?

Verilog היא שפת תיאור חומרה (HDL - Hardware Description Language) שנוצרה ב-1984.

היא מאפשרת למהנדסים לתאר:

  • איך נתונים זורמים במעגל
  • מה קורה בכל פעימת שעון
  • איך יחידות מגיבות לקלטים
  • מה הקשרים בין רכיבים שונים

Verilog לא רצה כמו Python או C. הוא מתאר מבנה לוגי שיהפוך למעגל.

מה זה VHDL?

VHDL (VHSIC Hardware Description Language) היא שפה דומה, שפותחה בשנות ה-80 על ידי הצבא האמריקאי.

היא יותר מילולית, יותר מפורטת, ופחות דומה לשפות תכנות רגילות.

היום Verilog ו-SystemVerilog הם הנפוצים יותר בתעשייה, במיוחד ב-AI ושבבים מתקדמים.

למה RTL הוא “תיאור” ולא “קוד שרץ”?

כי בחומרה:

הכול קורה במקביל

בניגוד לתוכנה שמבצעת פקודה אחר פקודה, בחומרה כל הבלוקים עובדים בו-זמנית.

הכול תלוי בשעון (Clock)

השבב מתקדם בפעימות שעון. כל פעימה = מחזור חדש.

ה-RTL מתאר מה קורה בכל מחזור שעון.

אין “ריצה” - יש תרגום לחומרה

RTL לא מורץ על מעבד. הוא מתורגם לשערים, טרנזיסטורים ונתיבים אמיתיים.

איך נראה Verilog בפועל?

הנה דוגמה פשוטה מאוד:

module adder (
    input [7:0] a,
    input [7:0] b,
    output [7:0] sum
);
    assign sum = a + b;
endmodule

מה כתוב כאן?

  • module adder - זה בלוק בשם “adder”
  • input [7:0] a, b - שתי כניסות של 8 סיביות
  • output [7:0] sum - יציאה של 8 סיביות
  • assign sum = a + b - חבר את a ו-b ושים בתוצאה ב-sum

זה לא פונקציה שרצה. זה תיאור של מעגל שמחבר שני מספרים.

מושגים בסיסיים ב-RTL

רגיסטרים (Registers)

מקומות שמחזיקים ערכים בין מחזורי שעון.

דוגמה:

always @(posedge clk) begin
    counter <= counter + 1;
end

מה זה אומר? בכל עליית שעון (posedge clk) - הוסף 1 ל-counter.

Always Blocks

תיאור של מה קורה במצבים מסוימים:

  • always @(posedge clk) - בכל עליית שעון
  • always @(*) - בכל שינוי של אחד האותות

Assign

חיבור ישיר ללא רגיסטר:

assign output_signal = input_signal & enable;

זה אומר: output_signal יהיה תמיד שווה ל-AND בין input_signal ו-enable.

מה ההבדל בין Verilog ל-SystemVerilog?

SystemVerilog הוא הרחבה מודרנית של Verilog:

  • תחביר יותר עשיר
  • תמיכה ב-UVM (לבדיקות)
  • כלים מתקדמים יותר
  • נפוץ מאוד בפרויקטים חדשים

אבל העיקרון זהה: תיאור התנהגות חומרה.

למה צריך ללמוד RTL?

כי זו השפה שבה משתמשים כדי:

  • לעצב שבבים מותאמים אישית
  • לבנות מאיצי AI
  • לפתח יחידות חישוב ייעודיות
  • לעבוד על SoC, FPGA, ASIC

בלי RTL - אין עיצוב חומרה.

משל פשוט

חשבו על Verilog כעל שרטוט הנדסי.

כשאדריכל מתכנן בניין, הוא לא בונה את הבניין עצמו - הוא מצייר תוכנית שמראה:

  • איפה כל קיר
  • איפה כל חדר
  • איך הכול מחובר

Verilog הוא השרטוט של השבב. הוא מתאר מה צריך להיות - ומאוחר יותר, כלים אוטומטיים בונים את זה.

סיכום

RTL (Verilog/VHDL) הוא:

  • שפת תיאור חומרה
  • לא קוד שרץ, אלא תיאור של מעגלים
  • מבוסס על רגיסטרים, שעונים, ולוגיקה מקבילית
  • הבסיס לכל עיצוב שבבים מודרני

זו השפה שמהנדסי חומרה כותבים בה את החזון שלהם - לפני שהוא הופך לסיליקון אמיתי.


בפוסט הבא נדבר על ארכיטקטורת שבב - השלב שבו מחליטים מה השבב יכיל, איך היחידות יתקשרו, ומה תהיה המערכת הכוללת.

תגובות