لغة وصف الأجهزة
في هندسة الحاسوب ، لغة وصف الأجهزة ( HDL ) هي لغة حاسوب متخصصة تستخدم لوصف بنية وسلوك الدوائر الإلكترونية ، وعادة ما تستخدم لتصميم الدوائر المتكاملة الخاصة بالتطبيقات (ASICs) ولبرمجة مصفوفات البوابات القابلة للبرمجة الميدانية (FPGAs).
تُمكّن لغة وصف الأجهزة من تقديم وصف دقيق ورسمي للدائرة الإلكترونية، مما يسمح بتحليلها ومحاكاتها آليًا . كما تُمكّن من تحويل وصف لغة وصف الأجهزة إلى قائمة توصيلات (مواصفات للمكونات الإلكترونية المادية وكيفية توصيلها ببعضها)، والتي يمكن بعد ذلك وضعها وتوجيهها لإنتاج مجموعة الأقنعة المستخدمة في إنشاء دائرة متكاملة .
لغة وصف الأجهزة تشبه إلى حد كبير لغات البرمجة مثل C أو ALGOL ؛ فهي وصف نصي يتألف من تعابير وعبارات وهياكل تحكم. أحد الفروق المهمة بين معظم لغات البرمجة ولغة وصف الأجهزة هو أن الأخيرة تتضمن مفهوم الزمن بشكل صريح.
تشكل لغات وصف الأجهزة جزءًا لا يتجزأ من أنظمة أتمتة التصميم الإلكتروني (EDA)، وخاصة بالنسبة للدوائر المعقدة، مثل الدوائر المتكاملة الخاصة بالتطبيقات والمعالجات الدقيقة وأجهزة المنطق القابلة للبرمجة .
تحفيز
نظراً للتعقيد المتزايد للدوائر الإلكترونية الرقمية منذ سبعينيات القرن الماضي (انظر قانون مور )، احتاج مصممو الدوائر إلى وصف منطقي رقمي عالي المستوى دون التقيد بتقنية إلكترونية محددة، مثل منطق اقتران الباعث (ECL) أو منطق الترانزستور-الترانزستور (TTL) أو أشباه الموصلات المعدنية المؤكسدة التكميلية ( CMOS ). وقد تم ابتكار لغات وصف الأجهزة (HDLs) لتطبيق تجريد مستوى نقل السجلات ، وهو نموذج لتدفق البيانات وتوقيت الدائرة. [ 1 ]
توجد لغتان رئيسيتان لوصف الأجهزة: VHDL و Verilog . وتتضمنان ثلاثة أنواع مختلفة من الوصف: وصف تدفق البيانات ، والوصف السلوكي ، والوصف البنيوي . مثال على وصف تدفق البيانات في VHDL:
مكتبة IEEE ؛ استخدم IEEE.STD_LOGIC_1164. الكل ؛الكيان not1 هو منفذ ( أ : إدخال STD_LOGIC ؛ ب : إخراج STD_LOGIC )؛ نهاية not1 ؛بنية سلوكية لـ not1 هي: ابدأ b <= NOT a ؛ انتهى السلوكية ؛بنية البروتين الدهني عالي الكثافة (HDL)
لغات وصف الأجهزة (HDLs) هي تعبيرات نصية قياسية لبنية الأنظمة الإلكترونية وسلوكها بمرور الوقت. وكما هو الحال في لغات البرمجة المتزامنة ، تتضمن قواعد لغة وصف الأجهزة ودلالاتها رموزًا صريحة للتعبير عن التزامن . ومع ذلك، وعلى عكس معظم لغات برمجة البرمجيات ، تتضمن لغات وصف الأجهزة أيضًا مفهومًا صريحًا للوقت، وهو سمة أساسية للأجهزة. تُصنف اللغات التي تقتصر وظيفتها على التعبير عن اتصال الدوائر بين تسلسل هرمي من الكتل، بشكل صحيح، كلغات قوائم الشبكة المستخدمة في التصميم الإلكتروني بمساعدة الحاسوب . يمكن استخدام لغة وصف الأجهزة للتعبير عن التصاميم في بنى هيكلية أو سلوكية أو على مستوى نقل السجلات لنفس وظائف الدائرة؛ في الحالتين الأخيرتين، يحدد المُركِّب بنية الدائرة وتخطيط البوابات المنطقية .
تُستخدم لغات وصف الأجهزة (HDLs) لكتابة مواصفات قابلة للتنفيذ للأجهزة. يُمكّن البرنامج المصمم لتطبيق الدلالات الأساسية لعبارات اللغة ومحاكاة مرور الوقت مصمم الأجهزة من تصميم نموذج لجهاز قبل تصنيعه فعليًا. هذه القابلية للتنفيذ هي ما يُعطي لغات وصف الأجهزة انطباعًا بأنها لغات برمجة ، بينما تُصنف بدقة أكبر كلغات مواصفات أو لغات نمذجة . توجد برامج محاكاة قادرة على دعم نمذجة الأحداث المنفصلة (الرقمية) والزمن المستمر (التناظرية)، وتتوفر لغات وصف أجهزة مُخصصة لكل منهما.
مقارنة مع لغات التحكم في التدفق
من الممكن بالتأكيد تمثيل دلالات الأجهزة باستخدام لغات البرمجة التقليدية مثل C++ ، التي تعمل على دلالات تدفق التحكم بدلاً من تدفق البيانات ، مع العلم أن هذا يتطلب تزويد البرامج بمكتبات فئات واسعة النطاق ومعقدة . عمومًا، لا تتضمن لغات برمجة البرمجيات القدرة على التعبير عن الزمن بشكل صريح، وبالتالي لا يمكنها العمل كلغات لوصف الأجهزة. قبل ظهور System Verilog في عام 2002، كان دمج C++ مع محاكي منطقي من الطرق القليلة لاستخدام البرمجة كائنية التوجه في التحقق من الأجهزة. يُعد System Verilog أول لغة وصف أجهزة رئيسية توفر البرمجة كائنية التوجه وجمع البيانات المهملة.
باستخدام مجموعة فرعية مناسبة من لغة وصف الأجهزة، يستطيع برنامج يُسمى المُركِّب، أو أداة توليف المنطق ، استنتاج عمليات منطق الأجهزة من عبارات اللغة، وإنتاج قائمة توصيلات مكافئة من العناصر الأساسية العامة للأجهزة لتنفيذ السلوك المحدد. تتجاهل المُركِّبات عمومًا أي تعبيرات عن بنيات التوقيت في النص. على سبيل المثال، تستخدم مُركِّبات المنطق الرقمي عادةً حواف الساعة كوسيلة لتوقيت الدائرة، متجاهلةً أي بنيات توقيت. إن القدرة على امتلاك مجموعة فرعية قابلة للتوليف من اللغة لا تجعلها بحد ذاتها لغة وصف أجهزة.
تاريخ
ظهرت أولى لغات وصف الأجهزة في أواخر الستينيات، وكانت تشبه اللغات التقليدية. [ 2 ] أما أول لغة كان لها تأثير دائم فقد وُصفت عام 1971 في كتاب "هياكل الحاسوب" للمؤلفين سي. جوردون بيل وآلان نيويل . [ 3 ] وقد قدّم هذا الكتاب مفهوم مستوى نقل السجلات ، الذي استُخدم لأول مرة في لغة ISP لوصف سلوك جهاز PDP-8 التابع لشركة Digital Equipment Corporation (DEC) . [ 4 ]
انتشرت اللغة على نطاق أوسع مع طرح وحدات PDP-16 RT-Level Modules (RTMs) من شركة DEC وكتاب يشرح استخدامها. [ 5 ] وتبع ذلك تطبيقان على الأقل للغة ISP الأساسية (ISPL وISPS). [ 6 ] [ 7 ] كانت ISPS مناسبة تمامًا لوصف العلاقات بين مدخلات ومخرجات التصميم، وسرعان ما اعتمدتها الفرق التجارية في شركة DEC، والعديد من فرق البحث في الولايات المتحدة وبين حلفائها في حلف شمال الأطلسي ( الناتو ).
لم تنجح منتجات RTM تجارياً وتوقفت شركة DEC عن تسويقها في منتصف الثمانينيات، حيث أصبحت الأساليب الجديدة أكثر شيوعاً، وخاصة التكامل واسع النطاق للغاية (VLSI).
أُنجز عملٌ منفصلٌ حوالي عام 1979 في جامعة كايزرسلاوترن، أسفر عن تطوير لغةٍ تُسمى لغة نقل سجلات كايزرسلاوترن (KARL)، والتي تضمنت ميزات لغة حساب التصميم التي تدعم تخطيط رقائق VLSI وتصميم الأجهزة الهيكلية. وشكّل هذا العمل أيضًا أساس لغة ABL، وهي لغةٌ شقيقةٌ تفاعليةٌ للرسومات، والتي يُشير اسمها إلى "لغة مخططات الكتل". [ 8 ] طُوّرت لغة ABL في أوائل ثمانينيات القرن العشرين من قِبل مركز دراسات ومختبرات الاتصالات ( CSELT ) في تورينو، إيطاليا، مما أدى إلى إنتاج محرر تصميم VLSI الرسومي ABLED. وفي منتصف ثمانينيات القرن العشرين، طُوّر إطار عمل لتصميم VLSI باستخدام لغتي KARL وABL من قِبل اتحادٍ دوليٍّ مموّلٍ من قِبل المفوضية الأوروبية. [ 9 ]
بحلول أواخر سبعينيات القرن العشرين، شاع استخدام تصميم الدوائر المنطقية القابلة للبرمجة (PLDs)، مع أن هذه التصاميم كانت تقتصر في المقام الأول على تصميم آلات الحالة المحدودة . وفي عام ١٩٨٠، استخدمت شركة داتا جنرال هذه الأجهزة نفسها لتصميم جهاز داتا جنرال إكليبس MV/8000 ، وبدأ الطلب التجاري يتزايد على لغة برمجة تتوافق معها بشكل جيد. وفي عام ١٩٨٣، قدمت شركة داتا آي/أو لغة ABEL لتلبية هذا الطلب.
في عام ١٩٨٥، مع تحوّل التصميم نحو الدوائر المتكاملة واسعة النطاق (VLSI)، قدّمت شركة Gateway Design Automation لغة Verilog ، وأصدرت شركة Intermetrics النسخة الكاملة الأولى من لغة وصف الأجهزة الخاصة بالدوائر المتكاملة فائقة السرعة ( VHDL ). طُوّرت VHDL بناءً على طلب وزارة الدفاع الأمريكية، وتحديدًا برنامج الدوائر المتكاملة فائقة السرعة (VHSIC)، واستندت إلى لغة البرمجة Ada ، وإلى الخبرة المكتسبة من تطوير برنامج ISPS سابقًا. [ ١٠ ] في البداية، استُخدمت Verilog وVHDL لتوثيق ومحاكاة تصميمات الدوائر التي سبق توثيقها ووصفها بشكل آخر (مثل ملفات المخططات ). مكّنت محاكاة لغة وصف الأجهزة (HDL) المصممين من العمل على مستوى تجريد أعلى من المحاكاة على مستوى المخططات، وبالتالي زادت من قدرة التصميم من مئات الترانزستورات إلى آلاف. في عام 1986، وبدعم من وزارة الدفاع الأمريكية، تم رعاية VHDL كمعيار IEEE (IEEE Std 1076)، وتمت الموافقة على أول نسخة موحدة من VHDL من قبل IEEE، وهي IEEE Std 1076-1987، في ديسمبر 1987. واستحوذت شركة Cadence Design Systems لاحقًا على شركة Gateway Design Automation للحصول على حقوق Verilog-XL، وهو محاكي HDL الذي سيصبح المعيار الفعلي لمحاكيات Verilog للعقد التالي.
أدى إدخال توليف المنطق للغات وصف الأجهزة (HDLs) إلى نقل هذه اللغات من الخلفية إلى مقدمة تصميم الدوائر الرقمية. قامت أدوات التوليف بتحويل ملفات شفرة المصدر للغات وصف الأجهزة (المكتوبة بتنسيق مقيد يُسمى RTL) إلى وصف قائمة توصيلات قابلة للتصنيع بدلالة البوابات المنطقية والترانزستورات . تطلب كتابة ملفات RTL قابلة للتوليف ممارسةً وانضباطًا من جانب المصمم؛ فمقارنةً بالتصميم التخطيطي التقليدي، كانت قوائم توصيلات RTL المُولَّفة أكبر حجمًا وأبطأ أداءً في أغلب الأحيان. كان تصميم الدائرة من مصمم ماهر، باستخدام عملية التقاط المخططات/التصميم اليدوي التي تتطلب جهدًا كبيرًا، يتفوق دائمًا تقريبًا على نظيره المُولَّف منطقيًا، ولكن سرعان ما أدت ميزة الإنتاجية التي يوفرها التوليف إلى إزاحة عملية التقاط المخططات الرقمية إلى تلك المجالات التي كانت تُمثل مشكلة لتوليف RTL: الدوائر فائقة السرعة، أو منخفضة الطاقة، أو غير المتزامنة.
في غضون سنوات قليلة، برزت لغتا VHDL وVerilog كلغات وصف الأجهزة (HDL) المهيمنة في صناعة الإلكترونيات، بينما اختفت لغات وصف الأجهزة الأقدم والأقل كفاءة تدريجيًا من الاستخدام. ومع ذلك، تشترك VHDL وVerilog في العديد من القيود نفسها، مثل عدم ملاءمتهما لمحاكاة الدوائر التناظرية أو المختلطة . وقد طُرحت لغات وصف أجهزة متخصصة (مثل Confluence) بهدف واضح هو معالجة بعض القيود في Verilog وVHDL، مع العلم أنه لم يُقصد بأي منها أن تحل محلهما.
على مر السنين، بُذلت جهودٌ حثيثة لتحسين لغات وصف الأجهزة (HDL). يُقدّم الإصدار الأخير من Verilog، المسمى رسميًا IEEE 1800-2005 SystemVerilog، العديد من الميزات الجديدة (الفئات، والمتغيرات العشوائية، والخصائص/التأكيدات) لتلبية الحاجة المتزايدة لتحسين عشوائية بيئة الاختبار ، وهيكلة التصميم، وإعادة الاستخدام. كما يجري تطوير نسخة مستقبلية من VHDL ، ومن المتوقع أن تُضاهي تحسينات SystemVerilog.
التصميم باستخدام لغة وصف الأجهزة (HDL)
نتيجةً لزيادة الكفاءة المُحققة باستخدام لغة وصف الأجهزة (HDL)، يدور معظم تصميم الدوائر الرقمية الحديثة حولها. تبدأ معظم التصاميم بمجموعة من المتطلبات أو مخطط معماري عالي المستوى. غالبًا ما تُصمم نماذج أولية لهياكل التحكم واتخاذ القرار في تطبيقات مخططات التدفق ، أو تُدخل في محرر نصوص. تعتمد عملية كتابة وصف HDL بشكل كبير على طبيعة الدائرة وأسلوب البرمجة المُفضل لدى المصمم. تُعد HDL مجرد "لغة التقاط"، وغالبًا ما تبدأ بوصف خوارزمي عالي المستوى، مثل نموذج رياضي بلغة C++. يستخدم المصممون عادةً لغات برمجة نصية مثل Perl لإنشاء هياكل الدوائر المتكررة تلقائيًا بلغة HDL. توفر محررات النصوص المتخصصة ميزات للمسافة البادئة التلقائية، والتلوين المُعتمد على بناء الجملة، والتوسيع القائم على وحدات الماكرو لإعلان الكيان/البنية/الإشارة.
يخضع كود لغة وصف الأجهزة (HDL) بعد ذلك لمراجعة أو تدقيق. استعدادًا لعملية التركيب، يُخضع وصف HDL لمجموعة من أدوات الفحص الآلية. تُبلغ هذه الأدوات عن أي انحرافات عن إرشادات الكود القياسية، وتُحدد أي بنى برمجية غامضة محتملة قبل أن تُسبب سوء فهم، وتتحقق من أخطاء البرمجة المنطقية الشائعة، مثل المنافذ العائمة أو المخرجات القصيرة . تُساعد هذه العملية في حل الأخطاء قبل تركيب الكود.
في المصطلحات الصناعية، ينتهي تصميم لغة وصف الأجهزة (HDL) عادةً عند مرحلة التركيب. بمجرد أن تُحوّل أداة التركيب وصف لغة وصف الأجهزة إلى قائمة توصيلات البوابات، تُمرّر هذه القائمة إلى مرحلة المعالجة النهائية. وبحسب التقنية المستخدمة (مثل مصفوفة البوابات المنطقية القابلة للبرمجة ، أو مصفوفة البوابات الخاصة بالتطبيقات، أو الخلية القياسية الخاصة بالتطبيقات )، قد تلعب لغات وصف الأجهزة دورًا هامًا أو غير هام في عملية المعالجة النهائية. عمومًا، مع تقدم عملية التصميم نحو شكل قابل للتنفيذ فيزيائيًا، تصبح قاعدة بيانات التصميم أكثر ثراءً بالمعلومات الخاصة بالتقنية، والتي لا يمكن تخزينها في وصف عام بلغة وصف الأجهزة. أخيرًا، تُصنّع الدائرة المتكاملة أو تُبرمج للاستخدام.
محاكاة وتصحيح كود لغة وصف الأجهزة (HDL)
يُعدّ محاكاة برامج لغة وصف الأجهزة (HDL) أمرًا أساسيًا في تصميمها. تسمح المحاكاة لوصف التصميم بلغة HDL (المعروف بالنموذج) باجتياز عملية التحقق من التصميم ، وهي خطوة هامة تُؤكد صحة الوظيفة المقصودة للتصميم (المواصفات) مقارنةً بتنفيذ الكود في وصف HDL. كما تُتيح المحاكاة استكشاف البنية المعمارية، حيث يُمكن للمصمم تجربة خيارات التصميم المختلفة من خلال كتابة عدة تنويعات لتصميم أساسي، ثم مقارنة سلوكها في المحاكاة. لذا، تُعدّ المحاكاة عنصرًا حاسمًا لنجاح تصميم HDL.
لمحاكاة نموذج لغة وصف الأجهزة (HDL)، يقوم المصمم بكتابة بيئة محاكاة رئيسية (تُسمى منصة اختبار ). تحتوي منصة الاختبار، كحد أدنى، على نسخة من النموذج (تُسمى الجهاز قيد الاختبار أو DUT)، وتعريفات المنافذ/الإشارات الخاصة بمدخلات /مخرجات النموذج ، وشكل موجة الساعة. يعتمد كود منصة الاختبار على الأحداث: يكتب المصمم عبارات HDL لتنفيذ إشارة إعادة الضبط (التي تُولدها منصة الاختبار)، ولنمذجة عمليات الواجهة (مثل قراءة/كتابة ناقل المضيف)، ولمراقبة مخرجات الجهاز قيد الاختبار. يُحافظ مُحاكي HDL - البرنامج الذي يُنفذ منصة الاختبار - على ساعة المُحاكي، وهي المرجع الرئيسي لجميع الأحداث في محاكاة منصة الاختبار. تحدث الأحداث فقط في اللحظات التي يُحددها كود HDL الخاص بمنصة الاختبار (مثل تبديل إعادة الضبط المُبرمج في منصة الاختبار)، أو كرد فعل (من قِبل النموذج) على أحداث التحفيز والتشغيل. تتميز مُحاكيات HDL الحديثة بواجهات مستخدم رسومية كاملة الميزات ، مُزودة بمجموعة من أدوات تصحيح الأخطاء. تتيح هذه الميزات للمستخدم إيقاف المحاكاة وإعادة تشغيلها في أي وقت، وإضافة نقاط توقف للمحاكي (بشكل مستقل عن كود HDL)، ومراقبة أي عنصر في التسلسل الهرمي لنموذج HDL أو تعديله. كما يمكن للمحاكيات الحديثة ربط بيئة HDL بمكتبات مُجمّعة من قِبل المستخدم، عبر واجهة PLI / VHPI مُحددة . ويعتمد الربط على النظام ( x86 ، SPARC، إلخ، التي تعمل بنظامي التشغيل Windows / Linux / Solaris )، حيث يتم تجميع محاكي HDL ومكتبات المستخدم وربطها خارج بيئة HDL.
غالبًا ما تكون عملية التحقق من التصميم هي الجزء الأكثر استهلاكًا للوقت في عملية التصميم، وذلك بسبب التباين بين المواصفات الوظيفية للجهاز ، وتفسير المصمم لهذه المواصفات، وعدم دقة لغة وصف الأجهزة (HDL). يُجرى معظم اختبار/تصحيح الأخطاء الأولي في بيئة محاكاة HDL ، نظرًا لأن المرحلة المبكرة من التصميم عرضة لتغييرات متكررة وكبيرة في الدوائر. يمكن أيضًا إنشاء نموذج أولي لوصف HDL واختباره في الأجهزة - وغالبًا ما تُستخدم أجهزة المنطق القابلة للبرمجة لهذا الغرض. يُعد إنشاء النماذج الأولية للأجهزة أكثر تكلفة نسبيًا من محاكاة HDL، ولكنه يوفر رؤية واقعية للتصميم. يُعد إنشاء النماذج الأولية أفضل طريقة للتحقق من التوافق مع أجهزة أخرى ونماذج أولية للأجهزة. حتى تلك التي تعمل على معالجات FPGA البطيئة توفر أوقات محاكاة أقصر بكثير من محاكاة HDL البحتة.
التحقق من التصميم باستخدام لغات وصف الأجهزة (HDLs)
تاريخيًا، كانت عملية التحقق من التصميم عملية شاقة ومتكررة تتضمن كتابة حالات اختبار محاكاة وتشغيلها على التصميم قيد الاختبار. ومع ازدياد حجم وتعقيد تصميمات الرقائق، نمت مهمة التحقق من التصميم حتى باتت تستحوذ على الجزء الأكبر من جدول أعمال فريق التصميم. وسعيًا لتحسين إنتاجية التصميم، طوّر قطاع أتمتة تصميم الإلكترونيات لغة مواصفات الخصائص (PSP) .
في سياق التحقق الرسمي ، تُعرَّف الخاصية بأنها بيان واقعي حول السلوك المتوقع أو المفترض لكائن آخر. من الناحية المثالية، بالنسبة لوصف لغة وصف الأجهزة (HDL) معين، يمكن إثبات صحة أو خطأ خاصية أو مجموعة من الخصائص باستخدام أساليب رياضية رسمية. عمليًا، لا يمكن إثبات العديد من الخصائص لأنها تشغل حيز حلول غير محدود . مع ذلك، إذا تم توفير مجموعة من الافتراضات أو القيود التشغيلية، يمكن لمدقق الخصائص إثبات (أو دحض) خصائص معينة عن طريق تضييق حيز الحلول.
لا تُحاكي التأكيدات نشاط الدائرة، بل تُجسّد وتُوثّق نية المصمم في كود لغة وصف الأجهزة (HDL). في بيئة المحاكاة، يُقيّم المُحاكي جميع التأكيدات المُحددة، ويُبلغ عن موقع أي انتهاكات وخطورتها. في بيئة التوليف، تعمل أداة التوليف عادةً بسياسة إيقاف التوليف عند حدوث أي انتهاك. لا يزال التحقق القائم على التأكيدات في مراحله الأولى، ولكن من المتوقع أن يُصبح جزءًا لا يتجزأ من مجموعة أدوات تصميم لغة وصف الأجهزة (HDL).
لغات وصف الأجهزة ولغات البرمجة
لغة وصف الأجهزة (HDL) تشبه إلى حد كبير لغة برمجة البرمجيات ، ولكن ثمة اختلافات جوهرية. فمعظم لغات البرمجة إجرائية بطبيعتها ( أحادية الخيوط)، مع دعم محدود من الناحية التركيبية والدلالية للتعامل مع التزامن . أما لغات وصف الأجهزة، من ناحية أخرى، فتشبه لغات البرمجة المتزامنة في قدرتها على نمذجة عمليات متوازية متعددة (مثل القلابات والجامعات ) التي تُنفذ تلقائيًا بشكل مستقل عن بعضها البعض. وأي تغيير في مُدخلات العملية يُؤدي تلقائيًا إلى تحديث في مكدس العمليات الخاص بالمحاكي.
تُعالَج كلٌّ من لغات البرمجة ولغة وصف الأجهزة (HDL) بواسطة مُجمِّع (يُسمّى غالبًا بالمُركِّب في حالة لغة وصف الأجهزة)، ولكن بأهدافٍ مختلفة. بالنسبة للغات وصف الأجهزة، يُشير مصطلح "التجميع" إلى توليف المنطق ؛ أي عملية تحويل قائمة كود لغة وصف الأجهزة إلى قائمة توصيلات بوابات قابلة للتنفيذ فعليًا . يمكن أن تتخذ قائمة التوصيلات الناتجة أشكالًا عديدة: قائمة توصيلات "محاكاة" تتضمن معلومات تأخير البوابات، أو قائمة توصيلات "تسليم" لوضعها وتوجيهها بعد التوليف على شريحة أشباه الموصلات، أو تنسيق تبادل تصميم إلكتروني (EDIF) قياسي عام في الصناعة (للتحويل اللاحق إلى ملف بتنسيق JEDEC ).
من جهة أخرى، يقوم مُترجم البرامج بتحويل قائمة الشيفرة المصدرية إلى شيفرة كائنية خاصة بالمعالج الدقيق لتنفيذها على المعالج المستهدف. ومع تبادل مفاهيم وخصائص لغات وصف الأجهزة (HDLs) ولغات البرمجة، تتلاشى الحدود الفاصلة بينهما. ومع ذلك، فإن لغات وصف الأجهزة البحتة غير مناسبة لتطوير برامج التطبيقات العامة ، تمامًا كما أن لغات البرمجة العامة غير مرغوب فيها لنمذجة الأجهزة.
مع ازدياد تعقيد الأنظمة الإلكترونية، وشيوع الأنظمة القابلة لإعادة التكوين ، تتزايد الرغبة في الصناعة بوجود لغة برمجة واحدة قادرة على أداء بعض مهام تصميم الأجهزة وبرمجة البرمجيات. تُعدّ SystemC مثالًا على ذلك، حيث يمكن نمذجة أجهزة النظام المدمج كوحدات معمارية غير مُفصّلة ( صناديق سوداء ذات مدخلات إشارة ومخرجات مُنمذجة). يُكتب التطبيق المستهدف بلغة C أو C++ ويُترجم مباشرةً لنظام التطوير المضيف؛ على عكس استهداف وحدة المعالجة المركزية المدمجة، الأمر الذي يتطلب محاكاة وحدة المعالجة المركزية المدمجة على النظام المضيف أو استخدام وحدة معالجة مركزية مُحاكاة.
يُعدّ مستوى التجريد العالي في نماذج SystemC مناسبًا تمامًا لاستكشاف البنية المعمارية في المراحل المبكرة ، حيث يُمكن تقييم التعديلات المعمارية بسهولة دون القلق كثيرًا بشأن مشاكل التنفيذ على مستوى الإشارات. مع ذلك، يعتمد نموذج الترابط المستخدم في SystemC على الذاكرة المشتركة ، مما يجعل اللغة غير قادرة على التعامل بكفاءة مع التنفيذ المتوازي أو النماذج منخفضة المستوى.
توليف عالي المستوى
تُقارن لغات وصف الأجهزة (HDLs) بلغات التجميع من حيث مستوى التجريد . وهناك محاولات لرفع مستوى تجريد تصميم الأجهزة بهدف تقليل تعقيد البرمجة باستخدام لغات وصف الأجهزة، مما أدى إلى ظهور مجال فرعي يُسمى التركيب عالي المستوى .
تروج شركات مثل كادنس وسينوبسيس وأجيليتي ديزاين سوليوشنز لـ SystemC كوسيلة لدمج لغات البرمجة عالية المستوى مع نماذج التزامن، مما يتيح دورات تصميم أسرع لمصفوفات البوابات المنطقية القابلة للبرمجة الميدانية (FPGAs) مقارنةً باستخدام لغات وصف الأجهزة التقليدية (HDLs). وتتوفر مناهج تعتمد على لغة C أو C++ القياسية (مع مكتبات أو امتدادات أخرى تسمح بالبرمجة المتوازية) في أدوات Catapult C من Mentor Graphics ، وأدوات Impulse C من Impulse Accelerated Technologies.
وتتمثل مبادرة مماثلة من شركة إنتل في استخدام لغة Data Parallel C++، المرتبطة بـ SYCL ، كلغة توليف عالية المستوى.
توفر مجموعة CoreFire Design Suite من شركة Annapolis Micro Systems [ 11 ] وبرنامج LabVIEW FPGA من شركة National Instruments نهجًا رسوميًا لتدفق البيانات لإدخال التصميم عالي المستوى، وتسعى لغات مثل SystemVerilog وSystemVHDL و Handel-C إلى تحقيق نفس الهدف، ولكنها تهدف إلى جعل مهندسي الأجهزة الحاليين أكثر إنتاجية، بدلاً من جعل FPGAs أكثر سهولة في الوصول إليها لمهندسي البرمجيات الحاليين .
من الممكن أيضًا تصميم وحدات الأجهزة باستخدام MATLAB و Simulink باستخدام أداة MathWorks HDL Coder [ 12 ] أو DSP Builder لـ Intel FPGAs [ 13 ] أو Xilinx System Generator (XSG) من Xilinx . [ 14 ]
أمثلة على البروتينات الدهنية عالية الكثافة (HDL)
لغات وصف الأجهزة لتصميم الدوائر التناظرية
| اسم | وصف |
|---|---|
| HDL-A | لغة وصف الأجهزة التناظرية الخاصة |
| SpectreHDL | لغة وصف الأجهزة التناظرية الخاصة بشركة كادنس ديزاين سيستمز لمحاكي الدوائر الإلكترونية سبيكتر. |
| Verilog-AMS (Verilog للإشارات التناظرية والمختلطة) | امتداد Accellera القياسي لمعيار IEEE 1364 Verilog لمحاكاة الإشارات التناظرية والمختلطة |
| VHDL-AMS (VHDL مع امتداد الإشارات التناظرية/المختلطة) | امتداد معيار IEEE (IEEE Std 1076.1) للغة VHDL لمحاكاة الإشارات التناظرية والمختلطة |
لغات وصف الأجهزة لتصميم الدوائر الرقمية
أكثر نوعين من لغات وصف الأجهزة (HDL) استخداماً ودعماً في الصناعة هما Verilog و VHDL .
| حالة | اسم | لغة المضيف | وصف |
|---|---|---|---|
| قيد الاستخدام | لغة وصف الأجهزة من شركة ألترا (AHDL) | لغة خاصة بشركة ألترا | |
| لغة برمجة الأجهزة ( AHPL ) | تُستخدم كأداة للتدريس | ||
| قطيفة | بايثون | ||
| بلوسبيك | لغة وصف الأجهزة عالية المستوى القائمة على لغة هاسكل (ليست لغة وصف المجال المضمنة ) [ 15 ] | ||
| نظام بلوسبيك سيستم فيريلوج (BSV) | مبني على Bluespec ، مع بناء جملة مشابه لـ Verilog HDL، من شركة Bluespec. | ||
| تحويل من لغة C إلى لغة Verilog | محول من لغة C إلى لغة Verilog | ||
| Chisel (Constructing Hardware in a Scala Embedded Language) [ 16 ] | سكالا | مبني على لغة سكالا ( لغة برمجة خاصة مضمنة ) | |
| صدام | لغة وصف الأجهزة الوظيفية التي تستعير تركيبها ودلالاتها من لغة البرمجة الوظيفية هاسكل | ||
| لغة مشتركة موجهة لهندسة الكائنات المتعددة (COLAMO) [ 17 ] [ 18 ] | لغة خاصة من شركة "مركز أبحاث الحواسيب العملاقة والحواسيب العصبية" المحدودة. | ||
| مترجم لغة البرمجة العالمية (CUPL) [ 19 ] | لغة خاصة بشركة Logical Devices, Inc. | ||
| دي إس إل إكس | لغة خاصة بالمجال لسلسلة أدوات XLS | ||
| ESys.net | إطار عمل .NET مكتوب بلغة C# | ||
| خيط | لغة وصف الأجهزة (HDL) بنظام أنواع مستوحى من لغة Rust | ||
| هاندل-سي | لغة تصميم شبيهة بلغة C | ||
| هارد كاميل | أوكاميل | استنادًا إلى OCaml (لغة برمجة خاصة مضمنة) [ 20 ] | |
| HHDL | هاسكل | مبني على لغة هاسكل (لغة برمجة خاصة مضمنة) | |
| دمج الأجهزة في جافا (HJJ) | انضم إلى جافا | استنادًا إلى Join Java | |
| التعلم الآلي للأجهزة (HML) | لغة الآلة القياسية | استنادًا إلى التعلم الآلي القياسي [ 21 ] | |
| هيدرا | هاسكل | مبني على لغة هاسكل | |
| النبضة ج | البروتين الدهني عالي الكثافة الشبيه بالبروتين C | ||
| لغة C++ المتوازية (ParC) | تم توسيع مكتبة kusu باستخدام تقنية تعدد الخيوط والتواصل على غرار لغة وصف الأجهزة (HDL) لبرمجة المهام المتوازية | ||
| JHDL | جافا | لغة تعريف أجهزة أخرى مبنية على لغة جافا | |
| الحمم البركانية | هاسكل | استنادًا إلى لغة البرمجة Haskell (لغة برمجة خاصة مضمنة) [ 22 ] [ 23 ] [ 24 ] [ 25 ] | |
| لولا | لغة بسيطة تُستخدم في التدريس | ||
| م | HDL من شركة Mentor Graphics | ||
| ميجن | بايثون | ||
| MyHDL | بايثون | مبني على لغة بايثون ( لغة برمجة خاصة مضمنة ) | |
| الكفة | لأجهزة منطق المصفوفة القابلة للبرمجة (PAL) | ||
| خط الأنابيب سي | لغة وصف الأجهزة الشبيهة بلغة C تضيف توليفًا عالي المستوى - يشبه التوليف التلقائي - كبنية لغوية وميزة للمترجم. | ||
| PyMTL 3 (Mamba) | بايثون | مبني على لغة بايثون، من جامعة كورنيل | |
| PyRTL | بايثون | مبني على لغة بايثون، من جامعة كاليفورنيا، سانتا باربرا | |
| مُجمِّع ريفرسايد المُحسِّن للحوسبة القابلة للتكوين (ROCCC) | أداة مجانية ومفتوحة المصدر لتحويل لغة C إلى لغة وصف الأجهزة (HDL) | ||
| RHDL | روبي | مبني على لغة البرمجة روبي | |
| التطوير السريع للأجهزة المفتوحة المصدر (ROHD) [ 26 ] | دارت | إطار عمل لتصميم الأجهزة والتحقق منها، مكتوب بلغة دارت | |
| روبي (لغة وصف الأجهزة) | |||
| صمت | لغة وصف الأجهزة (HDL) التي تُبسط تصميم خوارزميات الأجهزة باستخدام التوازي وخطوط الأنابيب. | ||
| البستوني | لغة وصف الأجهزة (HDL) مستوحاة من لغات البرمجة الحديثة مثل Rust | ||
| نظام C | فئة قياسية من مكتبات C++ لنمذجة السلوك والمعاملات عالية المستوى للأجهزة الرقمية على مستوى عالٍ من التجريد، أي على مستوى النظام | ||
| SystemVerilog | مجموعة فرعية من لغة Verilog، مع تحسينات لمعالجة تصميم النظام والتحقق منه | ||
| البروتين الدهني عالي الكثافة في العمود الفقري | سكالا | مبني على لغة سكالا (لغة برمجة خاصة مضمنة) | |
| نظام TCL | SDL مبني على Tcl | ||
| لغة وصف الأجهزة القائمة على القوالب والمستوحاة من لغة C++ (THDL++) | توسيع لغة VHDL باستخدام الوراثة والقوالب المتقدمة وفئات السياسات | ||
| توري | بايثون | لغة وصف الأجهزة (HDL) وإطار عمل قائم على لغة بايثون لتصميمات FPGA وASIC مع دعم كل من أدوات EDA الاحتكارية والمفتوحة المصدر. | |
| فيريك | تمت إعادة تفسير لغة Kotlin بدلالات لغة وصف الأجهزة (HDL)؛ وتم تحويلها إلى لغة SystemVerilog | ||
| فيريلوج على مستوى المعاملات (TL-Verilog) [ 27 ] | توسيع لغة Verilog/ SystemVerilog باستخدام بنيات خاصة بخطوط الأنابيب والمعاملات . | ||
| فيريلوج | إحدى لغات وصف الأجهزة عالية الدقة الأكثر استخدامًا ودعمًا | ||
| فيريل | تم تصميم لغة وصف الأجهزة (HDL) كبديل للغة SystemVerilog | ||
| VHDL ( VHSIC HDL) | إحدى لغات وصف الأجهزة عالية الدقة الأكثر استخدامًا ودعمًا | ||
| لم يعد مستخدمًا بشكل شائع | لغة التعبير المنطقي المتقدمة (ABEL) | لغة وصف الأجهزة القديمة (HDL) التي صنعتها شركة Data I/O Corporation في عام 1983 | |
| ملتقى | تم إيقاف إنتاج البروتين الدهني عالي الكثافة الوظيفي. | ||
| CoWareC | لغة وصف الأجهزة (HDL) القائمة على لغة C من تطوير CoWare ؛ تم إيقافها لصالح SystemC | ||
| إيلا | لم يعد مستخدمًا بشكل شائع | ||
| مزود خدمة الإنترنت | لغة وصف الأجهزة الأصلية من جامعة كارنيجي ميلون؛ لم تعد شائعة الاستخدام | ||
| لغة تسجيل كايزرسلاوترن (KARL) [ 9 ] | لغة وصف الأجهزة الشبيهة بلغة باسكال ؛ لم تعد شائعة الاستخدام | ||
| إن ميجن | بايثون | سلف نبات القطيفة |
لغات وصف الأجهزة لتصميم لوحات الدوائر المطبوعة
توجد العديد من المشاريع لتحديد توصيلات لوحات الدوائر المطبوعة باستخدام أساليب إدخال نصية تعتمد على اللغة. ومن بين هذه المشاريع، برزت مناهج جديدة تركز على تحسين سهولة القراءة وإعادة الاستخدام والتحقق. تستخدم هذه المنهجيات الحديثة لغات تصميم مفتوحة المصدر مصممة خصيصًا للإلكترونيات، وتعتمد على لغة ترميز تصريحية لتحديد ما يجب أن تحققه الدوائر. يدمج هذا التحول مبادئ تطوير البرمجيات في تصميم الأجهزة ، مما يبسط العملية ويؤكد على الأتمتة وإعادة الاستخدام والتحقق.
| اسم | وصف |
|---|---|
| أتوبيل | لغة مفتوحة المصدر ومجموعة أدوات لوصف لوحات الدوائر الإلكترونية باستخدام التعليمات البرمجية. |
| PHDL (PCB HDL) | لغة وصف الأجهزة (HDL) مجانية ومفتوحة المصدر لتحديد اتصال لوحة الدوائر المطبوعة. |
| EDAsolver | لغة وصف الأجهزة (HDL) لحل التصاميم التخطيطية بناءً على القيود. |
| SKiDL | وحدة بايثون مفتوحة المصدر لتصميم الدوائر الإلكترونية. |
انظر أيضاً
- بلوسبيك – شركة أمريكية لتصميم أشباه الموصلات
- تحويل البرامج الشبيهة بلغة C إلى لغات وصف الأجهزة (HDL )
- تحويل تصميم النظام القائم على التدفق إلى لغة وصف الأجهزة (HDL) - الأدوات والأساليب لتحويل تصميم النظام القائم على التدفق إلى لغة وصف الأجهزة
- لغة التحقق من الأجهزة – لغة برمجة تُستخدم للتحقق من تصميمات الدوائر الإلكترونية المكتوبة بلغة وصف الأجهزة (HDL).
- لغة النمذجة – رموز تعبر عن المعلومات وفقًا لمجموعة من القواعد
- لغة تحديد الخصائص – المنطق الزمني
- لغة Rosetta-lang - لغة توصيف على مستوى النظام
- لغة المواصفات – لغة رسمية مستخدمة في علوم الحاسوب
- SystemC – امتدادات C++ لمحاكاة الأنظمة المدمجة
- لغة SystemVerilog – لغة وصف الأجهزة والتحقق من الأجهزة
مراجع
- ↑ سيليتي، مايكل د. (2011). التصميم الرقمي المتقدم باستخدام لغة Verilog HDL ( الطبعة الثانية). برنتيس هول. ISBN 9780136019282.
- ↑ بارباتشي، م. "مقارنة بين لغات نقل السجلات لوصف أجهزة الكمبيوتر والأنظمة الرقمية"، جامعة كارنيجي ميلون، قسم علوم الحاسوب، مارس 1973
- ↑ بيل، سي جي؛ نيويل، أ. (1971). هياكل الحاسوب: قراءات وأمثلة . ماكجرو هيل. ISBN 0-07-004357-4.
- ↑ رايلي ، إي دي (2003). معالم بارزة في علوم الحاسوب وتكنولوجيا المعلومات . دار غرينوود للنشر. ص 183. ISBN 1-57356-521-0.
- ↑ بيل، سي جي؛ جراسون، جيه؛ نيويل، إيه. (1972). تصميم الحواسيب والأنظمة الرقمية . دار النشر الرقمية. LCCN 72-89566 . OCLC 440245727 .
- ↑ بارباتشي، إم سي (1976). المعالجة الرمزية لأوصاف الحاسوب: مُترجم ومُحاكي لغة ISPL (تقرير). قسم علوم الحاسوب، جامعة كارنيجي ميلون. doi : 10.1184/R1/6610790.v1 .
- ↑ بارباتشي، إم سي؛ بارنز، جي إي؛ كاتيل، آر جي جي؛ سيوريك، دي بي (1977). لغة وصف الحاسوب ISPS (تقرير). قسم علوم الحاسوب، جامعة كارنيجي ميلون. doi : 10.1184/R1/6610637.v1 .
- ↑ جيراردي، جي.؛ هارتنشتاين، آر. (1983). مواصفات ABL (تقرير). CSELT وجامعة كايزرسلاوترن .
- 1 2 هارتنشتاين، راينر دبليو. (2012) [1993]، "KARL وABL" ، في ميرميت، ج. (محرر)، أساسيات ومعايير لغات وصف الأجهزة ، سلسلة علوم الناتو E، المجلد 249، سبرينغر، الصفحات 447–، ISBN 9789401119146
- ↑ بارباتشي، إم سي؛ جروت، إس؛ ليندستروم، جي؛ مالوني، إم بي (1984). لغة آدا كلغة لوصف الأجهزة : تقرير أولي (تقرير). قسم علوم الحاسوب، جامعة كارنيجي ميلون. CiteSeerX 10.1.1.938.8003 . doi : 10.1184/R1/6602984.v1 .
- ↑ "أداة برمجية لتطبيقات برمجة FPGA القائمة على VHDL" . شركة أنابوليس مايكرو سيستمز . تم الاطلاع عليه بتاريخ 1 ديسمبر 2018 .
- ↑ "كود VHDL - مُبرمج HDL - MATLAB وSimulink" . Mathworks.com. 30 أبريل 2011. مؤرشف من الأصل في 7 يوليو 2012. تم الاطلاع عليه في 11 أغسطس 2012 .
- ↑ "معالجة الإشارات الرقمية (DSP) Builder - Intel® FPGAs" . Intel . تم الاسترجاع في 2021-09-20 .
- ↑ "مولد الأنظمة لمعالجة الإشارات الرقمية" . Xilinx.com. مؤرشف من الأصل بتاريخ 12 يوليو 2012. تم الاطلاع عليه بتاريخ 11 أغسطس 2012 .
- ↑ تاريخ لغة هاسكل: الكسل مع الفئة §12.4.2
- ↑ "إطار عمل مُترجم الأجهزة Chisel/FIRRTL" .
- ↑ كولامو
- ^ "لغة عالية المستوى COLAMO – НИЦ SUPER-ЭВМ и нейрокомпьютеров" .
- ↑ يوريتش، جيه بي؛ روث، جي. (1990). "تطور EDIF". مجلة IEEE Spectrum . 27 (11): 68-72 . Bibcode : 1990IEEES..27k..68E . doi : 10.1109/6.62219 . S2CID 381119 .
- ↑ هارد كاميل
- ↑ لي، يانبينغ؛ ليسر، م. (1995). "HML: لغة وصف أجهزة مبتكرة وترجمتها إلى VHDL". وقائع مؤتمر ASP-DAC'95/CHDL'95/VLSI'95 مع EDA Technofair . الصفحات 691-696 . doi : 10.1109/ASPDAC.1995.486388 . ISBN 4-930813-67-0. S2CID 14198160 .
- ↑ حمم تشالمرز
- ↑ زيلينكس لافا
- ↑ حمم كانساس
- ↑ حمم يورك
- ↑ "إطار عمل التطوير السريع للأجهزة المفتوحة (ROHD)" . جيت هاب . 17 نوفمبر 2021.
- ↑ TL-Verilog
روابط خارجية
- أداة HCT – HDL Complexity، تُستخدم لتحديد مدى تعقيد التصميم
- لغات وصف الأجهزة
- الاتصالات التقنية
- تصميم المنطق
- تصنيف لغات البرمجة
