Untuk menghindari kait, Anda perlu memastikan semua output Anda ditugaskan di semua cabang kode yang mungkin.
sebagai contoh,
if a = '1' then
b(0) <= '1';
else
b(1 downto 0) <= "00";
end if;
akan menghasilkan kait, karena dalam kondisi pertama, nilai b (1) tidak ditentukan, sehingga kompiler memutuskan Anda ingin menyimpan nilai sebelumnya dari b (1) di sana. Salah satu cara untuk menulis ini yang tidak akan menghasilkan kait adalah:
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;
Di sini Anda secara eksplisit menyatakan bahwa b harus mempertahankan nilai lamanya, dan kemudian menimpa b (0) dengan nilai baru.
Cara lain adalah dengan memberikan nilai default ba, seperti dalam jawaban @ TomiJ.
Jika Anda memposting kode yang menerima kait, kami dapat membantu Anda menemukan alasan spesifik.