نئے کنفیگریشن سسٹم - Semiwiki کے ذریعے UVM کو تیز تر بنانا

نئے کنفیگریشن سسٹم - Semiwiki کے ذریعے UVM کو تیز تر بنانا

ماخذ نوڈ: 3036575

یونیورسل ویریفکیشن میتھڈولوجی (UVM) سسٹم ویریلوگ ڈیزائن کی تصدیق میں مدد کرنے کا ایک مقبول طریقہ ہے، اور اس میں ایک ترتیب کے نظام جس میں بدقسمتی سے رفتار اور استعمال کے کچھ مسائل ہیں۔ سیمنز ای ڈی اے کے رچ ایڈل مین نے ان مسائل سے کیسے بچنا ہے اس موضوع پر 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' ایک جیسے نہیں ہیں۔
  • سست کوڈ

سست کوڈ کے معاملے پر غور کریں، کیونکہ وائلڈ کارڈز کے ساتھ ناموں کا استعمال کرتے ہوئے سیٹ () کے لیے ہزاروں کالز کے ساتھ 'سیٹ' اور 'گیٹ' کا مرحلہ مکمل ہونے میں 30 منٹ لگ سکتے ہیں۔

گزرا ہوا وقت منٹ

رچ نے UVM کنفیگریشنز کے لیے ایک نیا حل تجویز کیا ہے جس کی رفتار بہت تیز ہے، مقابلے میں صرف چند سیکنڈ لگتے ہیں۔

نیا حل منٹ

اگر آپ کا UVM کوڈ وائلڈ کارڈ استعمال کرنے سے گریز کرتا ہے اور اس میں چند 'سیٹ' کمانڈز ہیں، تو آپ کا کوڈ تیزی سے چلے گا۔

UVM کنفیگریشن کے مسائل کے ممکنہ حل یہ ہیں:

  • اس کے بجائے عالمی متغیر استعمال کریں۔
  • ایک سیٹ کے ساتھ UVM کنفیگریشن کا استعمال کریں()
  • چند سیٹ کے ساتھ UVM کنفیگریشن استعمال کریں()
  • کنفیگریشن ٹری استعمال کریں۔
  • کچھ مختلف کرنے کی کوشش کریں

کچھ مختلف کرنے کی کوشش کرنے کا وہ آخری طریقہ نیا حل ہے، اور یہ سیٹ() اور get() API کا استعمال جاری رکھتا ہے، پھر کنفیگریشنز کے پیرامیٹرائزیشن کو ہٹا کر آسان بناتا ہے، فوقیت کو ہٹاتا ہے، اور تلاش الگورتھم کی تبدیلی کو ہٹاتا ہے۔ اس نئے نقطہ نظر کے نتائج تیز رفتار ہیں۔

آپ کے نئے کنفیگریشن آئٹم کی وضاحت 'config_item' سے اخذ کردہ کلاس میں کی گئی ہے، اور ذیل کی مثال 'int value' کو ظاہر کرتی ہے جیسا کہ پراپرٹی سیٹ کی جا رہی ہے۔ ڈیبگ مقاصد کے لیے آپ پریٹی پرنٹ فنکشن شامل کرتے ہیں۔

کلاس my_special_config_item توسیع کرتا ہے config_item؛ فنکشن نیا (سٹرنگ کا نام = "my_special_config_item")؛ super.new(نام)؛ endfunction int قدر؛ ورچوئل فنکشن سٹرنگ کنورٹ 2 سٹرنگ ()؛ واپس $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string())؛ اینڈ فنکشن اینڈ کلاس

'config_item' میں ایک نام کا انتساب ہے، اور اس نام کے علاوہ مثال کے نام کو دیکھا جاتا ہے۔ کنفیگریشن آبجیکٹ کا نام واپس کرنے کے لیے get_name() فنکشن بھی ہوتا ہے۔ کسی بھی "instance_name.field_name" کو تلاش کرنے کے لیے کنفیگریشن ڈیٹا بیس تیز تلاش اور تخلیق کی رفتار کے لیے ایک ایسوسی ایٹیو صف کا استعمال کرتا ہے۔
ٹریس ایبلٹی کے لیے آپ یہ جان سکتے ہیں کہ گیٹ کس نے سیٹ کیا یا کس نے کال کی، کیونکہ سیٹ() اور get() فنکشن کالز میں فائل کا نام اور لائن نمبر فیلڈز ہیں۔

سیٹ(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)

ایکسیسر کی قطار کو ڈیبگ کے دوران پرنٹ کیا جا سکتا ہے تاکہ یہ دیکھا جا سکے کہ سیٹ() اور گیٹ() کو کس نے بلایا ہے۔

وائلڈ کارڈز کو سپورٹ کرنے کے لیے کنٹینرز کا استعمال کرتے ہوئے تلاش کا طریقہ کار شامل کرنا ضروری ہے۔ مثال کے نام 'top.abcd*_0' پر غور کریں۔

کنٹینر درخت منٹ
کنٹینر کا درخت

مثال کے نام کے وائلڈ کارڈ حصے کو کنٹینر ٹری کا استعمال کرتے ہوئے سنبھالا جاتا ہے، اس کے بجائے ایسوسی ایٹیو سرنی۔

خلاصہ

UVM ٹیسٹ بینچ میں ماڈیول/مثال اور کلاس پر مبنی دنیا کے درمیان ڈیٹا کا اشتراک UVM کنفیگریشن ڈیٹا بیس کا استعمال کرتے ہوئے کیا جا سکتا ہے، بس رفتار کی سست روی سے آگاہ رہیں۔ اگر آپ کا طریقہ کار بہت ساری کنفیگریشنز کا استعمال کرتا ہے، تو پھر متعارف کرائے گئے نئے طریقہ کار کو استعمال کرنے پر غور کریں جس میں UVM کنفیگریشن ڈیٹا بیس فائل میں کوڈ کی 300 لائنوں کے بجائے تقریباً 2,600 لائنوں کا کوڈ استعمال کرنے والا پیکیج ہے۔

20 صفحات پر مشتمل مکمل مقالہ پڑھیں، کنفیگریشن جنون سے بچنا آسان طریقہ سیمنز ای ڈی اے میں۔

متعلقہ بلاگز

اس پوسٹ کو بذریعہ شیئر کریں:

ٹائم اسٹیمپ:

سے زیادہ سیمی ویکی