-- C:\JFB\XILINX\MWD\WORK\CHANNELCTRL\CHNCTRL -- VHDL Annotation Test Bench created by -- HDL Bencher 6.1i -- Mon Jun 12 17:29:40 2006 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_TEXTIO.ALL; USE STD.TEXTIO.ALL; ENTITY fsm1_tbw IS END fsm1_tbw; ARCHITECTURE testbench_arch OF fsm1_tbw IS -- If you get a compiler error on the following line, -- from the menu do Options->Configuration select VHDL 87 FILE RESULTS: TEXT OPEN WRITE_MODE IS "c:\jfb\xilinx\mwd\work\channelctrl\chnctrl\fsm1_tbw.ano"; COMPONENT fsm1 PORT ( reset : In std_logic; clk : In std_logic; acqen : In std_logic; trigmode : In std_logic; trigger : In std_logic; decim_ratio : In std_logic_vector (1 DOWNTO 0); ptrig_data : In std_logic_vector (1 DOWNTO 0); rstdataready : In std_logic; rst1 : Out std_logic; wen1 : Out std_logic; ren1 : Out std_logic; rst2 : Out std_logic; wen2 : Out std_logic; ren2 : Out std_logic; rst3 : Out std_logic; wen3 : Out std_logic; trigger_en : Out std_logic; decim_flag : Out std_logic; dataready : Out std_logic ); END COMPONENT; SIGNAL reset : std_logic; SIGNAL clk : std_logic; SIGNAL acqen : std_logic; SIGNAL trigmode : std_logic; SIGNAL trigger : std_logic; SIGNAL decim_ratio : std_logic_vector (1 DOWNTO 0); SIGNAL ptrig_data : std_logic_vector (1 DOWNTO 0); SIGNAL rstdataready : std_logic; SIGNAL rst1 : std_logic; SIGNAL wen1 : std_logic; SIGNAL ren1 : std_logic; SIGNAL rst2 : std_logic; SIGNAL wen2 : std_logic; SIGNAL ren2 : std_logic; SIGNAL rst3 : std_logic; SIGNAL wen3 : std_logic; SIGNAL trigger_en : std_logic; SIGNAL decim_flag : std_logic; SIGNAL dataready : std_logic; BEGIN UUT : fsm1 PORT MAP ( reset => reset, clk => clk, acqen => acqen, trigmode => trigmode, trigger => trigger, decim_ratio => decim_ratio, ptrig_data => ptrig_data, rstdataready => rstdataready, rst1 => rst1, wen1 => wen1, ren1 => ren1, rst2 => rst2, wen2 => wen2, ren2 => ren2, rst3 => rst3, wen3 => wen3, trigger_en => trigger_en, decim_flag => decim_flag, dataready => dataready ); PROCESS -- clock process for clk, VARIABLE TX_TIME : INTEGER :=0; PROCEDURE ANNOTATE_rst1( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",rst1,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, rst1); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_wen1( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",wen1,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, wen1); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_ren1( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",ren1,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ren1); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_rst2( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",rst2,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, rst2); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_wen2( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",wen2,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, wen2); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_ren2( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",ren2,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ren2); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_rst3( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",rst3,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, rst3); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_wen3( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",wen3,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, wen3); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_trigger_en( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",trigger_en,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, trigger_en); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_decim_flag( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",decim_flag,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, decim_flag); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; PROCEDURE ANNOTATE_dataready( TX_TIME : INTEGER ) IS VARIABLE TX_STR : String(1 to 4096); VARIABLE TX_LOC : LINE; BEGIN STD.TEXTIO.write(TX_LOC,string'("Annotate[")); STD.TEXTIO.write(TX_LOC, TX_TIME); STD.TEXTIO.write(TX_LOC,string'(",dataready,")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, dataready); STD.TEXTIO.write(TX_LOC, string'("]")); TX_STR(TX_LOC.all'range) := TX_LOC.all; STD.TEXTIO.writeline(results, TX_LOC); STD.TEXTIO.Deallocate(TX_LOC); END; BEGIN CLOCK_LOOP : LOOP clk <= transport '0'; WAIT FOR 6 ns; TX_TIME := TX_TIME + 6; clk <= transport '1'; WAIT FOR 6 ns; TX_TIME := TX_TIME + 6; ANNOTATE_rst1(TX_TIME); ANNOTATE_wen1(TX_TIME); ANNOTATE_ren1(TX_TIME); ANNOTATE_rst2(TX_TIME); ANNOTATE_wen2(TX_TIME); ANNOTATE_ren2(TX_TIME); ANNOTATE_rst3(TX_TIME); ANNOTATE_wen3(TX_TIME); ANNOTATE_trigger_en(TX_TIME); ANNOTATE_decim_flag(TX_TIME); ANNOTATE_dataready(TX_TIME); WAIT FOR 44 ns; TX_TIME := TX_TIME + 44; clk <= transport '0'; WAIT FOR 44 ns; TX_TIME := TX_TIME + 44; END LOOP CLOCK_LOOP; END PROCESS; PROCESS -- Process for clk VARIABLE TX_OUT : LINE; BEGIN -- -------------------- reset <= transport '0'; acqen <= transport '1'; trigmode <= transport '0'; trigger <= transport '0'; decim_ratio <= transport std_logic_vector'("01"); --1 ptrig_data <= transport std_logic_vector'("00"); --0 rstdataready <= transport '1'; -- -------------------- WAIT FOR 600 ns; -- Time=600 ns reset <= transport '1'; -- -------------------- WAIT FOR 100 ns; -- Time=700 ns rstdataready <= transport '1'; -- -------------------- WAIT FOR 300 ns; -- Time=1000 ns acqen <= transport '0'; -- -------------------- WAIT FOR 5100 ns; -- Time=6100 ns trigger <= transport '1'; -- -------------------- WAIT FOR 200 ns; -- Time=6300 ns trigger <= transport '0'; -- -------------------- WAIT FOR 1900 ns; -- Time=8200 ns trigger <= transport '0'; -- -------------------- WAIT FOR 5600 ns; -- Time=13800 ns trigger <= transport '0'; -- -------------------- WAIT FOR 1900 ns; -- Time=15700 ns rstdataready <= transport '0'; -- -------------------- WAIT FOR 100 ns; -- Time=15800 ns rstdataready <= transport '1'; -- -------------------- WAIT FOR 500 ns; -- Time=16300 ns trigger <= transport '1'; -- -------------------- WAIT FOR 100 ns; -- Time=16400 ns trigger <= transport '0'; -- -------------------- WAIT FOR 3600 ns; -- Time=20000 ns rstdataready <= transport '1'; -- -------------------- WAIT FOR 2500 ns; -- Time=22500 ns acqen <= transport '1'; -- -------------------- WAIT FOR 100 ns; -- Time=22600 ns reset <= transport '0'; -- -------------------- WAIT FOR 500 ns; -- Time=23100 ns reset <= transport '1'; -- -------------------- WAIT FOR 100 ns; -- Time=23200 ns trigmode <= transport '1'; -- -------------------- WAIT FOR 300 ns; -- Time=23500 ns acqen <= transport '0'; -- -------------------- WAIT FOR 4800 ns; -- Time=28300 ns rstdataready <= transport '0'; -- -------------------- WAIT FOR 300 ns; -- Time=28600 ns rstdataready <= transport '1'; -- -------------------- WAIT FOR 7056 ns; -- Time=35656 ns -- -------------------- STD.TEXTIO.write(TX_OUT, string'("Total[]")); STD.TEXTIO.writeline(results, TX_OUT); ASSERT (FALSE) REPORT "Success! Simulation for annotation completed" SEVERITY FAILURE; END PROCESS; END testbench_arch; CONFIGURATION fsm1_cfg OF fsm1_tbw IS FOR testbench_arch END FOR; END fsm1_cfg;