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