URL
https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk
Subversion Repositories pcie_ds_dma
Compare Revisions
- This comparison shows the changes necessary to convert path
/pcie_ds_dma/trunk/projects
- from Rev 17 to Rev 18
- ↔ Reverse comparison
Rev 17 → Rev 18
/ambpex5_sx50t_wishbone/src/testbench/test_pkg.vhd
32,49 → 32,54
|
--! Initialising |
procedure test_init( |
|
fname: in string --! file name for report |
); |
|
--! Finished |
procedure test_close; |
|
|
--! Read registers |
procedure test_read_reg ( |
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
|
|
--! Start DMA with incorrect descriptor |
procedure test_dsc_incorrect ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
|
--! Start DMA for one block 4 kB |
procedure test_read_4kb ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
|
|
--! Read block_test_check 8 kB |
procedure test_adm_read_8kb ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
|
|
--procedure test_block_main ( |
|
|
-- signal cmd: out bh_cmd; --! command |
-- signal ret: in bh_ret --! answer |
-- ); |
-- |
|
--procedure test_adm_read_16kb ( |
|
|
-- signal cmd: out bh_cmd; --! command |
-- signal ret: in bh_ret --! answer |
-- ); |
-- |
|
procedure test_adm_write_16kb ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
--------------------------------------------------------------------------------------------------- |
-- |
81,22 → 86,22
-- |
-- |
procedure test_num_1( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
procedure test_num_2( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
-- ==> TEST_CHECK.WB_CFG_SLAVE |
procedure test_wb_1( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
-- ==> TEST_GEN.WB_CFG_SLAVE |
procedure test_wb_2( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
); |
end package test_pkg; |
--------------------------------------------------------------------------------------------------- |
151,11 → 156,70
end test_close; |
|
|
--! Read registers |
procedure test_read_reg ( |
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) |
is |
|
variable adr : std_logic_vector( 31 downto 0 ); |
variable data1 : std_logic_vector( 31 downto 0 ); |
variable data2 : std_logic_vector( 31 downto 0 ); |
variable str : line; |
begin |
|
write( str, string'("TEST_READ_REG" )); |
writeline( log, str ); |
|
block_write( cmd, ret, 0, 8, x"0000000F" ); -- BRD_MODE |
wait for 100 ns; |
|
|
--block_read( cmd, ret, 4, 23, x"0000A400" ); -- LOCAL_ADR |
wb_block_gen_read( cmd, ret, REG_BLOCK_ID, data1 ); -- read block id |
wb_block_check_read( cmd, ret, REG_BLOCK_ID, data2 ); -- read block id |
|
write( str, string'("BLOCK 0 ID: " )); hwrite( str, data1( 15 downto 0 ) ); |
writeline( log, str ); |
|
write( str, string'("BLOCK 1 ID: " )); hwrite( str, data2( 15 downto 0 ) ); |
writeline( log, str ); |
|
wb_read( cmd, ret, 16#1000#, data1 ); |
|
wb_read( cmd, ret, 16#3000#, data1 ); |
|
write( str, string'("0x1000: " )); hwrite( str, data1( 15 downto 0 ) ); |
writeline( log, str ); |
|
write( str, string'("0x3000: " )); hwrite( str, data2( 15 downto 0 ) ); |
writeline( log, str ); |
|
block_write( cmd, ret, 0, 8, x"00000000" ); -- BRD_MODE |
wait for 100 ns; |
block_write( cmd, ret, 0, 8, x"0000000F" ); -- BRD_MODE |
wait for 100 ns; |
|
wb_block_gen_read( cmd, ret, REG_BLOCK_ID, data1 ); -- read block id |
wb_block_check_read( cmd, ret, REG_BLOCK_ID, data2 ); -- read block id |
|
write( str, string'("BLOCK 0 ID: " )); hwrite( str, data1( 15 downto 0 ) ); |
writeline( log, str ); |
|
write( str, string'("BLOCK 1 ID: " )); hwrite( str, data2( 15 downto 0 ) ); |
writeline( log, str ); |
|
end test_read_reg; |
|
|
|
|
|
--! Start DMA with incorrect descriptor |
procedure test_dsc_incorrect ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) |
is |
|
209,8 → 273,8
|
--! Start DMA for one block 4 kB |
procedure test_read_4kb ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) |
is |
|
361,8 → 425,8
|
--! Read block_test_check 8 kB |
procedure test_adm_read_8kb ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) |
is |
|
533,8 → 597,8
-- |
|
--procedure test_block_main ( |
|
|
-- signal cmd: out bh_cmd; --! command |
-- signal ret: in bh_ret --! answer |
-- ) |
--is |
-- |
618,8 → 682,8
-- |
|
--procedure test_adm_read_16kb ( |
|
|
-- signal cmd: out bh_cmd; --! command |
-- signal ret: in bh_ret --! answer |
-- ) |
--is |
-- |
869,8 → 933,8
-- |
|
procedure test_adm_write_16kb ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) |
is |
|
1298,8 → 1362,8
-- My procedure for test Updated Design (test_read_4kb like refenernce) |
-- |
procedure test_num_1 ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) is |
|
variable adr : std_logic_vector( 31 downto 0 ); |
1435,8 → 1499,8
-- |
-- |
procedure test_num_2 ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) is |
|
variable adr : std_logic_vector( 31 downto 0 ); |
1586,8 → 1650,8
-- ==> TEST_CHECK.WB_CFG_SLAVE |
-- |
procedure test_wb_1 ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) is |
|
variable adr : std_logic_vector( 31 downto 0 ); |
1749,8 → 1813,8
-- ==> TEST_GEN.WB_CFG_SLAVE |
-- |
procedure test_wb_2 ( |
|
|
signal cmd: out bh_cmd; --! command |
signal ret: in bh_ret --! answer |
) is |
|
variable adr : std_logic_vector( 31 downto 0 ); |
/ambpex5_sx50t_wishbone/src/testbench/wb_block_pkg.vhd
1,168 → 1,205
--------------------------------------------------------------------------------------------------- |
-- |
-- Title : wb_block_pkg.vhd |
-- Author : Dmitry Smekhov |
-- Company : Instrumental Systems |
-- E-mail : dsmv@insys.ru |
-- |
-- Version : 1.0 |
--------------------------------------------------------------------------------------------------- |
-- |
|
-- |
--------------------------------------------------------------------------------------------------- |
-- |
-- Version 1.0 01.11.2011 |
|
-- |
--------------------------------------------------------------------------------------------------- |
|
library ieee; |
use ieee.std_logic_1164.all; |
use ieee.std_logic_arith.all; |
use ieee.std_logic_textio.all; |
use ieee.std_logic_unsigned.all; |
|
library work; |
use work.cmd_sim_pkg.all; |
|
use std.textio.all; |
use std.textio; |
|
--------------------------------------------------------------------------------------------------- |
package wb_block_pkg is |
|
-- |
-- Define TEST_CHECK reg id (addr in 64b cells) |
-- |
constant REG_BLOCK_ID : integer:=0; |
constant REG_BLOCK_VER : integer:=1; |
|
constant REG_TEST_CHECK_CTRL : integer:=8; |
constant REG_TEST_CHECK_SIZE : integer:=9; |
constant REG_TEST_CHECK_ERR_ADR : integer:=16#0A#; |
constant REG_TEST_CHECK_WBS_BURST_CTRL : integer:=16#0B#; |
|
constant REG_TEST_CHECK_BL_RD : integer:=16#10#; |
constant REG_TEST_CHECK_BL_OK : integer:=16#11#; |
constant REG_TEST_CHECK_BL_ERROR : integer:=16#12#; |
constant REG_TEST_CHECK_TOTAL_ERROR : integer:=16#13#; |
constant REG_TEST_CHECK_ERR_DATA : integer:=16#14#; |
-- |
-- Define TEST_GEN reg id (addr in 64b cells) |
-- |
constant REG_TEST_GEN_CTRL : integer:=8; |
constant REG_TEST_GEN_SIZE : integer:=9; |
constant REG_TEST_GEN_CNT1 : integer:=16#0A#; |
constant REG_TEST_GEN_CNT2 : integer:=16#0B#; |
constant REG_TEST_GEN_BL_WR : integer:=16#11#; |
-- |
-- Define SoPC ADDR (must be EQU to: ...\src\top\sp605_lx45t_wishbone_sopc_wb.vhd) |
-- |
constant TEST_CHECK_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20000000"; |
constant TEST_CHECK_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20001000"; -- check data: write-only |
constant TEST_GEN_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20002000"; |
constant TEST_GEN_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20003000"; -- generate data: read-only |
|
|
|
procedure wb_block_check_write ( |
|
|
|
|
); |
|
|
|
procedure wb_block_check_read ( |
|
|
|
|
); |
|
|
procedure wb_block_gen_write ( |
|
|
|
|
); |
|
|
|
procedure wb_block_gen_read ( |
|
|
|
|
); |
|
|
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL |
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector; |
|
end package wb_block_pkg; |
--------------------------------------------------------------------------------------------------- |
package body wb_block_pkg is |
|
|
|
procedure wb_block_check_write ( |
|
|
|
|
) is |
begin |
data_write( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
|
procedure wb_block_check_read ( |
|
|
|
|
) is |
begin |
data_read( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
procedure wb_block_gen_write ( |
|
|
|
|
) is |
begin |
data_write( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
|
procedure wb_block_gen_read ( |
|
|
|
|
) is |
begin |
data_read( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL |
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector is |
variable iv_ret : std_logic_vector(31 downto 0):=(others => '0'); |
begin |
iv_ret:= x"0000" & i_ena & conv_std_logic_vector( ii_ack_dly, 6) & conv_std_logic_vector( ii_dly_pos, 9); |
return iv_ret; |
end wb_block_check_burst_ctrl_build; |
|
|
end package body wb_block_pkg; |
|
--------------------------------------------------------------------------------------------------- |
-- |
-- Title : wb_block_pkg.vhd |
-- Author : Dmitry Smekhov |
-- Company : Instrumental Systems |
-- E-mail : dsmv@insys.ru |
-- |
-- Version : 1.0 |
--------------------------------------------------------------------------------------------------- |
-- |
|
-- |
--------------------------------------------------------------------------------------------------- |
-- |
-- Version 1.0 01.11.2011 |
|
-- |
--------------------------------------------------------------------------------------------------- |
|
library ieee; |
use ieee.std_logic_1164.all; |
use ieee.std_logic_arith.all; |
use ieee.std_logic_textio.all; |
use ieee.std_logic_unsigned.all; |
|
library work; |
use work.cmd_sim_pkg.all; |
|
use std.textio.all; |
use std.textio; |
|
--------------------------------------------------------------------------------------------------- |
package wb_block_pkg is |
|
-- |
-- Define TEST_CHECK reg id (addr in 64b cells) |
-- |
constant REG_BLOCK_ID : integer:=0; |
constant REG_BLOCK_VER : integer:=1; |
|
constant REG_TEST_CHECK_CTRL : integer:=8; |
constant REG_TEST_CHECK_SIZE : integer:=9; |
constant REG_TEST_CHECK_ERR_ADR : integer:=16#0A#; |
constant REG_TEST_CHECK_WBS_BURST_CTRL : integer:=16#0B#; |
|
constant REG_TEST_CHECK_BL_RD : integer:=16#10#; |
constant REG_TEST_CHECK_BL_OK : integer:=16#11#; |
constant REG_TEST_CHECK_BL_ERROR : integer:=16#12#; |
constant REG_TEST_CHECK_TOTAL_ERROR : integer:=16#13#; |
constant REG_TEST_CHECK_ERR_DATA : integer:=16#14#; |
-- |
-- Define TEST_GEN reg id (addr in 64b cells) |
-- |
constant REG_TEST_GEN_CTRL : integer:=8; |
constant REG_TEST_GEN_SIZE : integer:=9; |
constant REG_TEST_GEN_CNT1 : integer:=16#0A#; |
constant REG_TEST_GEN_CNT2 : integer:=16#0B#; |
constant REG_TEST_GEN_BL_WR : integer:=16#11#; |
-- |
-- Define SoPC ADDR (must be EQU to: ...\src\top\sp605_lx45t_wishbone_sopc_wb.vhd) |
-- |
constant TEST_CHECK_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20000000"; |
constant TEST_CHECK_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20001000"; -- check data: write-only |
constant TEST_GEN_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20002000"; |
constant TEST_GEN_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20003000"; -- generate data: read-only |
|
---- Write to wishbone ---- |
procedure wb_write ( |
|
|
|
|
); |
|
---- Read from wishbone ---- |
procedure wb_read ( |
|
|
|
|
); |
|
|
procedure wb_block_check_write ( |
|
|
|
|
); |
|
|
|
procedure wb_block_check_read ( |
|
|
|
|
); |
|
|
procedure wb_block_gen_write ( |
|
|
|
|
); |
|
|
|
procedure wb_block_gen_read ( |
|
|
|
|
); |
|
|
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL |
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector; |
|
end package wb_block_pkg; |
--------------------------------------------------------------------------------------------------- |
package body wb_block_pkg is |
|
|
---- Write to wishbone ---- |
procedure wb_write ( |
|
|
|
|
) is |
begin |
data_write( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(adr, 32), data ); |
end; |
|
---- Read from wishbone ---- |
procedure wb_read ( |
|
|
|
|
) is |
begin |
data_read( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(adr, 32), data ); |
end; |
|
|
procedure wb_block_check_write ( |
|
|
|
|
) is |
begin |
data_write( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
|
procedure wb_block_check_read ( |
|
|
|
|
) is |
begin |
data_read( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
procedure wb_block_gen_write ( |
|
|
|
|
) is |
begin |
data_write( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
|
procedure wb_block_gen_read ( |
|
|
|
|
) is |
begin |
data_read( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data ); |
end; |
|
|
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL |
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector is |
variable iv_ret : std_logic_vector(31 downto 0):=(others => '0'); |
begin |
iv_ret:= x"0000" & i_ena & conv_std_logic_vector( ii_ack_dly, 6) & conv_std_logic_vector( ii_dly_pos, 9); |
return iv_ret; |
end wb_block_check_burst_ctrl_build; |
|
|
end package body wb_block_pkg; |
|
/ambpex5_sx50t_wishbone/src/testbench/stend_ambpex5_wishbone.vhd
37,7 → 37,7
|
entity stend_ambpex5_wishbone is |
generic( |
|
|
|
); |
end stend_ambpex5_wishbone; |
185,7 → 185,8
case( test_id ) is |
when 0 => test_dsc_incorrect( cmd, ret ); |
when 1 => test_read_4kb( cmd, ret ); -- was original |
when 2 => test_adm_read_8kb( cmd, ret ); |
when 2 => test_adm_read_8kb( cmd, ret ); |
when 3 => test_read_reg( cmd, ret ); |
--when 3 => test_adm_read_16kb( cmd, ret ); |
--when 4 => test_adm_write_16kb( cmd, ret ); |
--when 5 => test_block_main( cmd, ret ); |
/sp605_lx45t_wishbone/sp605_lx45t_wishbone.aws
7,9 → 7,9
[Settings] |
Active=ambpex5_sx50t_wishbone |
[Expand] |
sp605_lx45t_wishbone=1 |
sp605_lx45t_wishbone=0 |
ambpex5_sx50t_wishbone=1 |
ambpex5_v20_sx50t_core=0 |
ambpex5_v20_sx50t_core=1 |
[Browser] |
sort=order |
mode=none |