RTL למתחילים - מה זה Verilog/VHDL?
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) הוא:
- שפת תיאור חומרה
- לא קוד שרץ, אלא תיאור של מעגלים
- מבוסס על רגיסטרים, שעונים, ולוגיקה מקבילית
- הבסיס לכל עיצוב שבבים מודרני
זו השפה שמהנדסי חומרה כותבים בה את החזון שלהם - לפני שהוא הופך לסיליקון אמיתי.
בפוסט הבא נדבר על ארכיטקטורת שבב - השלב שבו מחליטים מה השבב יכיל, איך היחידות יתקשרו, ומה תהיה המערכת הכוללת.
📚 פוסטים נוספים בסדרה: מסע לעולם עיצוב השבבים
- חלק 0 מבוא לסדרה: איך שבב נולד? - מסע מלא מרעיון ועד ייצור
- חלק 1 מה זה שבב? ההסבר הפשוט ביותר להתחלה בעולם החומרה
- חלק 2 מהי מערכת על שבב (SoC) - ולמה שבב אחד יכול להכיל עולם שלם בתוכו?
- חלק 3 איך בכלל 'כותבים' חומרה? הצעד הראשון להבנת RTL ועולם ה-Frontend
- חלק 4 מהו Frontend בעולם השבבים?
- חלק 6 מהי ארכיטקטורת שבב - ולמה היא השלב שבו מחליטים מה השבב באמת יהיה?
- חלק 7 מה זה Verification - ולמה 70% מפיתוח שבבים הוא בדיקות?
- חלק 8 מהי Synthesis - וכיצד RTL הופך לשערים אמיתיים בשבב?
- חלק 9 מה זה Place & Route - ואיך ממצבים את השערים על השבב ומחברים ביניהם?
- חלק 10 מה זה STA - Static Timing Analysis - ואיך מוודאים שהשבב יעבוד בתדר הנכון?
- חלק 11 Simulation, FPGA, Emulation - איך בודקים את השבב לפני הייצור?
- חלק 12 מה זה Tapeout - והאם באמת שולחים קלטת לייצור?
- חלק 13 FAB, Bring-Up ו-Post-Silicon - איך השבב הופך לחי?
- חלק 14 סיכום הסדרה: המסע המלא מרעיון לשבב - כל השלבים במבט אחד