روش تأیید جهانی (UVM) یک روش محبوب برای کمک به تأیید طرح های SystemVerilog است و شامل یک سیستم پیکربندی که متاسفانه برخی از مشکلات سرعت و استفاده دارد. ریچ ادلمن از زیمنس EDA مقاله 20 صفحه ای مفصلی در مورد چگونگی جلوگیری از این مسائل نوشت و من آن را مرور کردم تا نکات برجسته را برای شما خلاصه کنم. مهندسان تأیید از یک پایگاه داده پیکربندی UVM برای تنظیم مقادیر و سپس برای دریافت مقادیر بعداً در آزمایش UVM خود استفاده می کنند. یک مثال از تنظیم و دریافت مقدار "T" این است:
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
اتصال تست UVM به دستگاه تحت آزمایش از پایگاه داده پیکربندی برای عبور رابط های مجازی استفاده می کند. سه مشکل در استفاده از پیکربندی UVM وجود دارد:
- کد بزرگ، حدود 2,600 خط کد
- به تطابق دقیق نوع نیاز دارد، بنابراین 'int' و 'bit' یکسان نیستند
- کد آهسته
مورد کد آهسته را در نظر بگیرید، زیرا با هزاران تماس برای set() استفاده از نامهای دارای حروف عام میتواند تا 30 دقیقه طول بکشد تا فاز «set» و «get» کامل شود.
Rich راه حل جدیدی برای پیکربندی های UVM پیشنهاد می کند که سرعت بسیار بالاتری دارد و در مقایسه تنها چند ثانیه طول می کشد.
اگر کد UVM شما از استفاده از حروف عام اجتناب می کند و دستورات «set» کمی دارد، کد شما سریعتر اجرا می شود.
راه حل های ممکن برای مشکلات پیکربندی UVM عبارتند از:
- به جای آن از یک متغیر سراسری استفاده کنید
- استفاده از پیکربندی UVM با یک مجموعه ()
- استفاده از پیکربندی UVM با چند set()
- از درخت پیکربندی استفاده کنید
- چیز دیگری را امتحان کنید
آخرین رویکرد امتحان کردن چیزی متفاوت، راهحل جدید است، و به استفاده از set() و get() API ادامه میدهد، سپس با حذف پارامترسازی پیکربندیها، اولویت را حذف میکند و تغییر الگوریتم جستجو را حذف میکند. نتایج این رویکرد جدید سرعت های سریع است.
آیتم پیکربندی جدید شما در کلاس مشتق شده از 'config_item' تعریف شده است، و مثال زیر 'int value' را به عنوان ویژگی در حال تنظیم نشان می دهد. برای اهداف اشکالزدایی، عملکرد چاپ زیبا را اضافه میکنید.
کلاس my_special_config_item config_item را گسترش می دهد. تابع new(نام رشته = "مجموعه_special_config_item"); super.new(name); endfunction مقدار int; رشته تابع مجازی convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); endfunction endclass
'config_item' یک ویژگی نام دارد و این نام به اضافه نام نمونه جستجو می شود. شی پیکربندی همچنین دارای تابع get_name() برای برگرداندن نام است. برای یافتن هر "instance_name.field_name" پایگاه داده پیکربندی از یک آرایه انجمنی برای جستجوی سریع و سرعت ایجاد استفاده می کند.
برای ردیابی، می توانید متوجه شوید که چه کسی get را تنظیم کرده یا چه کسی را صدا کرده است، زیرا نام فایل و شماره خط فیلدهایی در فراخوانی تابع set() و get() هستند.
set(null، «top.ab*»، «SPEED»، my_speed_config، «__FILE__، «__LINE__) get(null، «top.abcdmonitor1»، «SPEED»، speedconfig، «__FILE__، «__LINE__)
صف Accessor را می توان در حین اشکال زدایی چاپ کرد تا ببینیم چه کسی set() و get() را فراخوانی کرده است.
برای پشتیبانی از حروف عام نیاز به افزودن مکانیزم جستجو با استفاده از کانتینرها است. نام نمونه 'top.abcd*_0' را در نظر بگیرید.
قسمت عام نام نمونه با استفاده از درخت کانتینر به جای آرایه انجمنی مدیریت می شود.
خلاصه
به اشتراک گذاری داده ها بین ماژول/نمونه و دنیای مبتنی بر کلاس در یک تست UVM را می توان با استفاده از پایگاه داده پیکربندی UVM انجام داد، فقط از کاهش سرعت آگاه باشید. اگر متدولوژی شما از پیکربندی های زیادی استفاده می کند، پس از رویکرد جدید معرفی شده استفاده کنید که دارای بسته ای با استفاده از حدود 300 خط کد به جای 2,600 خط کد در فایل پایگاه داده پیکربندی UVM است.
مقاله کامل 20 صفحه ای را بخوانید، اجتناب از جنون پیکربندی راه آسان در زیمنس EDA.
وبلاگهای مرتبط
اشتراک گذاری این پست از طریق:
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- PlatoHealth. هوش بیوتکنولوژی و آزمایشات بالینی. دسترسی به اینجا.
- منبع: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- : دارد
- :است
- :نه
- $UP
- 30
- 300
- 600
- a
- درباره ما
- اضافه کردن
- اضافه کردن
- الگوریتم
- همچنین
- an
- و
- هر
- API
- روش
- هستند
- صف
- AS
- At
- اجتناب از
- مطلع
- b
- BE
- زیرا
- بودن
- در زیر
- میان
- by
- نام
- تماس ها
- CAN
- مورد
- تغییر دادن
- کلاس
- رمز
- مقایسه
- کامل
- پیکر بندی
- در نظر بگیرید
- ظرف
- ظروف
- ادامه
- ایجاد
- داده ها
- پایگاه داده
- مشخص
- نشات گرفته
- طرح
- دقیق
- دستگاه
- مختلف
- انجام شده
- در طی
- ساده
- مورد تأیید
- اتر (ETH)
- مثال
- گسترش می یابد
- FAST
- سریعتر
- کمی از
- زمینه
- پرونده
- پیدا کردن
- برای
- از جانب
- کامل
- تابع
- دریافت کنید
- گرفتن
- جهانی
- رفته
- کمک
- های لایت
- چگونه
- چگونه
- HTTPS
- if
- in
- شامل
- نمونه
- در عوض
- رابط
- معرفی
- مسائل
- IT
- JPG
- تنها
- نام
- بعد
- لاین
- خطوط
- نگاه
- مراجعه
- مقدار زیادی
- ساخت
- مطابق
- حداکثر عرض
- مکانیزم
- روش شناسی
- دقیقه
- دقیقه
- بسیار
- نام
- نام
- جدید
- راه حل جدید
- عدد
- هدف
- of
- on
- ONE
- فقط
- or
- خارج
- بسته
- مقاله
- بخش
- عبور
- فاز
- افلاطون
- هوش داده افلاطون
- PlatoData
- به علاوه
- محبوب
- پست
- تقدم
- مشکلات
- ویژگی
- پیشنهاد می کند
- اهداف
- حذف می کند
- از بین بردن
- ضروری
- نتایج
- برگشت
- غنی
- دویدن
- حوزه
- ثانیه
- دیدن
- تنظیم
- محیط
- نشان می دهد
- زیمنس
- ساده می کند
- کند
- کندی
- So
- راه حل
- مزایا
- برخی از
- چیزی
- سرعت
- سرعت
- رشته
- خلاصه کردن
- فوق العاده
- پشتیبانی
- سیستم
- T
- گرفتن
- مصرف
- آزمون
- که
- La
- شان
- سپس
- آنجا.
- اینها
- این
- هزاران نفر
- سه
- از طریق
- زمان
- به
- بالا
- موضوع
- قابلیت ردیابی
- درخت
- تلاش
- نوع
- زیر
- متاسفانه
- جهانی
- استفاده
- استفاده کنید
- استفاده
- با استفاده از
- ارزش
- ارزشها
- متغیر
- تایید
- بررسی
- از طريق
- مجازی
- مسیر..
- که
- WHO
- اراده
- با
- جهان
- نوشت
- شما
- شما
- زفیرنت