Обычно вы получаете выводимые защелки, когда вы не предоставляете обновленные назначения для сигнала во всех возможных вариантах оператора if / else или case в процессе.
В вашем случае оператор процесса включает 5сигналы, но имеют значение только два (clk и address1).У вас есть правильно сформированный синхронный условный оператор для "IF (clk = '1' AND clk'event) THEN", но есть предложение ELSE , которое, вероятно, является причиной ваших проблем.VHDL оставит значение сигнала в своем предыдущем состоянии, если вы явно не измените его, поэтому нет необходимости в:
ELSE
address1 <= address1;
..., который, я подозреваю, вызывает предупреждения, которые вы видите,хотя это также могут быть ненужные сигналы в списке чувствительности процесса.Попробуйте упрощенную версию без лишних сигналов и условных выражений:
writeprocess:PROCESS(clk)
begin
IF (clk = '1' AND clk'event) THEN
IF(check = "1") THEN
IF (ce_l = '0' AND we_l = '0') THEN
address1 <= d(31 DOWNTO 0);
ELSE
address1 <= address1;
END IF;
ELSE
address1 <= address1;
END IF;
END IF;
END PROCESS writeprocess ;