1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- library ieee;
- use ieee.std_logic_1164.all;
- use ieee.numeric_std.all;
-
- library work;
- use work.reg32.all;
- use work.avalon_slave.all;
-
- package test_avalon_slave is
-
- procedure read( signal clk : in std_logic;
- variable address : in std_logic_vector;
- signal req : out work.avalon_slave.Request;
- signal rsp : in work.avalon_slave.Response;
- variable data : out std_logic_vector );
-
- procedure assert_readdata_eq( signal clk : in std_logic;
- variable address : in std_logic_vector;
- signal req : out work.avalon_slave.Request;
- signal rsp : in work.avalon_slave.Response;
- variable expected : in std_logic_vector;
- constant message : in string );
-
- procedure write( signal clk : in std_logic;
- variable address : in std_logic_vector;
- signal req : out work.avalon_slave.Request;
- variable data : in std_logic_vector );
-
- end package test_avalon_slave;
-
- package body test_avalon_slave is
-
- procedure read( signal clk : in std_logic;
- variable address : in std_logic_vector;
- signal req : out work.avalon_slave.Request;
- signal rsp : in work.avalon_slave.Response;
- variable data : out std_logic_vector ) is
- begin
-
- req.read <= '1';
- req.write <= '0';
- req.address <= address;
- wait until falling_edge( clk );
- wait until falling_edge( clk );
- req.read <= '0';
- data := rsp.readdata;
- wait until falling_edge( clk );
-
- end procedure read;
-
- procedure assert_readdata_eq( signal clk : in std_logic;
- variable address : in std_logic_vector;
- signal req : out work.avalon_slave.Request;
- signal rsp : in work.avalon_slave.Response;
- variable expected :in std_logic_vector;
- constant message : in string ) is
-
- variable readdata : std_logic_vector( expected'range );
- begin
-
- read( clk => clk,
- address => address,
- req => req,
- rsp => rsp,
- data => readdata );
-
- assert( readdata = expected )
- report message & LF &
- " expected: " & to_string( expected ) & LF &
- " actual: " & to_string( readdata ) & LF
- severity error;
- end procedure assert_readdata_eq;
-
- procedure write( signal clk : in std_logic;
- variable address : in std_logic_vector;
- signal req : out work.avalon_slave.Request;
- variable data : in std_logic_vector ) is
- begin
-
- req.read <= '0';
- req.write <= '1';
- req.address <= address;
- req.writedata <= data;
- wait until falling_edge( clk );
- req.write <= '0';
-
- end procedure write;
-
- end package body test_avalon_slave;
|