سؤال

لدي مقاعد اختبار Verilog القائم على Verilog، وهي متداخل إلى مصدر C باستخدام DPI. الآن باستخدام DPI أنا أخطط لكتابة البرامج الثابتة بالكامل. للقيام بذلك أحتاج إلى 3 أشياء

  • سجل القرأ
  • سجل الكتابة
  • معالج المقاطعة كما أفهم، سجل القراءات والكتابة هي مهام أحتاجها للتصدير من مقعد اختبار RTL. والمقاطعة المعالج (نفذت عن طريق استيراد وظيفة من 'ج).

راجعت معظم وثائق الإيقاع وعثرت على تلميحات مفيدة. لقد قمت أيضا بالتسجيل في مجتمع مستخدمي الإيقاع ولكن يبدو أنني لا أستطيع طرح السؤال حتى يوافقوا على تسجيلي.

فقط في حالة يدرك شخص ما بذلك، وسيقدر مساعدتهم.

هل كانت مفيدة؟

المحلول

في الواقع أنا أحسب ذلك شيء مثل هذا.

//--From RTL ---
export "DPI" task reg_read;

task reg_read;
   input int nAddr;
   output int nVal;

 // -- read implementation --

endtask

// -- From C code
extern void reg_read (int nAddr, int *pVal);

void test_read (void)
{
   int nRegVal;

   // Dummy checking !!
   reg_read (0x100, &nRegVal);
}

// -- Again in RTL --
import "DPI" context task test_read ();

هذا يعمل بالنسبة لي باستخدام NCVERILOG.

نصائح أخرى

بارد ... لقد كتبت بالفعل مقالة حول هذا الموضوع. حلقة الوصل

تقوم الورقة في الواقع بتصدير السجل يقرأ ويكتب وأشياء عبر DPI ثم قم بإضافة مترجم TCL إلى ذلك حتى تتمكن من استخدام TCL للتحكم في SIM. كان هذا شيئا يحبه الرجال المختبرات منذ كل أدواتهم بالفعل في TCL.

يمكنك فقط اتباع الإرشادات لدمج مكالمات الدعامات الخاصة بك من C إلى SV عبر DPI، ثم توقف عند تشغيل "TCL".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top