লেচগুলি এড়ানোর জন্য, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার সমস্ত আউটপুট কোডের সমস্ত সম্ভাব্য শাখায় নির্ধারিত হয়েছে।
উদাহরণ স্বরূপ,
if a = '1' then
b(0) <= '1';
else
b(1 downto 0) <= "00";
end if;
একটি ল্যাচ তৈরি করবে, কারণ প্রথম শর্তে, খ (1) এর মান নির্দিষ্ট করা হয়নি, তাই সংকলক সিদ্ধান্ত নিয়েছে যে আপনি বি (1) এর পূর্ববর্তী মানটি রাখতে চান। এটি লেখার একটি উপায় যা কোনও ল্যাচ তৈরি করে না:
if a = '1' then
b <= prev_b;
b(0) <= '1';
else
b(1 downto 0) <= "00";
end if;
...
if rising_edge (clk)
prev_b <= b;
end if;
এখানে আপনি স্পষ্টতই বলেছেন যে খ এর পুরানো মান ধরে রাখা উচিত এবং তারপরে নতুন মান দিয়ে b (0) ওভাররাইট করা উচিত।
@ টোমিজির উত্তর অনুসারে, আর একটি উপায় বা ডিফল্ট মান দেওয়া।
আপনি যে কোডটি ল্যাচ পেয়ে যাচ্ছেন তা যদি পোস্ট করেন তবে আমরা আপনাকে সুনির্দিষ্ট কারণ খুঁজে পেতে সহায়তা করতে পারি।