-- Code your testbench here library IEEE; use IEEE.std_logic_1164.all; entity testbench is end testbench; architecture tb of testbench is component FSM is port ( clk : in STD_LOGIC; data_in : in STD_LOGIC; direct : in STD_LOGIC; invert : in STD_LOGIC; data_out : out STD_LOGIC); end component; component FSM_sync is port ( clk : in STD_LOGIC; data_in : in STD_LOGIC; direct : in STD_LOGIC; invert : in STD_LOGIC; data_out_sync : out STD_LOGIC); end component; component clkGen is port (clk : out std_logic); end component; signal sig_clk, sig_din,sig_dout, sig_dout_sync, sig_direct, sig_invert : std_logic; begin DUT: FSM port map( clk => sig_clk, direct => sig_direct, invert => sig_invert, data_in => sig_din, data_out => sig_dout ); DUT_sync: FSM_sync port map( clk => sig_clk, direct => sig_direct, invert => sig_invert, data_in => sig_din, data_out_sync => sig_dout_sync ); mClkGen : clkGen port map( clk => sig_clk ); sig_din <='0', '1' after 22 ns, '0' after 40 ns, '1' after 100 ns, '0' after 140 ns, '1' after 142 ns, '0' after 150 ns, '1' after 170 ns, '0' after 200 ns, '1' after 282 ns, '0' after 482 ns, '1' after 500 ns, '0' after 525 ns, '1' after 570 ns, '0' after 632ns, '1' after 750 ns; sig_direct<= '0', '1' after 100 ns, '0' after 400 ns, '1' after 600 ns; sig_invert<= '0', '1' after 350 ns, '0' after 650 ns, '1' after 700 ns; end tb;