1 use work.dlx_types.all; 2 3 entity testbus_mem is 4 port (d : inout dlx_word; 5 write_enable : in bit; 6 reset : in bit; 7 clk : in bit); 8 end; 9 10 architecture behav of testbus_mem is 11 begin 12 process (clk) 13 variable m : dlx_word; 14 begin 15 if clk = '1' and clk'event then 16 if write_enable = '1' then 17 if reset = '1' then 18 m := (others => '1'); 19 else 20 m := d; 21 end if; 22 else 23 d <= m; 24 end if; 25 end if; 26 end process; 27 end behav; 28 29 entity testbus is 30 end testbus; 31 32 use work.dlx_types.all; 33 34 architecture behav of testbus is 35 signal d : dlx_word_bus bus; 36 signal clk : bit; 37 signal wen : bit; 38 signal reset : bit; 39 begin 40 comp : entity work.testbus_mem 41 port map (d => d, write_enable => wen, reset => reset, clk => clk); 42 43 process 44 begin 45 clk <= '0'; 46 reset <= '0'; 47 wait for 1 ns; 48 49 -- read 50 wen <= '0'; 51 clk <= '1'; 52 wait for 1 ns; 53 54 assert d = x"0000_0000" report "bad initial value" severity failure; 55 56 -- write 57 clk <= '0'; 58 wait for 1 ns; 59 60 wen <= '1'; 61 d <= x"1234_5678"; 62 clk <= '1'; 63 wait for 1 ns; 64 65 assert d = x"1234_5678" report "bad value 1" severity failure; 66 67 clk <= '0'; 68 wait for 1 ns; 69 70 wen <= '0'; 71 clk <= '1'; 72 wait for 1 ns; 73 74 assert d = x"1234_5678" report "bad value 2" severity failure; 75 76 wen <= '1'; 77 reset <= '1'; 78 d <= x"eeee_1111"; 79 clk <= '0'; 80 wait for 1 ns; 81 assert false report "time is 6 ns" severity note; 82 83 clk <= '1'; 84 wait for 1 ns; 85 86 wen <= '0'; 87 clk <= '0'; 88 wait for 1 ns; 89 90 clk <= '1'; 91 wait for 1 ns; 92 93 assert d = x"ffff_ffff" report "bad value 3" severity failure; 94 95 assert false report "end of test" severity note; 96 wait; 97 end process; 98 end behav;
This page was generated using GHDL 0.14 (20040829) [Sokcho edition], a program written by Tristan Gingold