Я хочу иметь два комбинационных процесса, управляющих одним сигналом в проводном или в стиле. Каждый процесс может выводить значение «Z» или «1» в сигнал, и происходит глобальное снижение до «L».
Синтез Vivado 2017.1 «оптимизирует» мой код, чтобы получить постоянный 0 для выходного порта. Почему это происходит? Как мне обойти эту проблему?
Код:
library ieee;
use ieee.std_logic_1164.all;
entity test is
port(
input_0 : in std_logic;
input_1 : in std_logic;
output : out std_logic
);
end entity test;
architecture rtl of test is
signal s_output : std_logic;
begin
output <= to_X01(to_bit(s_output));
process(input_0)
begin
s_output <= 'Z';
if input_0='1' then
s_output <= '1';
end if;
end process;
process(input_1)
begin
s_output <= 'Z';
if input_1='1' then
s_output <= '1';
end if;
end process;
s_output <= 'L';
end architecture rtl;
Результат синтеза:
WARNING: [Synth 8-3917] design test has port output driven by constant 0