Remove non-Quartus-supported VHDL 2008 features. Remove inferred Latches. Add test Entities to see resulting hw synthesis of various code segments.
74 lines
1.8 KiB
VHDL
74 lines
1.8 KiB
VHDL
library ieee;
|
|
use ieee.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
|
|
use work.math_pkg.all;
|
|
use work.rtps_package.all;
|
|
|
|
-- Test how FSM states guarded with a synthesis guard are handled.
|
|
|
|
entity test3 is
|
|
generic (
|
|
BUILD : boolean := FALSE
|
|
);
|
|
port (
|
|
clk : in std_logic;
|
|
reset : in std_logic;
|
|
input : in std_logic_vector(31 downto 0);
|
|
output : out std_logic_vector(31 downto 0)
|
|
);
|
|
end entity;
|
|
|
|
architecture arch of test3 is
|
|
|
|
type STAGE_TYPE is (IDLE, STATE1, STATE2);
|
|
|
|
signal stage, stage_next : STAGE_TYPE := IDLE;
|
|
|
|
begin
|
|
|
|
process(all)
|
|
begin
|
|
stage_next <= stage;
|
|
output <= (others => '0');
|
|
|
|
case (stage) is
|
|
when IDLE =>
|
|
case (input) is
|
|
when x"00000000" =>
|
|
if (BUILD) then
|
|
stage_next <= STATE1;
|
|
else
|
|
stage_next <= STATE2;
|
|
end if;
|
|
when x"00000001" =>
|
|
stage_next <= STATE2;
|
|
when others =>
|
|
null;
|
|
end case;
|
|
when STATE1 =>
|
|
if (BUILD) then
|
|
stage_next <= IDLE;
|
|
output <= x"DEADBEEF";
|
|
end if;
|
|
when STATE2 =>
|
|
stage_next <= IDLE;
|
|
output <= x"BEEFDEAD";
|
|
when others =>
|
|
null;
|
|
end case;
|
|
end process;
|
|
|
|
sync : process(all)
|
|
begin
|
|
if rising_edge(clk) then
|
|
if (reset = '1') then
|
|
stage <= IDLE;
|
|
else
|
|
stage <= stage_next;
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
end architecture;
|