Commit 9dd55085 authored by Jan Pospisil's avatar Jan Pospisil

fixed registers removal in optimization in Xilinx XST

parent f1b64718
......@@ -24,23 +24,39 @@ architecture syn of ResetSyncer is
end function;
attribute ASYNC_REG: string;
attribute KEEP:string;
attribute SHREG_EXTRACT: string;
constant c_Inversion: std_logic := if_sl(g_Inverted, '1', '0');
signal ShiftRegister: std_logic_vector(g_Length-1 downto 0) := (others => ('1' xor c_Inversion));
signal ShiftRegister0: std_logic := ('1' xor c_Inversion);
signal ShiftRegister1: std_logic := ('1' xor c_Inversion);
signal ShiftRegister2: std_logic := ('1' xor c_Inversion);
attribute ASYNC_REG of ShiftRegister: signal is "TRUE";
attribute ASYNC_REG of ShiftRegister0: signal is "true";
attribute ASYNC_REG of ShiftRegister1: signal is "true";
attribute ASYNC_REG of ShiftRegister2: signal is "true";
attribute KEEP of ShiftRegister0: signal is "true";
attribute KEEP of ShiftRegister1: signal is "true";
attribute KEEP of ShiftRegister2: signal is "true";
attribute SHREG_EXTRACT of ShiftRegister0: signal is "no";
attribute SHREG_EXTRACT of ShiftRegister1: signal is "no";
attribute SHREG_EXTRACT of ShiftRegister2: signal is "no";
begin
pSyncer: process (Clk_ik, Reset_ira) begin
if Reset_ira = ('1' xor c_Inversion) then
ShiftRegister <= (others => ('1' xor c_Inversion));
ShiftRegister0 <= ('1' xor c_Inversion);
ShiftRegister1 <= ('1' xor c_Inversion);
ShiftRegister2 <= ('1' xor c_Inversion);
elsif rising_edge(Clk_ik) then
ShiftRegister <= ShiftRegister(g_Length-2 downto 0)&('0' xor c_Inversion);
ShiftRegister0 <= ('0' xor c_Inversion);
ShiftRegister1 <= ShiftRegister0;
ShiftRegister2 <= ShiftRegister1;
end if;
end process;
Reset_or <= ShiftRegister(g_Length-1);
Reset_or <= ShiftRegister2;
end architecture;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment