कुंडी से बचने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि आपके सभी आउटपुट कोड की सभी संभावित शाखाओं में असाइन किए गए हैं।
उदाहरण के लिए,
if a = '1' then
b(0) <= '1';
else
b(1 downto 0) <= "00";
end if;
एक कुंडी उत्पन्न करेगा, क्योंकि पहली स्थिति में, b (1) का मान निर्दिष्ट नहीं है, इसलिए संकलक ने तय किया कि आप b (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 को पुराने मूल्य को बनाए रखना चाहिए, और फिर नए मान के साथ b (0) को अधिलेखित करना चाहिए।
दूसरा तरीका बा डिफॉल्ट वैल्यू देना है, जैसा कि @ तोमीज का जवाब है।
यदि आप उस कोड को पोस्ट करते हैं जिस पर आपको एक कुंडी मिल रही है, तो हम आपको इसका विशिष्ट कारण खोजने में मदद कर सकते हैं।