تعيين أسلاك عميقة في مجموعة متداخلة من الوحدات النمطية

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

سؤال

لديّ سلك يبلغ عمقه حوالي 4 مستويات ولا أريد حقًا متاعب الاضطرار إلى نشره في التسلسل الهرمي. هل هناك أي طريقة لتعيين السلك باستخدام نوع من الرجوع؟ أعلم أنه يمكنني الوصول إلى السلك عن طريق الكتابة:

cca.cpu0.cca3_cpu.nc1_cp_checkpoint 

لكن

assign cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;

لا يعمل

أي شخص يعرف بأي طريقة للقيام بذلك؟

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

المحلول

نظرًا لأنك لم تعرض رمزًا كافيًا لأي شخص لإعادة إنتاج مشكلتك ، ولم تكشف عن أي تفاصيل تتعلق بمشكلتك ، كل ما يمكننا فعله هو التخمين.

أظن أن هذا nc1_cp_checkpoint تم إعلانه على أنه أ reg داخل الخاص بك cca3_cpu نموذج. لا يمكنك تعيين قيمة إلى reg باستخدام مهمة مستمرة. حاول استخدام مهمة إجرائية (داخل initial أو always كتلة) ، على سبيل المثال:

initial begin
    cca.cpu0.cca3_cpu.nc1_cp_checkpoint = checkpoint;
end

إذا لم يحل هذا مشكلتك:

  1. أظهر المزيد ذو صلة الشفرة
  2. توضيح "لا يعمل". أظهر رسالة الخطأ الخاصة بك ، إن وجدت.

تحديث: تنشأ مشكلة محتملة أخرى إذا nc1_cp_checkpoint هو مدفوع باستمرار wire داخل الخاص بك cca3_cpu نموذج. في هذه الحالة ، الثاني الخاص بك assign قد يسبب الخلاف ، مما يجعل القيمة غير معروفة (x). قد تكون قادرًا على تجنب هذه المشكلة باستخدام force و release.

نصائح أخرى

من العلامة الخاصة بك ، يبدو أنك تشير إلى أنك تستخدم VCS. هل تحصل على:

Error-[XMRE] Cross-module reference resolution error
Cross module resolution failed, token BLAH'. 
Originating module 'foo'. "foo.v", 666: 

قد يشير ذلك إلى أن طريقك غير صحيح.

تعمل المراجع عبر الوحدات ، ولكن قد لا يتم تمكينها إذا كنت تقيد التصميم الخاص بك على بنيات قابلة للتركيب. ابحث عن "مرجع الوحدة المتقاطعة" في دليل مستخدم VCS.

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