library ieee;
use ieee.std_logic_1164.all;
library spi;
library vunit_lib;
context vunit_lib.vunit_context;
entity tb_sipo_shift_register is
generic (
runner_cfg : string);
end entity tb_sipo_shift_register;
architecture tb of tb_sipo_shift_register is
signal clk : std_logic := '0';
signal data_i : std_logic := '0';
signal q_o : std_logic_vector(7 downto 0);
begin -- architecture tb
uut: entity spi.sipo_shift_register
generic map (
WIDTH => 8)
port map (
clk_i => clk,
data_i => data_i,
q_o => q_o);
clk <= not clk after 1 ns;
main: process is
begin -- process main
test_runner_setup(runner, runner_cfg);
show(get_logger(default_checker), display_handler, pass);
while test_suite loop
if run("just_one") then
wait until falling_edge(clk);
data_i <= '1';
wait until falling_edge(clk);
data_i <= '0';
for i in 0 to 6 loop
wait until falling_edge(clk);
end loop; -- i
check_equal(q_o, std_logic_vector'("10000000"));
elsif run("one zero") then
for i in 0 to 3 loop
wait until falling_edge(clk);
data_i <= '1';
wait until falling_edge(clk);
data_i <= '0';
end loop; -- i
wait until falling_edge(clk);
check_equal(q_o, std_logic_vector'("10101010"));
end if;
end loop;
test_runner_cleanup(runner);
end process main;
end architecture tb;