?? tut_tb.vhd
字號:
-- J:\PROJECTS\ISE\SECTION2\STATECAD_DEMO\TUT_TB.VHD
-- VHDL testbench created by
-- Xilinx's StateBench 1.01
-- Sat Oct 26 14:41:18 2002
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE IEEE.STD_LOGIC_TEXTIO.ALL;
USE STD.TEXTIO.ALL;
ENTITY testbench IS
END testbench;
ARCHITECTURE testbench_arch OF testbench IS
FILE RESULTS: TEXT IS OUT "results.txt";
COMPONENT TUT
PORT (ac : OUT std_logic_vector (3 DOWNTO 0);
CLK,cyc,di,RESET: IN std_logic);
END COMPONENT;
SIGNAL ac : std_logic_vector (3 DOWNTO 0) := std_logic_vector'("0000");
SIGNAL CLK,cyc,di,RESET: std_logic := '0';
BEGIN
UUT : TUT PORT MAP (
ac=>ac,
CLK=>CLK,
cyc=>cyc,
di=>di,
RESET=>RESET);
PROCESS
VARIABLE TX_OUT : LINE;
VARIABLE TX_ERROR : INTEGER := 0;
PROCEDURE CHECK_ac(
next_ac : std_logic_vector (3 DOWNTO 0)
) IS BEGIN
IF (ac /= next_ac) THEN
write(TX_OUT,string'(
"* Error, ac="));
write(TX_OUT, ac);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_ac);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (ac=next_ac) REPORT
"Error, ac has incorrect value"
SEVERITY ERROR;
END;
BEGIN
-- --------------------
CLK <= '0'; -- Initialize clock inactive
cyc <= '0';
di <= '0';
RESET <= '1';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 0 Time 15 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("0000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
di <= '1';
RESET <= '0';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 1 Time 115 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("0000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
cyc <= '1';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 2 Time 215 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("0000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
cyc <= '0';
di <= '0';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 3 Time 315 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("0000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 4 Time 415 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("0000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
cyc <= '1';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 5 Time 515 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("0000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 6 Time 615 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 7 Time 715 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
cyc <= '0';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 8 Time 815 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
di <= '1';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 9 Time 915 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
cyc <= '1';
di <= '0';
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 10 Time 1015 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1000"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 11 Time 1115 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1010"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
WAIT FOR 15 ns;
-- ----------------------
CLK <= '1'; -- Clock 12 Time 1215 ns
WAIT FOR 20 ns;
CHECK_ac(std_logic_vector'("1010"));
WAIT FOR 30 ns;
CLK <= '0'; -- inactive clock edge
WAIT FOR 35 ns;
IF (TX_ERROR = 0) THEN
write(TX_OUT,string'("No errors or warnings"));
writeline(results, TX_OUT);
ASSERT (FALSE) REPORT
"Simulation successful. No problems detected."
SEVERITY FAILURE;
ELSE
write(TX_OUT, TX_ERROR);
write(TX_OUT, string'(
" errors found in simulation"));
writeline(results, TX_OUT);
ASSERT (FALSE) REPORT
"Errors found during simulation"
SEVERITY FAILURE;
END IF;
END PROCESS;
END testbench_arch;
CONFIGURATION TUT_cfg OF testbench IS
FOR testbench_arch
END FOR;
END TUT_cfg;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -