نظام C

SystemC عبارة عن مجموعة من فئات ووحدات ماكرو C++ توفر واجهة محاكاة قائمة على الأحداث (انظر أيضًا محاكاة الأحداث المنفصلة ). تُمكّن هذه الإمكانيات المصمم من محاكاة العمليات المتزامنة ، حيث يتم وصف كل عملية باستخدام صيغة C++ البسيطة . يمكن لعمليات SystemC التواصل في بيئة محاكاة للوقت الحقيقي، باستخدام إشارات من جميع أنواع البيانات التي توفرها C++، بالإضافة إلى بعض الأنواع الإضافية التي توفرها مكتبة SystemC، فضلًا عن الأنواع التي يُعرّفها المستخدم. في بعض الجوانب، تُحاكي SystemC عمدًا لغات وصف الأجهزة VHDL و Verilog ، ولكن من الأنسب وصفها بأنها لغة نمذجة على مستوى النظام .

تُستخدم لغة SystemC في نمذجة مستوى النظام ، واستكشاف البنية، ونمذجة الأداء، وتطوير البرمجيات ، والتحقق الوظيفي ، والتوليف عالي المستوى . وترتبط SystemC غالبًا بتصميم مستوى النظام الإلكتروني (ESL)، ونمذجة مستوى المعاملات (TLM).

مواصفات اللغة

تم تعريف لغة SystemC والترويج لها من قِبل مبادرة Open SystemC (OSCI - المعروفة الآن باسم Accellera )، وقد اعتمدتها جمعية معايير IEEE تحت مسمى IEEE 1666-2011 [ 1 ] - وهو دليل مرجعي للغة SystemC (LRM). يوفر هذا الدليل المرجعي بيانًا نهائيًا لدلالات لغة SystemC. كما توفر مبادرة OSCI محاكيًا مفتوح المصدر لإثبات المفهوم (يُشار إليه أحيانًا بشكل خاطئ باسم المحاكي المرجعي)، والذي يمكن تنزيله من موقع OSCI الإلكتروني. [ 2 ] على الرغم من أن هدف مبادرة OSCI كان تمكين الشركات التجارية والمؤسسات الأكاديمية من إنشاء برامج أصلية متوافقة مع معيار IEEE 1666، إلا أن معظم تطبيقات SystemC في الواقع العملي تعتمد جزئيًا على الأقل على المحاكي التجريبي لإثبات المفهوم الخاص بمبادرة OSCI.

مقارنة بالبروتينات الدهنية عالية الكثافة

تتشابه لغة SystemC دلاليًا مع لغتي VHDL و Verilog ، ولكن قد يُقال إنها تعاني من عبء نحوي أكبر مقارنةً بهما عند استخدامها كلغة لوصف الأجهزة . من ناحية أخرى، توفر SystemC نطاقًا أوسع من التعبير، على غرار تقسيم التصميم الموجه للكائنات وفئات القوالب. على الرغم من كونها مكتبة فئات C++ بالأساس، إلا أن SystemC تُعتبر أحيانًا لغة مستقلة. يمكن تجميع الشفرة المصدرية باستخدام مكتبة SystemC (التي تتضمن نواة محاكاة) للحصول على ملف تنفيذي. عادةً ما يكون أداء تطبيق OSCI مفتوح المصدر أسوأ من محاكيات VHDL/Verilog التجارية عند استخدامه لمحاكاة مستوى نقل السجلات .

الإصدارات

تضمنت النسخة الأولى من SystemC ميزات شائعة للغة وصف الأجهزة مثل التسلسل الهرمي الهيكلي والاتصال، ودقة دورة الساعة، ودورات دلتا، والمنطق رباعي القيم (0، 1، X، Z)، ووظائف حل ناقل البيانات.

ركزت إصدارات SystemC من الإصدار 2 فصاعدًا على تجريد الاتصالات، ونمذجة مستوى المعاملات ، ونمذجة المنصات الافتراضية. كما أضافت منافذ مجردة، وعمليات ديناميكية، وإشعارات الأحداث الموقوتة.

خصائص اللغة

الوحدات

يحتوي نظام SystemC على مفهوم فئة حاوية تسمى وحدة نمطية. وهي كيان هرمي يمكن أن يحتوي على وحدات نمطية أو عمليات أخرى بداخله.

تُعدّ الوحدات النمطية اللبنات الأساسية لهيكل تصميم SystemC. يتألف نموذج SystemC عادةً من عدة وحدات نمطية تتواصل فيما بينها عبر منافذ. ويمكن اعتبار هذه الوحدات النمطية بمثابة اللبنات الأساسية لـ SystemC.

الموانئ

تسمح المنافذ بالاتصال من داخل الوحدة إلى الخارج (عادةً إلى وحدات أخرى) عبر القنوات.

الإشارات

يدعم نظام SystemC الإشارات المُحَلَّلة وغير المُحَلَّلة. يمكن أن تحتوي الإشارات المُحَلَّلة على أكثر من مُشغِّل (ناقل بيانات)، بينما لا يمكن أن تحتوي الإشارات غير المُحَلَّلة إلا على مُشغِّل واحد.

صادرات

تحتوي الوحدات على منافذ تتصل من خلالها بوحدات أخرى. يدعم نظام SystemC المنافذ أحادية الاتجاه وثنائية الاتجاه.

تتضمن عمليات التصدير قنوات وتسمح بالاتصال من داخل الوحدة إلى الخارج (عادةً إلى وحدات أخرى).

العمليات

تُستخدم العمليات لوصف الوظائف. وتُضمّن العمليات داخل الوحدات. يوفر SystemC ثلاثة أنواع مختلفة من تجريدات العمليات ليستخدمها مصممو الأجهزة والبرامج. تُعدّ العمليات عناصر الحساب الرئيسية، وهي متزامنة.

القنوات

القنوات هي عناصر الاتصال في SystemC. يمكن أن تكون إما أسلاكًا بسيطة أو آليات اتصال معقدة مثل FIFOs أو قنوات ناقل البيانات .

القنوات الأساسية:

  • الإشارة: ما يعادل السلك
  • المخزن المؤقت
  • FIFO
  • Mutex
  • إشارة المرور

واجهات

تستخدم المنافذ واجهات للتواصل مع القنوات.

الفعاليات

تسمح الأحداث بالتزامن بين العمليات ويجب تعريفها أثناء التهيئة.

أنواع البيانات

يقدم SystemC العديد من أنواع البيانات التي تدعم نمذجة الأجهزة.

أنواع قياسية موسعة:

  • sc_int<n>عدد صحيح موقع مكون من n بت
  • sc_uint<n>عدد صحيح غير مُوقّع ذو n بت
  • sc_bigint<n>عدد صحيح ذو إشارة مكون من n بت، حيث n > 64
  • sc_biguint<n>عدد صحيح غير مُوقّع ذو n بت، حيث n > 64

أنواع المنطق:

  • sc_bit بت واحد ذو قيمتين
  • sc_logic بت واحد ذو قيمة رباعية
  • sc_bv<n> متجه بطول n من sc_bit
  • sc_lv<n> متجه بطول n من sc_logic

أنواع النقاط الثابتة:

  • sc_fixed<> نقطة ثابتة موقعة بنموذج
  • sc_ufixed<> نقطة ثابتة غير موقعة مُنمذجة
  • sc_fix نقطة ثابتة موقعة غير مُنمذجة
  • sc_ufix نقطة ثابتة غير موقعة وغير مُنمذجة

تاريخ

  • 27 سبتمبر 1999 - الإعلان عن مبادرة Open SystemC
  • تم إصدار SystemC V0.91 بتاريخ 1 مارس 2000
  • تم إصدار SystemC V1.0 بتاريخ 28 مارس 2000
  • تم إصدار مواصفات SystemC الإصدار 2.0 وشفرة المصدر للإصدار التجريبي 1.2 بتاريخ 1 فبراير 2001
  • 2003-06-03 تم إصدار دليل مرجعي للغة SystemC 2.0.1
  • تم إصدار معيار نمذجة مستوى المعاملات SystemC 2.1 LRM و TLM 1.0 بتاريخ 6 يونيو 2005
  • 12 ديسمبر 2005 - وافق معهد مهندسي الكهرباء والإلكترونيات (IEEE) على معيار IEEE 1666 2005 للغة SystemC
  • تم إصدار SystemC v2.2 بتاريخ 13 أبريل 2007
  • تم إصدار مكتبة TLM-2.0.0 بتاريخ 9 يونيو 2008
  • تم إصدار TLM-2.0 LRM في 27 يوليو 2009، مصحوبًا بمكتبة TLM-2.0.1
  • تم إصدار ملحق SystemC AMS 1.0 LRM بتاريخ 8 مارس 2010
  • 2011-11-10 وافقت IEEE على معيار IEEE 1666 2011 لنظام SystemC [ 3 ]
  • في 6 أبريل 2016، وافق معهد مهندسي الكهرباء والإلكترونيات (IEEE) على معيار IEEE 1666.1 2016 لنظام إدارة التطبيقات (SystemC AMS).
  • 2023-06-05 وافق معهد مهندسي الكهرباء والإلكترونيات (IEEE) على معيار IEEE 1666 2023

يعود أصل لغة SystemC إلى العمل على لغة البرمجة Scenic الموصوفة في ورقة بحثية قُدّمت في مؤتمر DAC عام 1997. [ 4 ]

تعاونت شركات ARM Ltd. و CoWare و Synopsys و CynApps لتطوير SystemC (أصبحت CynApps فيما بعد Forte Design Systems ) لإطلاق أول نسخة تجريبية منه في عام 1999. [ 5 ] [ 6 ] وكان المنافس الرئيسي في ذلك الوقت هو SpecC، وهي حزمة مفتوحة المصدر أخرى تعتمد على لغة C تم تطويرها بواسطة موظفي جامعة كاليفورنيا في إرفاين وبعض الشركات اليابانية.

في يونيو 2000، تم تشكيل مجموعة معايير تُعرف باسم مبادرة النظام المفتوح (Open SystemC Initiative) لتوفير منظمة محايدة صناعيًا لاستضافة أنشطة النظام (SystemC) وللسماح لأكبر منافسي شركة Synopsys، وهما Cadence وMentor Graphics، بالتمثيل الديمقراطي في تطوير النظام (SystemC).

مثال على التعليمات البرمجية

مثال على كود جامع :

#include "systemc.h"SC_MODULE ( adder ) // تعريف الوحدة (الفئة) { sc_in < int > a , b ; // المنافذ sc_out < int > sum ;void do_add ( ) // process { sum.write ( a.read ( ) + b.read ( ) ) ; // أو sum = a + b }SC_CTOR ( adder ) // المُنشئ { SC_METHOD ( do_add ); // تسجيل do_add في النواة sensitive << a << b ; // قائمة حساسية do_add } };

تقدير الطاقة والقدرة في لغة SystemC

يمكن تقدير استهلاك الطاقة في SystemC باستخدام المحاكاة. Powersim [ 7 ] هي مكتبة فئات SystemC مصممة لحساب استهلاك الطاقة للأجهزة الموصوفة على مستوى النظام. ولتحقيق ذلك، تتم مراقبة عوامل C++، ويمكن استخدام نماذج طاقة مختلفة لكل نوع بيانات في SystemC. لا تتطلب عمليات المحاكاة باستخدام Powersim أي تغيير في شفرة المصدر للتطبيق.

انظر أيضاً

ملحوظات

  1. "تصفح المعايير" . معهد مهندسي الكهرباء والإلكترونيات . مؤرشف من الأصل في 21 ديسمبر 2007.
  2. www.systemc.org، موقع مبادرة النظام المفتوح SystemC، مؤرشف بتاريخ 6 أكتوبر 2008 على موقع Wayback Machine
  3. (10 نوفمبر 2011) معهد مهندسي الكهرباء والإلكترونيات (IEEE) يوافق على معيار IEEE 1666™ المنقح "لغة SystemC" لتصميم الأنظمة الإلكترونية على مستوى النظام، مع إضافة دعم لنمذجة مستوى المعاملات
  4. لياو، ستان؛ تجيانغ، ستيف؛ غوبتا، راجيش (1997). "ScenicDAC1997" . الصفحات 70-75 . CiteSeerX 10.1.1.56.6483 .  
  5. شركتا Synopsys و Co-Ware Inc.، اللتان قامتا بمعظم العمل وراء نظام SystemC -- https://www.electronicsweekly.com/Articles/1999/12/07/13906/stm-synopsys-in-3-year-rampd-deal.htm
  6. «يسرّ شركة ARM أن تتعاون شركات Synopsys و CoWare وغيرها في تطوير SystemC، لأنه إذا تبنّته الصناعة، فسيبسط عالمنا»، هذا ما قاله تيودور براون ، كبير مسؤولي التكنولوجيا في شركة ARM المحدودة. في سياق الحديث عن لغات البرمجة المتنافسة على دور في أنظمة SoC - http://www.eetimes.com/ip99/ip99story1.html
  7. تحميل برنامج Powersim | SourceForge.net

مراجع

  • 1666-2005 — دليل مرجعي للغة نظام C القياسي من IEEE . 2006. doi : 10.1109/IEEESTD.2006.99475 . ISBN 0-7381-4871-7.
  • دليل مرجعي لمعيار IEEE للغة SystemC القياسية . 2012. doi : 10.1109/IEEESTD.2012.6134619 . ISBN 978-0-7381-6801-2.
  • تي. غروتكر، إس. لياو، جي. مارتن، إس. سوان، تصميم الأنظمة باستخدام SystemC . سبرينغر، 2002. ISBN 1-4020-7072-1
  • قرص لينكس حيّ مبني على لغة SystemC مع برنامج تعليمي للغة C++/SystemC
  • ج. بهاسكر، مدخل إلى لغة SystemC ، الطبعة الثانية، دار نشر ستار جالاكسي، 2004. رقم ISBN 0-9650391-2-9
  • دي سي بلاك، جيه. دونوفان، سيستم سي: من الصفر ، الطبعة الثانية، سبرينغر 2009. ISBN 0-387-69957-0
  • جورج فريزر، SystemC: بنى موجهة نحو الأجهزة في لغة C++
  • فرانك غيناسيا (محرر)، نمذجة مستوى المعاملات باستخدام SystemC: مفاهيم وتطبيقات TLM للأنظمة المدمجة ، سبرينغر 2006. ISBN 0-387-26232-6
  • ستان واي. لياو، ستيفن دبليو كيه تيانغ، راجيش كيه. غوبتا: تطبيق فعال للتفاعلية لنمذجة الأجهزة في بيئة تصميم المناظر الطبيعية. مؤتمر تصميم المناظر الطبيعية 1997: 70-75