このエラーは数回の遭遇でしたが、私は自分のコードでこのエラーを解決する方法をまだ見ることができません。エラーとコードはどちらも下に表示されています。VHDLコードエラー: "エラー(10818):<name>のレジスタがクロックエッジ外にその値を保持していないため、<location>に推測できません"
Error (10818): Can't infer register for count[0] at 5bit_PHreg_vhdl.vhd(21) because it does not hold its value outside the clock edge
エラーが「カウント」の各ビットに対して繰り返さ及びコードに注目行を指します。
ARCHITECTURE behavioral OF 5bit_PHreg_vhdl IS
SIGNAL count : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
PROCESS(reset, clk, SHR_EN)
BEGIN
-- Check if asynchronous reset is 0
IF reset = '0' THEN --ERROR OCCURS HERE
count <= "00000";
-- Check if rising edge
ELSIF (clk'EVENT AND clk = '1') THEN
IF LD_EN = '1' THEN
count <= FA_in;
END IF;
-- Check if SHR_EN is active
ELSIF (SHR_EN = '1') THEN
count(4) <= c_in;
count(3) <= count(4);
count(2) <= count(3);
count(1) <= count(2);
count(0) <= count(1);
c_out <= count(0);
END IF;
END PROCESS;
PH_reg_out <= count;
END behavioral;
IF(clk'EVENT AND clk = '1')の後に 'else'または' elsif'を使用しないでください。また、clk'EVENTとclk = '1'の代わりに 'rising_edge(clk)'を使用してください。 [こちら](http://vhdlguru.blogspot.com/2010/04/difference-between-risingedgeclk-and.html)を読んでください。あなたがコードの一部だけを提供し、それが何をすべきか説明しなかったので、あなたに詳細な答えを与えることはできません。 [mcve]を入力してください。 – Staszek
'ELSIF(SHR_EN = '1')THEN'はリセットおよびクロックエッジ条件の外にあり、合成のために認識されない形式です。もしそれが登録されていれば、前の終わりの中にそれと次の割り当てを移動してください。プロセスの機密性リストからSHR_ENを削除します。 – user1155120
コメントをいただいた皆様に感謝します。今私は衝動的に投稿し、「最小限の、完全で検証可能な」質問を提供することに固執しなかったことを認識しています。 –