Я предполагаю, что оба назначения выполняются в одном и том же процессе.
Этот стиль кодирования разрешен.Если в процессе есть несколько назначений, последнее «выигрывает» от предыдущего.Это даже на части вектора.
Я часто использую это, чтобы установить значение по умолчанию:
-- Default set all read bits to zero
axil_rdata<= (others => '0');
case (radrs) is
when X"00" => axil_rdata( 7 downto 0) <= control;
when X"04" => axil_rdata(15 downto 0) <= status;
when X"08" => axil_rdata <= counter;
...
Таким образом, все биты axil_rdata
сначала устанавливаются в ноль.Затем некоторым битам присваивается новое значение.