aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/gna/issue2185/tb_avm_arbit.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/gna/issue2185/tb_avm_arbit.vhd')
-rw-r--r--testsuite/gna/issue2185/tb_avm_arbit.vhd220
1 files changed, 220 insertions, 0 deletions
diff --git a/testsuite/gna/issue2185/tb_avm_arbit.vhd b/testsuite/gna/issue2185/tb_avm_arbit.vhd
new file mode 100644
index 000000000..a4e386c08
--- /dev/null
+++ b/testsuite/gna/issue2185/tb_avm_arbit.vhd
@@ -0,0 +1,220 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity tb_avm_arbit is
+end entity tb_avm_arbit;
+
+architecture simulation of tb_avm_arbit is
+
+ constant C_DATA_SIZE : integer := 16;
+ constant C_ADDRESS_SIZE : integer := 4;
+
+ signal clk : std_logic;
+ signal rst : std_logic;
+ signal tb_start : std_logic;
+ signal tb_wait : std_logic;
+ signal stop_test : std_logic := '0';
+
+ signal m0_avm_wait : std_logic;
+ signal m0_avm_write : std_logic;
+ signal m0_avm_read : std_logic;
+ signal m0_avm_address : std_logic_vector(C_ADDRESS_SIZE-1 downto 0);
+ signal m0_avm_writedata : std_logic_vector(C_DATA_SIZE-1 downto 0);
+ signal m0_avm_byteenable : std_logic_vector(C_DATA_SIZE/8-1 downto 0);
+ signal m0_avm_burstcount : std_logic_vector(7 downto 0);
+ signal m0_avm_readdata : std_logic_vector(C_DATA_SIZE-1 downto 0);
+ signal m0_avm_readdatavalid : std_logic;
+ signal m0_avm_waitrequest : std_logic;
+
+ signal m1_avm_wait : std_logic;
+ signal m1_avm_write : std_logic;
+ signal m1_avm_read : std_logic;
+ signal m1_avm_address : std_logic_vector(C_ADDRESS_SIZE-1 downto 0);
+ signal m1_avm_writedata : std_logic_vector(C_DATA_SIZE-1 downto 0);
+ signal m1_avm_byteenable : std_logic_vector(C_DATA_SIZE/8-1 downto 0);
+ signal m1_avm_burstcount : std_logic_vector(7 downto 0);
+ signal m1_avm_readdata : std_logic_vector(C_DATA_SIZE-1 downto 0);
+ signal m1_avm_readdatavalid : std_logic;
+ signal m1_avm_waitrequest : std_logic;
+
+ signal s_avm_write : std_logic;
+ signal s_avm_read : std_logic;
+ signal s_avm_address : std_logic_vector(C_ADDRESS_SIZE-1 downto 0);
+ signal s_avm_writedata : std_logic_vector(C_DATA_SIZE-1 downto 0);
+ signal s_avm_byteenable : std_logic_vector(C_DATA_SIZE/8-1 downto 0);
+ signal s_avm_burstcount : std_logic_vector(7 downto 0);
+ signal s_avm_readdata : std_logic_vector(C_DATA_SIZE-1 downto 0);
+ signal s_avm_readdatavalid : std_logic;
+ signal s_avm_waitrequest : std_logic;
+
+ constant C_CLK_PERIOD : time := 10 ns;
+
+begin
+
+ ---------------------------------------------------------
+ -- Controller clock and reset
+ ---------------------------------------------------------
+
+ p_clk : process
+ begin
+ clk <= '1';
+ wait for C_CLK_PERIOD/2;
+ clk <= '0';
+ wait for C_CLK_PERIOD/2;
+ if stop_test = '1' then
+ wait;
+ end if;
+ end process p_clk;
+
+ p_rst : process
+ begin
+ rst <= '1';
+ wait for 10*C_CLK_PERIOD;
+ wait until clk = '1';
+ rst <= '0';
+ wait;
+ end process p_rst;
+
+
+ p_tb_start : process
+ begin
+ tb_start <= '0';
+ wait until rst = '0';
+ wait until clk = '1';
+ tb_start <= '1';
+ wait until clk = '1';
+ tb_start <= '0';
+ wait;
+ end process p_tb_start;
+
+ p_stop_test : process
+ begin
+ wait until tb_start = '1';
+ wait until m0_avm_wait = '0' and m1_avm_wait = '0';
+ wait until clk = '1';
+ stop_test <= '1';
+ wait;
+ end process p_stop_test;
+
+
+
+ ---------------------------------------------------------
+ -- Instantiate Master 0
+ ---------------------------------------------------------
+
+ i_avm_master_general0 : entity work.avm_master_general
+ generic map (
+ G_ADDRESS_SIZE => C_ADDRESS_SIZE,
+ G_DATA_SIZE => C_DATA_SIZE
+ )
+ port map (
+ clk_i => clk,
+ rst_i => rst,
+ start_i => tb_start,
+ wait_o => m0_avm_wait,
+ m_avm_write_o => m0_avm_write,
+ m_avm_read_o => m0_avm_read,
+ m_avm_address_o => m0_avm_address,
+ m_avm_writedata_o => m0_avm_writedata,
+ m_avm_byteenable_o => m0_avm_byteenable,
+ m_avm_burstcount_o => m0_avm_burstcount,
+ m_avm_readdata_i => m0_avm_readdata,
+ m_avm_readdatavalid_i => m0_avm_readdatavalid,
+ m_avm_waitrequest_i => m0_avm_waitrequest
+ ); -- i_avm_master_general0
+
+
+ ---------------------------------------------------------
+ -- Instantiate Master 1
+ ---------------------------------------------------------
+
+ i_avm_master_general1 : entity work.avm_master_general
+ generic map (
+ G_ADDRESS_SIZE => C_ADDRESS_SIZE,
+ G_DATA_SIZE => C_DATA_SIZE
+ )
+ port map (
+ clk_i => clk,
+ rst_i => rst,
+ start_i => tb_start,
+ wait_o => m1_avm_wait,
+ m_avm_write_o => m1_avm_write,
+ m_avm_read_o => m1_avm_read,
+ m_avm_address_o => m1_avm_address,
+ m_avm_writedata_o => m1_avm_writedata,
+ m_avm_byteenable_o => m1_avm_byteenable,
+ m_avm_burstcount_o => m1_avm_burstcount,
+ m_avm_readdata_i => m1_avm_readdata,
+ m_avm_readdatavalid_i => m1_avm_readdatavalid,
+ m_avm_waitrequest_i => m1_avm_waitrequest
+ ); -- i_avm_master_general1
+
+
+ ---------------------------------------------------------
+ -- DUT
+ ---------------------------------------------------------
+
+ i_avm_arbit : entity work.avm_arbit
+ generic map (
+ G_ADDRESS_SIZE => C_ADDRESS_SIZE,
+ G_DATA_SIZE => C_DATA_SIZE
+ )
+ port map (
+ clk_i => clk,
+ rst_i => rst,
+ s0_avm_write_i => m0_avm_write ,
+ s0_avm_read_i => m0_avm_read ,
+ s0_avm_address_i => m0_avm_address ,
+ s0_avm_writedata_i => m0_avm_writedata ,
+ s0_avm_byteenable_i => m0_avm_byteenable ,
+ s0_avm_burstcount_i => m0_avm_burstcount ,
+ s0_avm_readdata_o => m0_avm_readdata ,
+ s0_avm_readdatavalid_o => m0_avm_readdatavalid ,
+ s0_avm_waitrequest_o => m0_avm_waitrequest ,
+ s1_avm_write_i => m1_avm_write ,
+ s1_avm_read_i => m1_avm_read ,
+ s1_avm_address_i => m1_avm_address ,
+ s1_avm_writedata_i => m1_avm_writedata ,
+ s1_avm_byteenable_i => m1_avm_byteenable ,
+ s1_avm_burstcount_i => m1_avm_burstcount ,
+ s1_avm_readdata_o => m1_avm_readdata ,
+ s1_avm_readdatavalid_o => m1_avm_readdatavalid ,
+ s1_avm_waitrequest_o => m1_avm_waitrequest ,
+ m_avm_write_o => s_avm_write ,
+ m_avm_read_o => s_avm_read ,
+ m_avm_address_o => s_avm_address ,
+ m_avm_writedata_o => s_avm_writedata ,
+ m_avm_byteenable_o => s_avm_byteenable ,
+ m_avm_burstcount_o => s_avm_burstcount ,
+ m_avm_readdata_i => s_avm_readdata ,
+ m_avm_readdatavalid_i => s_avm_readdatavalid ,
+ m_avm_waitrequest_i => s_avm_waitrequest
+ ); -- i_avm_arbit
+
+
+ ---------------------------------------------------------
+ -- Instantiate Slave
+ ---------------------------------------------------------
+
+ i_avm_memory : entity work.avm_memory
+ generic map (
+ G_ADDRESS_SIZE => C_ADDRESS_SIZE,
+ G_DATA_SIZE => C_DATA_SIZE
+ )
+ port map (
+ clk_i => clk,
+ rst_i => rst,
+ avm_write_i => s_avm_write,
+ avm_read_i => s_avm_read,
+ avm_address_i => s_avm_address,
+ avm_writedata_i => s_avm_writedata,
+ avm_byteenable_i => s_avm_byteenable,
+ avm_burstcount_i => s_avm_burstcount,
+ avm_readdata_o => s_avm_readdata,
+ avm_readdatavalid_o => s_avm_readdatavalid,
+ avm_waitrequest_o => s_avm_waitrequest
+ ); -- i_avm_memory
+
+end architecture simulation;
+