كيف يمكنني الانتظار للحصول على حدث واحد من قائمة الأحداث في Specman؟

StackOverflow https://stackoverflow.com/questions/1530228

  •  20-09-2019
  •  | 
  •  

سؤال

لدي بنية في Specman:

struct foo_s {
    event foo_ev;

    // some code that will emit foo_ev sometimes
};

وقائمة:

var foo_l: list of foo_s;  // later code will manage the list

والآن أريد مزامنة على أي من foo_ev الأحداث في القائمة:

first of {
    sync @foo_l[0].foo_ev;
    sync @foo_l[1].foo_ev;
    sync @foo_l[2].foo_ev;
    //etc
};

المشكلة هي أنه في الوقت الذي يعمل فيه هذا المقتطف، لا أعرف كم عدد العناصر الموجودة foo_l. وبعد هل هناك أي طريقة بالنسبة لي أن أنتظر أي التابع foo_ev الأحداث المراد انبعاثها؟

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

المحلول

هل يمكن أن تتالي يدويا الحدث:

unit bar_u {
    foo_l: list of foo_s;  
    event any_foo_toggled_e;
}

struct foo_s {
    event foo_e;
    on foo_e {
        emit get_enclosing_unit(bar_u).any_foo_toggled_e;
    };

    // some code that will emit foo_ev sometimes
};

نصائح أخرى

سيكون حل آخر لاستخدام ماكرو محسوب. مفهوم وحدات الماكرو المحسوبة هو كتابة التعليمات البرمجية لتوليد التعليمات الإلكترونية. باستخدام هذا النهج يمكنك أن تنظر إلى طول foo_l وتوليد first of { sync ... قائمة باستبدال ماكرو.

آسف أنا لا أمتلك حاليا وقت الطهي على سبيل المثال، ولكن يجب أن تكون وثائق Specman صديقك إذا كنت مهتما. إذا لم تكن قد سمعت عن وحدات الماكرو المحسوبة حتى الآن، فمن المؤكد أنها تستحق نظرة.

تحديث]: في الفريق Specman لقد نشروا للتو مثال على ماكرو محسوب. وبعد لديهم أيضا بعض المشاركات القديمة في هذا الموضوع.

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