1entity tb_dpram2r is 2end tb_dpram2r; 3 4library ieee; 5use ieee.std_logic_1164.all; 6 7architecture behav of tb_dpram2r is 8 signal raddr : natural range 0 to 3; 9 signal rnib : natural range 0 to 1; 10 signal rdat : std_logic_vector (3 downto 0); 11 signal waddr : natural range 0 to 3; 12 signal wdat : std_logic_vector(7 downto 0); 13 signal clk : std_logic; 14begin 15 dut: entity work.dpram2r 16 port map (raddr => raddr, rnib => rnib, rdat => rdat, 17 waddr => waddr, wdat => wdat, 18 clk => clk); 19 20 process 21 procedure pulse is 22 begin 23 clk <= '0'; 24 wait for 1 ns; 25 clk <= '1'; 26 wait for 1 ns; 27 end pulse; 28 begin 29 raddr <= 0; 30 rnib <= 0; 31 waddr <= 1; 32 wdat <= x"e1"; 33 pulse; 34 35 raddr <= 1; 36 rnib <= 0; 37 waddr <= 0; 38 wdat <= x"f0"; 39 pulse; 40 assert rdat = x"1" severity failure; 41 42 raddr <= 1; 43 rnib <= 1; 44 waddr <= 2; 45 wdat <= x"d2"; 46 pulse; 47 assert rdat = x"e" severity failure; 48 49 raddr <= 2; 50 rnib <= 1; 51 waddr <= 3; 52 wdat <= x"c3"; 53 pulse; 54 assert rdat = x"d" severity failure; 55 56 raddr <= 3; 57 rnib <= 0; 58 waddr <= 0; 59 wdat <= x"f0"; 60 pulse; 61 assert rdat = x"3" severity failure; 62 63 raddr <= 3; 64 rnib <= 1; 65 waddr <= 0; 66 wdat <= x"f0"; 67 pulse; 68 assert rdat = x"c" severity failure; 69 70 wait; 71 end process; 72end behav; 73