يحتوي هذا الدليل على مصادر GHDL، وهو محلل مفتوح المصدر، ومترجم، ومحاكي، ومركب (تجريبي) لـ VHDL، وهي لغة وصف الأجهزة (HDL). GHDL ليس مترجمًا: فهو يسمح لك بتحليل المصادر وتوضيحها لتوليد كود الجهاز من تصميمك. يعد تنفيذ البرنامج الأصلي هو الطريقة الوحيدة للمحاكاة عالية السرعة.
دعم كامل لإصدارات 1987 و1993 و2002 من معيار IEEE 1076 VHDL، وجزئي لمراجعات 2008 و2019.
الدعم الجزئي للPSL.
باستخدام منشئ الأكواد (LLVM، أوGC، أو x86_64/i386 فقط، وهو مدمج)، فهو أسرع بكثير من أي محاكي مفسرة. يمكنه التعامل مع التصميمات الكبيرة جدًا، مثل leon3/grlib.
يعمل GHDL على أنظمة GNU/Linux وWindows وmacOS؛ على x86
و x86_64
و armv6/armv7/aarch32
و aarch64
و ppc64
. يمكنك تنزيل الأصول الليلية بحرية، أو استخدام صور OCI (المعروفة أيضًا باسم حاويات Docker/Podman)، أو محاولة إنشائها على جهازك الخاص (راجع "الحصول على GHDL" أدناه).
يمكن كتابة الأشكال الموجية لملفات GHW أو VCD أو FST. إلى جانب عارض الشكل الموجي المعتمد على واجهة المستخدم الرسومية (GUI) ومحرر نصوص جيد، تعد GHDL أداة قوية جدًا لكتابة التعليمات البرمجية الخاصة بك واختبارها ومحاكاتها.
يتم دعم المحاكاة المشتركة مع التطبيقات الأجنبية من خلال واجهة Verilog الإجرائية (VPI) و/أو VHPIDIRECT. راجع ghdl.github.io/ghdl-cosim.
يمكن تجميع تصميمات VHDL المعقدة بشكل تعسفي في قائمة VHDL 1993 netlist، والتي يمكن استخدامها ضمنيًا أو صراحةً في أطر التوليف مفتوحة المصدر أو البائعين.
GHDL هو برنامج مجاني:
تم تصميم GHDL للتكامل بسلاسة مع العديد من الأدوات الشائعة مفتوحة المصدر، مما يسمح للمستخدمين بالاستفادة من الإمكانات الإضافية لكل من سير عمل المحاكاة والتوليف.
إحدى عمليات التكامل الرئيسية هي مع Yosys، وهي أداة تجميع رائدة مفتوحة المصدر. باستخدام البرنامج المساعد ghdl-yosys، يمكن استخدام GHDL كواجهة أمامية لـ Yosys، مما يتيح للمستخدمين تجميع تصميمات VHDL مباشرة. وهذا يجعل من الممكن الانتقال من المحاكاة إلى التوليف دون مغادرة بيئة GHDL، مما يؤدي إلى تبسيط تدفق التصميم.
يتكامل GHDL أيضًا مع cocotb، وهو إطار عمل محاكاة مشترك قائم على coroutine يسمح باختبار تصميمات VHDL المستندة إلى Python. يعد هذا مفيدًا بشكل خاص لكتابة اختبارات الاختبار المعقدة في Python والتفاعل مع محاكاة VHDL في الوقت الفعلي.
للتحقق، يدعم GHDL التكامل مع أطر عمل مثل OSVVM، وUVVM، وVUnit، مما يوفر للمستخدمين مجموعة كاملة من الأدوات للتحقق من تصميمات VHDL. تعمل مكتبات التحقق هذه على تمكين تقنيات الاختبار المتقدمة مثل التحقق العشوائي المقيد والتغطية الوظيفية واختبار الانحدار الآلي.
معًا، تجعل عمليات تكامل الطرف الثالث هذه من GHDL أداة شاملة للتصميم الرقمي والمحاكاة والتحقق والتوليف، وهي مناسبة لكل من المطورين الفرديين والفرق الكبيرة.
الحزم المعدة مسبقاً:
باستخدام عامل ميناء :
بالنسبة لأولئك الذين يفضلون النقل بالحاويات، يتوفر GHDL أيضًا كصور Docker. يعد هذا مفيدًا بشكل خاص إذا كنت تريد تجنب إدارة التبعيات يدويًا أو تحتاج إلى بيئة متسقة عبر أجهزة مختلفة. يمكنك استخدام الحاويات من ghdl/docker أو hdl/containers، وكلاهما يوفر بيئات مكونة مسبقًا مع تثبيت GHDL. يضمن تشغيل GHDL داخل حاوية Docker بقاء إعدادك معزولًا عن نظامك المضيف، مما يسهل صيانته وتكراره عبر منصات مختلفة. يعد هذا الخيار مثاليًا للمستخدمين الذين يبحثون عن تثبيت مبسط وخالي من المتاعب.
بناء GHDL من المصدر :
يمكن للمستخدمين المتقدمين اختيار بناء GHDL من المصدر، مما يسمح بالتخصيص والوصول إلى الميزات التجريبية. يمكن أن يكون البناء من المصدر مفيدًا أيضًا للأنظمة الأساسية أو التكوينات التي لا تغطيها الحزم المعدة مسبقًا. يوفر دليل بناء GHDL إرشادات مفصلة حول كيفية تجميع GHDL، بما في ذلك تحديد الواجهة الخلفية المفضلة لديك (LLVM، أوGC، أو mcode). تمنح هذه العملية المستخدمين التحكم الكامل في إعداداتهم وتسمح لهم بتخصيص GHDL ليناسب احتياجاتهم الخاصة.
ملاحظات خاصة بالمنصة :
apt
أو dnf
أو pacman
، اعتمادًا على التوزيع. عادةً ما يكون التثبيت بسيطًا، ويتم تحديث الحزم المعدة مسبقًا بانتظام.يقدم GHDL العديد من المزايا التي تجعله أداة قوية لمحاكاة وتوليف VHDL. إحدى الفوائد الرئيسية هي إنشاء التعليمات البرمجية الأصلية، مما يسمح بأوقات محاكاة أسرع مقارنة بالمحاكيات المفسرة. ويُلاحظ هذا التعزيز في الأداء بشكل خاص في التصميمات الكبيرة والمعقدة، حيث يمكن أن تكون سرعة المحاكاة عاملاً حاسماً.
بالإضافة إلى الأداء، فإن GHDL متعدد الاستخدامات للغاية. وهو يدعم مراجعات متعددة لمعيار VHDL، بما في ذلك إصدارات 1987 و1993 و2002 و2008 و2019. هذا النطاق الواسع من التوافق يجعل GHDL مناسبًا للمشاريع القديمة بالإضافة إلى التصميمات المتطورة. سواء كنت تعمل بمعايير VHDL الأقدم أو أحدث المراجعات، فإن GHDL توفر المرونة اللازمة للتعامل معها جميعًا.
فائدة أخرى مهمة هي دعم GHDL عبر الأنظمة الأساسية. يعمل على أنظمة التشغيل الرئيسية مثل Linux وWindows وmacOS، ويدعم أبنية مختلفة مثل x86 وx86_64 وARM وPPC64. يتيح ذلك للمطورين استخدام GHDL على مجموعة متنوعة من تكوينات الأجهزة، مما يجعله في متناول نطاق واسع من المستخدمين.
إن تكامل GHDL مع الأدوات الشائعة مفتوحة المصدر مثل Yosys للتوليف وcocotb للتحقق يزيد من فائدته. تسمح عمليات التكامل هذه للمستخدمين بتوسيع إمكانيات GHDL إلى ما هو أبعد من المحاكاة، مما يجعلها حلاً شاملاً لتصميم VHDL والتحقق وسير عمل التوليف.
ترحب GHDL بمساهمات المجتمع. سواء كنت مهتمًا بتحسين التوثيق، أو إصلاح الأخطاء، أو إضافة ميزات جديدة، فهناك العديد من الطرق للمشاركة. تعد المساهمات طريقة رائعة للمساعدة في تحسين الأداة ومعرفة المزيد حول كيفية عمل GHDL داخليًا.
إليك كيف يمكنك البدء بالمساهمة:
ابحث عن مشكلة للعمل عليها : تحقق من المشكلات المفتوحة في مستودع GitHub. يتم تصنيف المشكلات غالبًا حسب الصعوبة أو النوع (على سبيل المثال، "الإصدار الأول الجيد" للمبتدئين). يمكنك أيضًا اقتراح أفكارك أو تحسيناتك الخاصة.
تفرع واستنساخ المستودع : بمجرد اختيار مشكلة للعمل عليها، قم بتقسيم مستودع GHDL إلى حساب GitHub الخاص بك. انسخ المستودع المتشعب إلى جهازك المحلي لإجراء التغييرات.
إنشاء فرع جديد : من الممارسات الجيدة إنشاء فرع جديد لكل إصدار أو ميزة تعمل عليها. يساعد هذا في إبقاء تغييراتك معزولة ويسهل على المشرفين مراجعة عملك.
إرسال طلب سحب : بعد إجراء التغييرات وإلزامها بفرعك، أرسل طلب سحب (PR) إلى مستودع GHDL الرئيسي. تأكد من تضمين وصف واضح لما تتناوله علاقاتك العامة وأي سياق أو خطوات اختبار ذات صلة.
للحصول على إرشادات أكثر تفصيلاً، راجع دليل المساهمة الخاص بنا (عند إنشائه)، والذي يتضمن معايير الترميز وتعليمات الاختبار وأفضل الممارسات لتقديم المساهمات.
تسمح أداة CLI بالتحليل والتجميع والمحاكاة والتوليف (التجريبي) لإنشاء قوائم شبكة VHDL 1993. إنه مكتوب بلغة Ada وC، ويتم دعم ثلاث واجهات خلفية مختلفة، والتي تسمى أحيانًا ghdl_mcode
و ghdl_gcc
و ghdl_llvm
. هذه هي نقطة الدخول لمعظم المستخدمين.
[تجريبي] ghdl-yosys-plugin هو دمج GHDL كوحدة ملحقة للواجهة الأمامية لـ Yosys Open SYnthesis Suite، الذي يستخدم مكتبة libghdl
(التي تم إنشاؤها باستخدام --enable-synth
).
يقوم ghdl-ls
(جزء من pyGHDL، انظر أدناه) بتنفيذ بروتوكول خادم اللغة (LSP) في بايثون. يتم الوصول إلى ميزات تحليل VHDL التي توفرها GHDL من خلال libghdl
. ويمكن دمج ذلك في برامج تحرير النصوص أو IDES، مثل Vim أو Emacs أو Atom أو Visual Studio Code. راجع خادم اللغة ghdl/ghdl.
ghdl-ls
. libghdl
هي مكتبة مشتركة تتضمن مجموعة فرعية من الميزات العادية بالإضافة إلى بعض الميزات التي ستستخدمها أدوات الامتداد (مثل pyGHDL
). تم إنشاء هذا جنبًا إلى جنب مع GHDL العادي وهو يدعم كلاً من التعليمات البرمجية غير القابلة للتوليف والقابلة للتوليف. ومع ذلك، هذا ليس للمستخدمين، ولكن للأدوات المبنية على الجزء العلوي من النواة. عند تكوينها مع --enable-synth
، تتضمن هذه المكتبة المشتركة ميزات تركيبية أيضًا.
pyGHDL هي واجهة Python لـ libghdl
. حاليًا، يتم استخدامه فقط بواسطة ghdl-ls
؛ ومع ذلك، يمكن أن يكون مفيدًا للمستخدمين المتقدمين الذين يرغبون في إنشاء أدوات مساعدة لـ Python استنادًا إلى GHDL. هناك عمل جار لربط libghdl بـ pyVHDLModel (راجع pyGHDL.dom
).
ghdl_simul
، الذي يدعم المحاكاة المفسرة، متاح لأسباب تاريخية ولتطوير/تصحيح الأخطاء فقط. إنها بطيئة جدًا مقارنة بالمحاكاة المجمعة "العادية" وليست جميع الميزات مدعومة.