تعيين أسلاك عميقة في مجموعة متداخلة من الوحدات النمطية
-
24-09-2019 - |
سؤال
لديّ سلك يبلغ عمقه حوالي 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
إذا لم يحل هذا مشكلتك:
- أظهر المزيد ذو صلة الشفرة
- توضيح "لا يعمل". أظهر رسالة الخطأ الخاصة بك ، إن وجدت.
تحديث: تنشأ مشكلة محتملة أخرى إذا 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.