Files
lt16lab/soc/testbench/wb_intercon_simple_tb.vhd
Johannes Müller b47cfb5978 lab master WS 20/21
2020-10-27 09:40:16 +01:00

120 lines
2.7 KiB
VHDL

-- See the file "LICENSE" for the full license governing this code. --
--------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.std_logic_textio.all;
library std;
use std.standard.all;
use std.textio.all;
library work;
use work.wishbone.all;
use work.config.all;
use work.wb_tp.all;
use work.txt_util.all;
use work.lt16soc_peripherals.all;
use work.lt16soc_memories.all;
ENTITY wb_intercon_simple_tb IS
END wb_intercon_simple_tb;
ARCHITECTURE behavior OF wb_intercon_simple_tb IS
-- component Declaration for the Unit Under Test (UUT)
component wb_intercon
generic(
slv_mask_vector : std_logic_vector(0 to NWBSLV-1) := b"0000_0000_0000_0000";
mst_mask_vector : std_logic_vector(0 to NWBMST-1) := b"0000"
);
port(
clk : in std_logic;
rst : in std_logic;
msti : out wb_mst_in_vector;
msto : in wb_mst_out_vector;
slvi : out wb_slv_in_vector;
slvo : in wb_slv_out_vector
);
end component;
--Inputs
signal clk : std_logic := '0';
signal rst : std_logic := '0';
signal msto : wb_mst_out_vector;
signal slvo : wb_slv_out_vector;
--Outputs
signal msti : wb_mst_in_vector;
signal slvi : wb_slv_in_vector;
signal led : std_logic_vector(7 downto 0);
signal data : std_logic_vector(31 downto 0);
---------------------
-- constant
---------------------
constant CLK_PERIOD : time := 10 ns;
constant slv_mask_vector : std_logic_vector(0 to NWBSLV-1) := b"1110_0000_0000_0001";
constant mst_mask_vector : std_logic_vector(0 to NWBMST-1) := b"1000";
begin
-- Instantiate the Unit Under Test (UUT)
uut: wb_intercon
generic map(
slv_mask_vector => slv_mask_vector,
mst_mask_vector => mst_mask_vector
)
port map(
clk => clk,
rst => rst,
msti => msti,
msto => msto,
slvi => slvi,
slvo => slvo
);
dmem : wb_dmem
generic map(
memaddr=>CFG_BADR_DMEM,
addrmask=>CFG_MADR_DMEM)
port map(clk,rst,slvi(CFG_DMEM),slvo(CFG_DMEM));
leddev : wb_led
generic map(
CFG_BADR_LED,CFG_MADR_LED
)
port map(
clk,rst,led,slvi(CFG_LED),slvo(CFG_LED)
);
clk_gen : process
begin
clk <= '0';
wait for CLK_PERIOD/2;
clk <= '1';
wait for CLK_PERIOD/2;
end process;
stimuli: process
begin
rst <= '1';
wait for CLK_PERIOD;
rst <= '0';
data <= x"EDAB3F5C";
generate_sync_wb_burst_write(msto(0),slvo(CFG_DMEM),clk,data,4);
data <= not data;
-- generate_sync_wb_single_write(msto(0),slvo(CFG_DMEM),clk,data);
wait for 2*CLK_PERIOD;
generate_sync_wb_burst_read(msto(0),slvo(CFG_DMEM),clk,data,4);
wait;
end process stimuli;
END;