-------------------------------------------------------------------------------- -- Copyright (c) 1995-2003 Xilinx, Inc. -- All Right Reserved. -------------------------------------------------------------------------------- -- ____ ____ -- / /\/ / -- /___/ \ / Vendor: Xilinx -- \ \ \/ Version : 8.2i -- \ \ Application : ISE -- / / Filename : top_tb0.ant -- /___/ /\ Timestamp : Tue Feb 27 11:27:47 2007 -- \ \ / \ -- \___\/\___\ -- --Command: --Design Name: top_tb0 --Device: Xilinx -- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; library UNISIM; use UNISIM.VComponents.all; USE IEEE.STD_LOGIC_TEXTIO.ALL; USE STD.TEXTIO.ALL; ENTITY top_tb0 IS END top_tb0; ARCHITECTURE testbench_arch OF top_tb0 IS FILE RESULTS: TEXT OPEN WRITE_MODE IS "\\engfile3\ddoering\Projects\SAO\VHDL\SAOTxBoard\sao_tx\top_tb0.ano"; COMPONENT top PORT ( POR : In std_logic; CLK_40MHZ : In std_logic; CLK_40MHZ_OK : In std_logic; CTRL : In std_logic; CTRL_OK : In std_logic; LOCKED : In std_logic; DATA : Out std_logic_vector (15 DownTo 0); HFn_B : In std_logic_vector (3 DownTo 0); FFn_B : In std_logic_vector (3 DownTo 0); RST_TIMERn : Out std_logic; DAC_LOADn : Out std_logic; DAC_DIN : Out std_logic; DAC_SCLK : Out std_logic; DAC_CSn_B : Out std_logic_vector (3 DownTo 0); RST4n_B : Out std_logic_vector (3 DownTo 0); RCLK4_B : Out std_logic_vector (3 DownTo 0); D_OEn_B : Out std_logic_vector (3 DownTo 0); ACQENnB0 : Out std_logic_vector (3 DownTo 0); ACQENnB1 : Out std_logic_vector (3 DownTo 0); ACQENnB2 : Out std_logic_vector (3 DownTo 0); ACQENnB3 : Out std_logic_vector (3 DownTo 0); ACLK : Out std_logic; RESETn : Out std_logic; SYSCLK : Out std_logic; ENABLEn_B : Out std_logic_vector (3 DownTo 0); TCLK : Out std_logic; RCLK3 : Out std_logic; ADCRST : Out std_logic; TMODE : Out std_logic; DR0 : Out std_logic; DR1 : Out std_logic; PT0 : Out std_logic; PT1 : Out std_logic; uD_OEn_B : Out std_logic_vector (3 DownTo 0); uDw : Out std_logic_vector (7 DownTo 0); uDr : In std_logic_vector (7 DownTo 0); SYNCn : Out std_logic ); END COMPONENT; SIGNAL POR : std_logic := '1'; SIGNAL CLK_40MHZ : std_logic := '0'; SIGNAL CLK_40MHZ_OK : std_logic := '0'; SIGNAL CTRL : std_logic := '0'; SIGNAL CTRL_OK : std_logic := '0'; SIGNAL LOCKED : std_logic := '0'; SIGNAL DATA : std_logic_vector (15 DownTo 0) := "0000000000000000"; SIGNAL HFn_B : std_logic_vector (3 DownTo 0) := "1111"; SIGNAL FFn_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL RST_TIMERn : std_logic := '0'; SIGNAL DAC_LOADn : std_logic := '0'; SIGNAL DAC_DIN : std_logic := '0'; SIGNAL DAC_SCLK : std_logic := '0'; SIGNAL DAC_CSn_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL RST4n_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL RCLK4_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL D_OEn_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL ACQENnB0 : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL ACQENnB1 : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL ACQENnB2 : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL ACQENnB3 : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL ACLK : std_logic := '0'; SIGNAL RESETn : std_logic := '0'; SIGNAL SYSCLK : std_logic := '0'; SIGNAL ENABLEn_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL TCLK : std_logic := '0'; SIGNAL RCLK3 : std_logic := '0'; SIGNAL ADCRST : std_logic := '0'; SIGNAL TMODE : std_logic := '0'; SIGNAL DR0 : std_logic := '0'; SIGNAL DR1 : std_logic := '0'; SIGNAL PT0 : std_logic := '0'; SIGNAL PT1 : std_logic := '0'; SIGNAL uD_OEn_B : std_logic_vector (3 DownTo 0) := "0000"; SIGNAL uDw : std_logic_vector (7 DownTo 0) := "00000000"; SIGNAL uDr : std_logic_vector (7 DownTo 0) := "00000000"; SIGNAL SYNCn : std_logic := '0'; SHARED VARIABLE TX_ERROR : INTEGER := 0; SHARED VARIABLE TX_OUT : LINE; constant PERIOD : time := 20 ns; constant DUTY_CYCLE : real := 0.5; constant OFFSET : time := 100 ns; BEGIN UUT : top PORT MAP ( POR => POR, CLK_40MHZ => CLK_40MHZ, CLK_40MHZ_OK => CLK_40MHZ_OK, CTRL => CTRL, CTRL_OK => CTRL_OK, LOCKED => LOCKED, DATA => DATA, HFn_B => HFn_B, FFn_B => FFn_B, RST_TIMERn => RST_TIMERn, DAC_LOADn => DAC_LOADn, DAC_DIN => DAC_DIN, DAC_SCLK => DAC_SCLK, DAC_CSn_B => DAC_CSn_B, RST4n_B => RST4n_B, RCLK4_B => RCLK4_B, D_OEn_B => D_OEn_B, ACQENnB0 => ACQENnB0, ACQENnB1 => ACQENnB1, ACQENnB2 => ACQENnB2, ACQENnB3 => ACQENnB3, ACLK => ACLK, RESETn => RESETn, SYSCLK => SYSCLK, ENABLEn_B => ENABLEn_B, TCLK => TCLK, RCLK3 => RCLK3, ADCRST => ADCRST, TMODE => TMODE, DR0 => DR0, DR1 => DR1, PT0 => PT0, PT1 => PT1, uD_OEn_B => uD_OEn_B, uDw => uDw, uDr => uDr, SYNCn => SYNCn ); PROCESS -- clock process for CLK_40MHZ BEGIN WAIT for OFFSET; CLOCK_LOOP : LOOP CLK_40MHZ <= '0'; WAIT FOR (PERIOD - (PERIOD * DUTY_CYCLE)); CLK_40MHZ <= '1'; WAIT FOR (PERIOD * DUTY_CYCLE); END LOOP CLOCK_LOOP; END PROCESS; PROCESS -- Annotation process for CLK_40MHZ VARIABLE TX_TIME : INTEGER := 0; PROCEDURE ANNOTATE_DATA( 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'(", DATA, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DATA); 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_RST_TIMERn( 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'(", RST_TIMERn, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, RST_TIMERn); 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_DAC_LOADn( 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'(", DAC_LOADn, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DAC_LOADn); 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_DAC_DIN( 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'(", DAC_DIN, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DAC_DIN); 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_DAC_SCLK( 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'(", DAC_SCLK, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DAC_SCLK); 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_DAC_CSn_B( 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'(", DAC_CSn_B, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DAC_CSn_B); 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_RST4n_B( 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'(", RST4n_B, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, RST4n_B); 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_RCLK4_B( 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'(", RCLK4_B, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, RCLK4_B); 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_D_OEn_B( 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'(", D_OEn_B, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, D_OEn_B); 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_ACQENnB0( 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'(", ACQENnB0, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ACQENnB0); 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_ACQENnB1( 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'(", ACQENnB1, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ACQENnB1); 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_ACQENnB2( 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'(", ACQENnB2, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ACQENnB2); 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_ACQENnB3( 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'(", ACQENnB3, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ACQENnB3); 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_ACLK( 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'(", ACLK, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ACLK); 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_RESETn( 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'(", RESETn, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, RESETn); 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_SYSCLK( 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'(", SYSCLK, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, SYSCLK); 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_ENABLEn_B( 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'(", ENABLEn_B, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ENABLEn_B); 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_TCLK( 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'(", TCLK, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, TCLK); 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_RCLK3( 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'(", RCLK3, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, RCLK3); 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_ADCRST( 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'(", ADCRST, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, ADCRST); 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_TMODE( 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'(", TMODE, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, TMODE); 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_DR0( 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'(", DR0, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DR0); 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_DR1( 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'(", DR1, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, DR1); 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_PT0( 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'(", PT0, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, PT0); 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_PT1( 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'(", PT1, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, PT1); 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_uD_OEn_B( 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'(", uD_OEn_B, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, uD_OEn_B); 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_uDw( 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'(", uDw, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, uDw); 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_SYNCn( 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'(", SYNCn, ")); IEEE.STD_LOGIC_TEXTIO.write(TX_LOC, SYNCn); 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 WAIT for 1 fs; ANNOTATE_DATA(0); ANNOTATE_RST_TIMERn(0); ANNOTATE_DAC_LOADn(0); ANNOTATE_DAC_DIN(0); ANNOTATE_DAC_SCLK(0); ANNOTATE_DAC_CSn_B(0); ANNOTATE_RST4n_B(0); ANNOTATE_RCLK4_B(0); ANNOTATE_D_OEn_B(0); ANNOTATE_ACQENnB0(0); ANNOTATE_ACQENnB1(0); ANNOTATE_ACQENnB2(0); ANNOTATE_ACQENnB3(0); ANNOTATE_ACLK(0); ANNOTATE_RESETn(0); ANNOTATE_SYSCLK(0); ANNOTATE_ENABLEn_B(0); ANNOTATE_TCLK(0); ANNOTATE_RCLK3(0); ANNOTATE_ADCRST(0); ANNOTATE_TMODE(0); ANNOTATE_DR0(0); ANNOTATE_DR1(0); ANNOTATE_PT0(0); ANNOTATE_PT1(0); ANNOTATE_uD_OEn_B(0); ANNOTATE_uDw(0); ANNOTATE_SYNCn(0); WAIT for OFFSET; TX_TIME := TX_TIME + 100; ANNO_LOOP : LOOP --Rising Edge WAIT for 15 ns; TX_TIME := TX_TIME + 15; ANNOTATE_DATA(TX_TIME); ANNOTATE_RST_TIMERn(TX_TIME); ANNOTATE_DAC_LOADn(TX_TIME); ANNOTATE_DAC_DIN(TX_TIME); ANNOTATE_DAC_SCLK(TX_TIME); ANNOTATE_DAC_CSn_B(TX_TIME); ANNOTATE_RST4n_B(TX_TIME); ANNOTATE_RCLK4_B(TX_TIME); ANNOTATE_D_OEn_B(TX_TIME); ANNOTATE_ACQENnB0(TX_TIME); ANNOTATE_ACQENnB1(TX_TIME); ANNOTATE_ACQENnB2(TX_TIME); ANNOTATE_ACQENnB3(TX_TIME); ANNOTATE_ACLK(TX_TIME); ANNOTATE_RESETn(TX_TIME); ANNOTATE_SYSCLK(TX_TIME); ANNOTATE_ENABLEn_B(TX_TIME); ANNOTATE_TCLK(TX_TIME); ANNOTATE_RCLK3(TX_TIME); ANNOTATE_ADCRST(TX_TIME); ANNOTATE_TMODE(TX_TIME); ANNOTATE_DR0(TX_TIME); ANNOTATE_DR1(TX_TIME); ANNOTATE_PT0(TX_TIME); ANNOTATE_PT1(TX_TIME); ANNOTATE_uD_OEn_B(TX_TIME); ANNOTATE_uDw(TX_TIME); ANNOTATE_SYNCn(TX_TIME); WAIT for 5 ns; TX_TIME := TX_TIME + 5; END LOOP ANNO_LOOP; END PROCESS; PROCESS BEGIN -- ------------- Current Time: 265ns WAIT FOR 265 ns; CTRL_OK <= '1'; -- ------------------------------------- -- ------------- Current Time: 365ns WAIT FOR 100 ns; CLK_40MHZ_OK <= '1'; -- ------------------------------------- -- ------------- Current Time: 445ns WAIT FOR 80 ns; POR <= '0'; -- ------------------------------------- -- ------------- Current Time: 465ns WAIT FOR 20 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 485ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 505ns WAIT FOR 20 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 525ns WAIT FOR 20 ns; LOCKED <= '1'; -- ------------------------------------- -- ------------- Current Time: 545ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 865ns WAIT FOR 320 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 885ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 925ns WAIT FOR 40 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 965ns WAIT FOR 40 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 1085ns WAIT FOR 120 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 1105ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 1365ns WAIT FOR 260 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 1405ns WAIT FOR 40 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 1425ns WAIT FOR 20 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 1445ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 1525ns WAIT FOR 80 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 1605ns WAIT FOR 80 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 1625ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 1665ns WAIT FOR 40 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 1685ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 3145ns WAIT FOR 1460 ns; HFn_B <= "0111"; -- ------------------------------------- -- ------------- Current Time: 3205ns WAIT FOR 60 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 3225ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 3305ns WAIT FOR 80 ns; HFn_B <= "1111"; -- ------------------------------------- -- ------------- Current Time: 4125ns WAIT FOR 820 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 4165ns WAIT FOR 40 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 4185ns WAIT FOR 20 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 4205ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 4265ns WAIT FOR 60 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 4285ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 4365ns WAIT FOR 80 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 4385ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 5425ns WAIT FOR 1040 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 5465ns WAIT FOR 40 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 5485ns WAIT FOR 20 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 5505ns WAIT FOR 20 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 5665ns WAIT FOR 160 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 5725ns WAIT FOR 60 ns; CTRL <= '0'; -- ------------------------------------- -- ------------- Current Time: 5765ns WAIT FOR 40 ns; CTRL <= '1'; -- ------------------------------------- -- ------------- Current Time: 5805ns WAIT FOR 40 ns; CTRL <= '0'; -- ------------------------------------- WAIT FOR 114215 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;