ইউনিভার্সাল ভেরিফিকেশন মেথডলজি (UVM) হল সিস্টেম ভেরিলগ ডিজাইন যাচাই করতে সাহায্য করার একটি জনপ্রিয় উপায় এবং এতে একটি কনফিগারেশন সিস্টেম যে দুর্ভাগ্যবশত কিছু গতি এবং ব্যবহার সমস্যা আছে. সিমেন্স ইডিএর রিচ এডেলম্যান কীভাবে এই সমস্যাগুলি এড়াতে হয় সেই বিষয়ে একটি বিশদ 20-পৃষ্ঠার পেপার লিখেছেন এবং আমি আপনার জন্য হাইলাইটগুলি সংক্ষিপ্ত করার জন্য এটির মধ্য দিয়ে চলেছি। যাচাইকরণ ইঞ্জিনিয়াররা মান সেট করতে একটি UVM কনফিগারেশন ডাটাবেস ব্যবহার করে, তারপরে তাদের UVM পরীক্ষায় পরে মানগুলি পেতে। মান 'T' সেট করা এবং পাওয়ার একটি উদাহরণ হল:
uvm_config#(T)::set(স্কোপ, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
পরীক্ষার অধীনে ডিভাইসের সাথে UVM testbench সংযোগ করা ভার্চুয়াল ইন্টারফেস পাস করতে কনফিগারেশন ডাটাবেস ব্যবহার করে। 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(নাম); শেষ ফাংশন int মান; ভার্চুয়াল ফাংশন স্ট্রিং convert2string(); ফেরত $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__)
কে সেট() এবং get() ডাকে তা দেখতে ডিবাগের সময় অ্যাক্সেসর সারি প্রিন্ট করা যেতে পারে।
ওয়াইল্ডকার্ড সমর্থন করার জন্য কন্টেইনার ব্যবহার করে একটি লুকআপ মেকানিজম যোগ করা প্রয়োজন। উদাহরণের নাম 'top.abcd*_0' বিবেচনা করুন।
ইনস্ট্যান্স নামের ওয়াইল্ডকার্ড অংশটি সহযোগী অ্যারের পরিবর্তে ধারক গাছ ব্যবহার করে পরিচালনা করা হয়।
সারাংশ
UVM টেস্টবেঞ্চে মডিউল/ইনস্ট্যান্স এবং ক্লাস-ভিত্তিক বিশ্বের মধ্যে ডেটা শেয়ার করা UVM কনফিগারেশন ডাটাবেস ব্যবহার করে করা যেতে পারে, স্পিড স্লোডাউন সম্পর্কে সচেতন থাকুন। যদি আপনার পদ্ধতিতে প্রচুর কনফিগারেশন ব্যবহার করা হয়, তাহলে প্রবর্তিত নতুন পদ্ধতি ব্যবহার করার কথা বিবেচনা করুন যেটিতে UVM কনফিগারেশন ডাটাবেস ফাইলের কোডের 300 লাইনের পরিবর্তে প্রায় 2,600 লাইন কোড ব্যবহার করে একটি প্যাকেজ রয়েছে।
পুরো 20 পৃষ্ঠার কাগজ পড়ুন, কনফিগারেশন পাগলামি এড়িয়ে চলা সহজ উপায় সিমেন্স ইডিএ-তে।
সম্পর্কিত ব্লগ
এর মাধ্যমে এই পোস্টটি ভাগ করুন:
- এসইও চালিত বিষয়বস্তু এবং পিআর বিতরণ। আজই পরিবর্ধিত পান।
- PlatoData.Network উল্লম্ব জেনারেটিভ Ai. নিজেকে ক্ষমতায়িত করুন। এখানে প্রবেশ করুন.
- প্লেটোএআইস্ট্রিম। Web3 ইন্টেলিজেন্স। জ্ঞান প্রসারিত. এখানে প্রবেশ করুন.
- প্লেটোইএসজি। কার্বন, ক্লিনটেক, শক্তি, পরিবেশ সৌর, বর্জ্য ব্যবস্থাপনা. এখানে প্রবেশ করুন.
- প্লেটো হেলথ। বায়োটেক এবং ক্লিনিক্যাল ট্রায়াল ইন্টেলিজেন্স। এখানে প্রবেশ করুন.
- উত্স: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- : আছে
- : হয়
- :না
- $ ইউপি
- 30
- 300
- 600
- a
- সম্পর্কে
- যোগ
- যোগ
- অ্যালগরিদম
- এছাড়াও
- an
- এবং
- কোন
- API
- অভিগমন
- রয়েছি
- বিন্যাস
- AS
- At
- এড়াতে
- সচেতন
- b
- BE
- কারণ
- হচ্ছে
- নিচে
- মধ্যে
- by
- নামক
- কল
- CAN
- কেস
- পরিবর্তন
- শ্রেণী
- কোড
- তুলনা
- সম্পূর্ণ
- কনফিগারেশন
- বিবেচনা
- আধার
- কন্টেনারগুলি
- চলতে
- সৃষ্টি
- উপাত্ত
- ডেটাবেস
- সংজ্ঞায়িত
- উদ্ভূত
- ডিজাইন
- বিশদ
- যন্ত্র
- বিভিন্ন
- সম্পন্ন
- সময়
- সহজ
- প্রকৌশলী
- থার (eth)
- উদাহরণ
- প্রসারিত
- দ্রুত
- দ্রুত
- কয়েক
- ক্ষেত্রসমূহ
- ফাইল
- আবিষ্কার
- জন্য
- থেকে
- সম্পূর্ণ
- ক্রিয়া
- পাওয়া
- পেয়ে
- বিশ্বব্যাপী
- সর্বস্বান্ত
- সাহায্য
- হাইলাইট
- কিভাবে
- কিভাবে
- HTTPS দ্বারা
- if
- in
- অন্তর্ভুক্ত
- উদাহরণ
- পরিবর্তে
- ইন্টারফেসগুলি
- উপস্থাপিত
- সমস্যা
- IT
- JPG
- মাত্র
- গত
- পরে
- লাইন
- লাইন
- তাকিয়ে
- খুঁজে দেখো
- প্রচুর
- মেকিং
- ম্যাচিং
- সর্বোচ্চ প্রস্থ
- পদ্ধতি
- প্রণালী বিজ্ঞান
- মিনিট
- মিনিট
- অনেক
- নাম
- নাম
- নতুন
- নতুন সমাধান
- সংখ্যা
- লক্ষ্য
- of
- on
- ONE
- কেবল
- or
- বাইরে
- প্যাকেজ
- কাগজ
- অংশ
- পাস
- ফেজ
- Plato
- প্লেটো ডেটা ইন্টেলিজেন্স
- প্লেটোডাটা
- যোগ
- জনপ্রিয়
- পোস্ট
- প্রাধান্য
- সমস্যা
- সম্পত্তি
- প্রস্তাব
- উদ্দেশ্য
- অপসারণ
- সরানোর
- প্রয়োজনীয়
- ফলাফল
- প্রত্যাবর্তন
- ধনী
- চালান
- সুযোগ
- সেকেন্ড
- দেখ
- সেট
- বিন্যাস
- শো
- সিমেন্স
- সরলীকৃত
- ধীর
- মন্থরতা
- So
- সমাধান
- সলিউশন
- কিছু
- কিছু
- স্পীড
- গতি
- স্ট্রিং
- সংক্ষিপ্ত করা
- সুপার
- সমর্থন
- পদ্ধতি
- T
- গ্রহণ করা
- গ্রহণ
- পরীক্ষা
- যে
- সার্জারির
- তাদের
- তারপর
- সেখানে।
- এইগুলো
- এই
- হাজার হাজার
- তিন
- দ্বারা
- সময়
- থেকে
- শীর্ষ
- বিষয়
- traceability
- বৃক্ষ
- চেষ্টা
- আদর্শ
- অধীনে
- দুর্ভাগ্যবশত
- সার্বজনীন
- ব্যবহার
- ব্যবহার
- ব্যবহারসমূহ
- ব্যবহার
- মূল্য
- মানগুলি
- পরিবর্তনশীল
- প্রতিপাদন
- যাচাই
- মাধ্যমে
- ভার্চুয়াল
- উপায়..
- যে
- হু
- ইচ্ছা
- সঙ্গে
- বিশ্ব
- লিখেছেন
- আপনি
- আপনার
- zephyrnet