library ieee; use std.textio.all; use ieee.std_logic_1164.all; entity TB_MAIN_CTRL is end TB_MAIN_CTRL; architecture TEST of TB_MAIN_CTRL is constant PERIOD : time := 10 ns; component MAIN_CTRL port(CLK : in std_ulogic; RESET : in std_ulogic; TRIGGER : in std_ulogic; EXPOSE : in std_ulogic; MOTOR_READY : in std_ulogic; MOTOR_ERROR : in std_ulogic; ERROR : out std_ulogic; TIMER_GO : out std_ulogic; MOTOR_GO : out std_ulogic); end component; signal W_CLK : std_ulogic := '0'; signal W_RESET : std_ulogic; signal W_TRIGGER : std_ulogic; signal W_EXPOSE : std_ulogic; signal W_MOTOR_READY : std_ulogic; signal W_MOTOR_ERROR : std_ulogic; signal W_ERROR : std_ulogic; signal W_TIMER_GO : std_ulogic; signal W_MOTOR_GO : std_ulogic; begin DUT : MAIN_CTRL port map( CLK => W_CLK, RESET => W_RESET, TRIGGER => W_TRIGGER, EXPOSE => W_EXPOSE, MOTOR_READY => W_MOTOR_READY, MOTOR_ERROR => W_MOTOR_ERROR, ERROR => W_ERROR, TIMER_GO => W_TIMER_GO, MOTOR_GO => W_MOTOR_GO); W_CLK <= not W_CLK after PERIOD/2; STIMULI : process begin W_RESET <= '1'; W_TRIGGER <= '1'; W_MOTOR_READY <= '0'; W_MOTOR_ERROR <= '1'; wait for 3*PERIOD; W_RESET <= '0'; W_TRIGGER <= '0'; W_MOTOR_READY <= '0'; W_MOTOR_ERROR <= '0'; wait for 10*PERIOD; W_TRIGGER <= '1'; wait for PERIOD; W_TRIGGER <= '0'; wait for 20*PERIOD; W_TRIGGER <= '1'; wait for PERIOD; W_TRIGGER <= '0'; wait for 5*PERIOD; W_MOTOR_READY <= '1'; wait for PERIOD; W_MOTOR_READY <= '0'; wait for 5*PERIOD; W_TRIGGER <= '1'; wait for 15*PERIOD; W_MOTOR_READY <= '1'; wait for PERIOD; W_MOTOR_READY <= '0'; wait for 15*PERIOD; W_MOTOR_READY <= '1'; wait for PERIOD; W_MOTOR_READY <= '0'; wait for 15*PERIOD; W_MOTOR_READY <= '1'; wait for PERIOD; W_MOTOR_READY <= '0'; wait for 15*PERIOD; W_MOTOR_ERROR <= '1'; wait for PERIOD; W_MOTOR_ERROR <= '0'; W_MOTOR_READY <= '1'; wait for 15*PERIOD; assert false report "End of stimuli reached" severity failure; end process STIMULI; SAMPLE : process(W_TRIGGER, W_EXPOSE, W_MOTOR_READY, W_MOTOR_ERROR, W_ERROR, W_TIMER_GO, W_MOTOR_GO) constant SPACE : string := " "; variable FILE_LINE : line; FILE OUT_FILE : text IS OUT "lab_10.trace"; begin write(FILE_LINE, now); write(FILE_LINE, SPACE); write(FILE_LINE, to_bit(W_TRIGGER)); write(FILE_LINE, to_bit(W_EXPOSE)); write(FILE_LINE, to_bit(W_MOTOR_READY)); write(FILE_LINE, to_bit(W_MOTOR_ERROR)); write(FILE_LINE, SPACE); write(FILE_LINE, to_bit(W_ERROR)); write(FILE_LINE, SPACE); write(FILE_LINE, to_bit(W_TIMER_GO)); write(FILE_LINE, SPACE); write(FILE_LINE, to_bit(W_MOTOR_GO)); writeline(OUT_FILE, FILE_LINE); end process SAMPLE; TIMER : process begin W_EXPOSE <= '0'; wait until W_TIMER_GO'EVENT and W_TIMER_GO = '1' and W_RESET = '0'; wait for PERIOD; W_EXPOSE <= '1'; wait for 10*PERIOD; W_EXPOSE <= '0'; end process TIMER; end TEST; configuration CFG_TB_MAIN_CTRL of TB_MAIN_CTRL is for TEST end for; end CFG_TB_MAIN_CTRL;