أولًا، فحص للواقع
لست بحاجة إلى تثبيت أي شيء لتعلّم Verilog. كل محرر تفاعلي في هذه المستندات يُشغّل Verilog حقيقيًا عبر Icarus Verilog داخل sandbox، بما في ذلك عارض الموجات. إن كنت هنا لتعلّم اللغة، فتخطَّ هذه الصفحة وعد إليها حين تريد العمل على مشروع أطول محليًا.
لا تزال تريد تثبيتًا محليًا؟ تابع القراءة.
ماذا يعني "تثبيت Verilog" فعلًا
Verilog لغة، لا برنامج. لتشغيله تحتاج:
- محاكٍ - الأداة التي تُترجم ملفات
.vالخاصة بك وتُشغّلها. لمعظم المتعلمين هذا هو Icarus Verilog، الذي يقدم لك مترجمiverilogووقت التشغيلvvp. - عارض موجات - عادةً GTKWave - يقرأ ملفات
.vcdالتي يُنتجها testbench لديك. - محرر نصوص - VS Code مع إضافة Verilog هو الخيار الشائع، لكن أي شيء يعمل.
سلاسل أدوات الشركات (Xilinx Vivado، Intel Quartus، Synopsys VCS، Cadence Xcelium) موجودة لبرمجة FPGA وأعمال ASIC. وهي ضخمة، وغالبًا مُرخّصة، ومبالغة في الحجم للتعلم. التزم بـ Icarus.
التثبيت على macOS
أسرع طريق هو Homebrew:
brew install icarus-verilog gtkwave
يُثبّت ذلك المترجم وعارض الموجات معًا. للتحقق:
iverilog -V
gtkwave --version
ينبغي أن ترى أرقام الإصدارات من كليهما. iverilog يضع نفسه على PATH تلقائيًا. GTKWave يُثبّت حزمة تطبيق ضمن /Applications وكذلك أمر gtkwave في سطر الأوامر يمكنك تشغيله من terminal.
إن لم يكن Homebrew مُثبّتًا، فاتبع التعليمات في brew.sh أولًا - أمر curl واحد - ثم ارجع.
التثبيت على Linux
على توزيعات Debian (Ubuntu، Mint، Pop!_OS):
sudo apt update
sudo apt install iverilog gtkwave
على Fedora / أنظمة RHEL:
sudo dnf install iverilog gtkwave
على Arch:
sudo pacman -S iverilog gtkwave
ثم تحقّق بالطريقة نفسها:
iverilog -V
gtkwave --version
الإصدار المُحزَّم يتأخر أحيانًا عن النسخة المُحدّثة بإصدار واحد. لمعظم التعلم لا بأس بذلك. إن احتجت إصدارًا أحدث، فابنِه من المصدر - مستودع GitHub للمشروع يحوي التعليمات، وهو على بعد ./configure && make && sudo make install.
التثبيت على Windows
أسهل طريق هو المُثبّت الجاهز الذي يصونه مجتمع iverilog على bleyer.org (ابحث عن "iverilog Windows"). يحزم Icarus Verilog وGTKWave وسلسلة أدوات GCC التي يحتاجها Icarus داخليًا.
- نزّل أحدث مُثبّت (عادةً
iverilog-vXX-setup.exe). - شغّله. اقبل الإعدادات الافتراضية ما لم يكن لديك سبب للعدول.
- حين يسأل المُثبّت، اترك "Add to PATH" مُحدَّدًا.
- افتح نافذة PowerShell أو Command Prompt جديدة وتحقّق:
iverilog -V
gtkwave --version
إن نسيت إضافة PATH، فالثنائي يقع في مكان مثل C:\iverilog\bin\iverilog.exe. إما أن تضيف C:\iverilog\bin إلى PATH الخاص بمستخدمك من System Properties، أو أعد تشغيل المُثبّت ووضّح الخيار.
WSL2 أيضًا خيار جيد على Windows - ثبّت Ubuntu من Microsoft Store واتّبع تعليمات Linux داخلها. سيكون لديك سير عمل أشبه بـ Unix.
ترجمة وتشغيل أول ملف لك
بعد التثبيت، يبدو سير العمل كالتالي. احفظ ملفًا باسم hello.v:
module hello;
initial begin
$display("hello from verilog");
$finish;
end
endmodule
ترجمته إلى ثنائي محاكاة:
iverilog -o hello hello.v
iverilog هو المترجم. -o hello يُسمّي الخرج. hello.v هو مصدرك.
شغّل المحاكاة:
vvp hello
من المفترض أن ترى:
hello from verilog
هذه هي الحلقة المحلية بأكملها. من هنا يمكنك توزيع تصميمك عبر ملفات متعددة (iverilog -o sim *.v)، أو استخدام راية -g2012 لتمكين ميزات SystemVerilog-2012، أو توجيه المخرجات إلى سكربتاتك الخاصة.
توليد وعرض مخطط موجة
أضف $dumpfile و$dumpvars إلى testbench لديك، شغّله، وافتح VCD الناتج في GTKWave:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, test);
// ...
end
بعد انتهاء vvp sim، سيكون لديك dump.vcd بجوار مصدرك. افتحه:
gtkwave dump.vcd
يُحمّل GTKWave الملف ويعرض شجرة الإشارات في جانب. اسحب الإشارات التي تهمك إلى منطقة الموجة. نغطّي هذا بالتفصيل في Dumpfile وVCD.
أخطاء شائعة
iverilog: command not found - الثنائي ليس على PATH. على Windows هذا يعني عادةً أن المُثبّت لم يُشغَّل مع تفعيل تحديث PATH. على macOS/Linux يعني عادةً أن Homebrew/apt لم تكتمل، أو أنك في shell لم يُعَد تحميل PATH (أغلق terminal وافتحه من جديد).
syntax error على سطر يبدو صحيحًا - تأكّد من أنك لا تستخدم ميزة SystemVerilog في وضع Verilog العادي. مرّر -g2012 إلى iverilog لتمكين SystemVerilog-2012:
iverilog -g2012 -o sim main.v
Unknown module أثناء الترجمة - إما أن ملف المصدر الخاص بـ module لم يُمرَّر إلى iverilog، أو أن اسم module في النسخة (instantiation) لا يطابق إعلان module بالضبط. Verilog حسّاس لحالة الأحرف.
موجة فارغة في GTKWave - testbench لديك لم يستدعِ $dumpfile و$dumpvars، أو أن المحاكاة وصلت إلى $finish قبل أن تتغيّر أي إشارة. أضف على الأقل $dumpvars(0, top) ودَع المحاكاة تعمل وقتًا كافيًا للانتقالات.
ماذا بعد
سواء ثبّتّ محليًا أو بقيت على المتصفح، فإن المستند التالي يمشي بك خلال كتابة أول module كامل من الصفر - إعلان module، والمنافذ، وقطعة صغيرة من المنطق التوافقي، وtestbench حولها.
الأسئلة الشائعة
كيف أُثبّت Verilog؟
لا يوجد برنامج واحد اسمه 'Verilog' - إنها لغة، وأنت تُثبّت مترجمًا/محاكيًا. للتعلم، الخيار القياسي هو Icarus Verilog (أمرا iverilog وvvp)، مع GTKWave لعرض الموجات. على macOS استخدم brew install icarus-verilog gtkwave؛ على Debian/Ubuntu استخدم apt install iverilog gtkwave؛ على Windows نزّل المُثبِّت الجاهز من موقع Bleyer.
هل عليّ تثبيت أي شيء لأتعلّم Verilog؟
لا. المحرر في هذه الصفحة يشغّل شيفرتك تحت iverilog وvvp في السحابة ويعرض مخطط VCD مباشرة. يمكنك إكمال كل مستند في هذه الدروس دون تثبيت أي شيء. يصبح التثبيت محليًا مفيدًا عندما تريد حفظ ملفات، أو إخضاع مشروع للتحكم في الإصدارات، أو العمل على تصميم أكبر من أن يحتمله محرر المتصفح.
ما الفرق بين iverilog وvvp؟
iverilog هو المترجم - يُحوّل ملفات .v الخاصة بك إلى ثنائي محاكاة. أما vvp فهو وقت التشغيل الذي ينفّذ ذلك الثنائي. التسلسل المعتاد هو iverilog -o sim main.v test.v متبوعًا بـ vvp sim. معظم سكربتات سير العمل تغلّف كليهما.
هل Icarus Verilog مجاني؟
نعم. Icarus Verilog مفتوح المصدر تحت GPL/LGPL. لا يوجد خادم تراخيص، ولا فترة تجريبية، وهو يعمل للتعلم والاستخدام التجاري. البدائل التجارية (ModelSim، VCS، Xcelium) مدفوعة؛ لكل ما تغطيه هذه المستندات، Icarus كافٍ.
كيف أتحقق من إصدار iverilog لديّ؟
افتح terminal وشغّل iverilog -V. من المفترض أن ترى رقم إصدار مثل Icarus Verilog version 12.0. إذا ظهر 'command not found'، فإن الثنائي ليس على PATH - أعِد تشغيل المُثبّت أو أضف مجلد bin إلى إعداد shell لديك.