CLEANUP: Cleaned up testbench and removed testcases not required

This commit is contained in:
Oliver Bruendler
2018-07-10 09:25:28 +02:00
parent c20e4c8770
commit fd2790c6e6
7 changed files with 35 additions and 285 deletions

View File

@ -24,7 +24,7 @@ library work;
------------------------------------------------------------------------------
-- Entity Declaration
------------------------------------------------------------------------------
-- $$ testcases=single_simple,priorities,single_window,multi_window,ringbuf,overwrite$$
-- $$ testcases=single_simple,priorities,single_window,multi_window$$
-- $$ processes=control,dma_cmd,dma_resp,ctx $$
-- $$ tbpkg=work.psi_tb_txt_util,work.psi_tb_compare_pkg $$
entity psi_ms_daq_daq_sm is

View File

@ -48,9 +48,7 @@ add_sources "../tb" {
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_pkg.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_case_single_window.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_case_single_simple.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_case_ringbuf.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_case_priorities.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_case_overwrite.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb_case_multi_window.vhd \
psi_ms_daq_daq_sm/psi_ms_daq_daq_sm_tb.vhd \
} -tag tb

View File

@ -27,8 +27,6 @@ library work;
use work.psi_ms_daq_daq_sm_tb_case_priorities.all;
use work.psi_ms_daq_daq_sm_tb_case_single_window.all;
use work.psi_ms_daq_daq_sm_tb_case_multi_window.all;
use work.psi_ms_daq_daq_sm_tb_case_ringbuf.all;
use work.psi_ms_daq_daq_sm_tb_case_overwrite.all;
------------------------------------------------------------
-- Entity Declaration
@ -132,12 +130,7 @@ begin
-- multi_window
NextCase <= 3;
wait until ProcessDone = AllProcessesDone_c;
-- ringbuf
NextCase <= 4;
wait until ProcessDone = AllProcessesDone_c;
-- overwrite
NextCase <= 5;
wait until ProcessDone = AllProcessesDone_c;
TbRunning <= false;
wait;
end process;
@ -190,18 +183,6 @@ begin
work.psi_ms_daq_daq_sm_tb_case_multi_window.control(Clk, Rst, Inp_HasLast, Inp_Level, Ts_Vld, Ts_Rdy, Ts_Data, Dma_Cmd, Dma_Cmd_Vld, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_control_c) <= '1';
-- ringbuf
wait until NextCase = 4;
ProcessDone(TbProcNr_control_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_ringbuf.control(Clk, Rst, Inp_HasLast, Inp_Level, Ts_Vld, Ts_Rdy, Ts_Data, Dma_Cmd, Dma_Cmd_Vld, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_control_c) <= '1';
-- overwrite
wait until NextCase = 5;
ProcessDone(TbProcNr_control_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_overwrite.control(Clk, Rst, Inp_HasLast, Inp_Level, Ts_Vld, Ts_Rdy, Ts_Data, Dma_Cmd, Dma_Cmd_Vld, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_control_c) <= '1';
wait;
end process;
@ -232,18 +213,6 @@ begin
work.psi_ms_daq_daq_sm_tb_case_multi_window.dma_cmd(Clk, Dma_Cmd, Dma_Cmd_Vld, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_dma_cmd_c) <= '1';
-- ringbuf
wait until NextCase = 4;
ProcessDone(TbProcNr_dma_cmd_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_ringbuf.dma_cmd(Clk, Dma_Cmd, Dma_Cmd_Vld, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_dma_cmd_c) <= '1';
-- overwrite
wait until NextCase = 5;
ProcessDone(TbProcNr_dma_cmd_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_overwrite.dma_cmd(Clk, Dma_Cmd, Dma_Cmd_Vld, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_dma_cmd_c) <= '1';
wait;
end process;
@ -274,18 +243,6 @@ begin
work.psi_ms_daq_daq_sm_tb_case_multi_window.dma_resp(Clk, Dma_Resp, Dma_Resp_Vld, Dma_Resp_Rdy, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_dma_resp_c) <= '1';
-- ringbuf
wait until NextCase = 4;
ProcessDone(TbProcNr_dma_resp_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_ringbuf.dma_resp(Clk, Dma_Resp, Dma_Resp_Vld, Dma_Resp_Rdy, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_dma_resp_c) <= '1';
-- overwrite
wait until NextCase = 5;
ProcessDone(TbProcNr_dma_resp_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_overwrite.dma_resp(Clk, Dma_Resp, Dma_Resp_Vld, Dma_Resp_Rdy, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_dma_resp_c) <= '1';
wait;
end process;
@ -316,18 +273,6 @@ begin
work.psi_ms_daq_daq_sm_tb_case_multi_window.ctx(Clk, CtxStr_Cmd, CtxStr_Resp, CtxWin_Cmd, CtxWin_Resp, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_ctx_c) <= '1';
-- ringbuf
wait until NextCase = 4;
ProcessDone(TbProcNr_ctx_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_ringbuf.ctx(Clk, CtxStr_Cmd, CtxStr_Resp, CtxWin_Cmd, CtxWin_Resp, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_ctx_c) <= '1';
-- overwrite
wait until NextCase = 5;
ProcessDone(TbProcNr_ctx_c) <= '0';
work.psi_ms_daq_daq_sm_tb_case_overwrite.ctx(Clk, CtxStr_Cmd, CtxStr_Resp, CtxWin_Cmd, CtxWin_Resp, Generics_c);
wait for 1 ps;
ProcessDone(TbProcNr_ctx_c) <= '1';
wait;
end process;

View File

@ -124,7 +124,6 @@ package body psi_ms_daq_daq_sm_tb_case_multi_window is
ControlWaitCompl(Clk);
-- Ringbuf without overwrite
wait for 10 us;
print(">> Ringbuf without overwrite");
InitTestCase(Clk, Rst);
TestCase := 4;

View File

@ -1,109 +0,0 @@
------------------------------------------------------------
-- Libraries
------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.psi_common_math_pkg.all;
use work.psi_common_array_pkg.all;
use work.psi_ms_daq_pkg.all;
library work;
use work.psi_ms_daq_daq_sm_tb_pkg.all;
library work;
use work.psi_tb_txt_util.all;
use work.psi_tb_compare_pkg.all;
------------------------------------------------------------
-- Package Header
------------------------------------------------------------
package psi_ms_daq_daq_sm_tb_case_overwrite is
procedure control (
signal Clk : in std_logic;
signal Rst : inout std_logic;
signal Inp_HasLast : inout std_logic_vector;
signal Inp_Level : inout t_aslv16;
signal Ts_Vld : inout std_logic_vector;
signal Ts_Rdy : in std_logic_vector;
signal Ts_Data : inout t_aslv64;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t);
procedure dma_cmd (
signal Clk : in std_logic;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t);
procedure dma_resp (
signal Clk : in std_logic;
signal Dma_Resp : inout DaqDma2DaqSm_Resp_t;
signal Dma_Resp_Vld : inout std_logic;
signal Dma_Resp_Rdy : in std_logic;
constant Generics_c : Generics_t);
procedure ctx (
signal Clk : in std_logic;
signal CtxStr_Cmd : in ToCtxStr_t;
signal CtxStr_Resp : inout FromCtx_t;
signal CtxWin_Cmd : in ToCtxWin_t;
signal CtxWin_Resp : inout FromCtx_t;
constant Generics_c : Generics_t);
end package;
------------------------------------------------------------
-- Package Body
------------------------------------------------------------
package body psi_ms_daq_daq_sm_tb_case_overwrite is
procedure control (
signal Clk : in std_logic;
signal Rst : inout std_logic;
signal Inp_HasLast : inout std_logic_vector;
signal Inp_Level : inout t_aslv16;
signal Ts_Vld : inout std_logic_vector;
signal Ts_Rdy : in std_logic_vector;
signal Ts_Data : inout t_aslv64;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t) is
begin
assert false report "Case OVERWRITE Procedure CONTROL: No Content added yet!" severity warning;
end procedure;
procedure dma_cmd (
signal Clk : in std_logic;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t) is
begin
assert false report "Case OVERWRITE Procedure DMA_CMD: No Content added yet!" severity warning;
end procedure;
procedure dma_resp (
signal Clk : in std_logic;
signal Dma_Resp : inout DaqDma2DaqSm_Resp_t;
signal Dma_Resp_Vld : inout std_logic;
signal Dma_Resp_Rdy : in std_logic;
constant Generics_c : Generics_t) is
begin
assert false report "Case OVERWRITE Procedure DMA_RESP: No Content added yet!" severity warning;
end procedure;
procedure ctx (
signal Clk : in std_logic;
signal CtxStr_Cmd : in ToCtxStr_t;
signal CtxStr_Resp : inout FromCtx_t;
signal CtxWin_Cmd : in ToCtxWin_t;
signal CtxWin_Resp : inout FromCtx_t;
constant Generics_c : Generics_t) is
begin
assert false report "Case OVERWRITE Procedure CTX: No Content added yet!" severity warning;
end procedure;
end;

View File

@ -1,109 +0,0 @@
------------------------------------------------------------
-- Libraries
------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.psi_common_math_pkg.all;
use work.psi_common_array_pkg.all;
use work.psi_ms_daq_pkg.all;
library work;
use work.psi_ms_daq_daq_sm_tb_pkg.all;
library work;
use work.psi_tb_txt_util.all;
use work.psi_tb_compare_pkg.all;
------------------------------------------------------------
-- Package Header
------------------------------------------------------------
package psi_ms_daq_daq_sm_tb_case_ringbuf is
procedure control (
signal Clk : in std_logic;
signal Rst : inout std_logic;
signal Inp_HasLast : inout std_logic_vector;
signal Inp_Level : inout t_aslv16;
signal Ts_Vld : inout std_logic_vector;
signal Ts_Rdy : in std_logic_vector;
signal Ts_Data : inout t_aslv64;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t);
procedure dma_cmd (
signal Clk : in std_logic;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t);
procedure dma_resp (
signal Clk : in std_logic;
signal Dma_Resp : inout DaqDma2DaqSm_Resp_t;
signal Dma_Resp_Vld : inout std_logic;
signal Dma_Resp_Rdy : in std_logic;
constant Generics_c : Generics_t);
procedure ctx (
signal Clk : in std_logic;
signal CtxStr_Cmd : in ToCtxStr_t;
signal CtxStr_Resp : inout FromCtx_t;
signal CtxWin_Cmd : in ToCtxWin_t;
signal CtxWin_Resp : inout FromCtx_t;
constant Generics_c : Generics_t);
end package;
------------------------------------------------------------
-- Package Body
------------------------------------------------------------
package body psi_ms_daq_daq_sm_tb_case_ringbuf is
procedure control (
signal Clk : in std_logic;
signal Rst : inout std_logic;
signal Inp_HasLast : inout std_logic_vector;
signal Inp_Level : inout t_aslv16;
signal Ts_Vld : inout std_logic_vector;
signal Ts_Rdy : in std_logic_vector;
signal Ts_Data : inout t_aslv64;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t) is
begin
assert false report "Case RINGBUF Procedure CONTROL: No Content added yet!" severity warning;
end procedure;
procedure dma_cmd (
signal Clk : in std_logic;
signal Dma_Cmd : in DaqSm2DaqDma_Cmd_t;
signal Dma_Cmd_Vld : in std_logic;
constant Generics_c : Generics_t) is
begin
assert false report "Case RINGBUF Procedure DMA_CMD: No Content added yet!" severity warning;
end procedure;
procedure dma_resp (
signal Clk : in std_logic;
signal Dma_Resp : inout DaqDma2DaqSm_Resp_t;
signal Dma_Resp_Vld : inout std_logic;
signal Dma_Resp_Rdy : in std_logic;
constant Generics_c : Generics_t) is
begin
assert false report "Case RINGBUF Procedure DMA_RESP: No Content added yet!" severity warning;
end procedure;
procedure ctx (
signal Clk : in std_logic;
signal CtxStr_Cmd : in ToCtxStr_t;
signal CtxStr_Resp : inout FromCtx_t;
signal CtxWin_Cmd : in ToCtxWin_t;
signal CtxWin_Resp : inout FromCtx_t;
constant Generics_c : Generics_t) is
begin
assert false report "Case RINGBUF Procedure CTX: No Content added yet!" severity warning;
end procedure;
end;

View File

@ -34,7 +34,9 @@ package psi_ms_daq_daq_sm_tb_pkg is
constant Windows_g : positive := 4;
constant Streams_g : positive := 4;
-- Handwritten Stuff
------------------------------------------------------------
-- Handwritten constants and variables
------------------------------------------------------------
constant Size4k_c : positive := 4096;
constant DataWidth_c : positive := 64;
constant DataWidthBytes_c : positive := DataWidth_c/8;
@ -44,6 +46,9 @@ package psi_ms_daq_daq_sm_tb_pkg is
shared variable ProcDone : std_logic_vector(0 to 2) := "000";
constant AllDone : std_logic_vector(ProcDone'range) := (others => '1');
------------------------------------------------------------
-- Test Case Control
------------------------------------------------------------
procedure InitTestCase( signal Clk : in std_logic;
signal Rst : out std_logic);
@ -54,6 +59,9 @@ package psi_ms_daq_daq_sm_tb_pkg is
procedure WaitForCase( SubCase : in integer;
signal Clk : in std_logic);
------------------------------------------------------------
-- Low Level Test Functions
------------------------------------------------------------
shared variable DmaCmdOpen : integer := 0;
procedure ExpCtxRead( Stream : in integer;
@ -151,7 +159,9 @@ package psi_ms_daq_daq_sm_tb_pkg is
signal Dma_Resp_Rdy : in std_logic;
Msg : in string := "");
-- higher level functions
------------------------------------------------------------
-- High Level (Auto) Functions
------------------------------------------------------------
type IntStrWin_t is array (0 to 3) of t_ainteger(0 to 31);
shared variable PtrStr_v : t_ainteger(0 to 3);
shared variable PtrDma_v : t_ainteger(0 to 3);
@ -217,7 +227,15 @@ package psi_ms_daq_daq_sm_tb_pkg is
signal Dma_Resp : out DaqDma2DaqSm_Resp_t;
signal Dma_Resp_Vld : out std_logic;
signal Dma_Resp_Rdy : in std_logic;
Msg : in string := "");
Msg : in string := "");
------------------------------------------------------------
-- Helper Functions
------------------------------------------------------------
function GetWindowOffset( Stream : integer;
Ptr : integer;
AutoWincur_v : t_ainteger;
AutoWinSize_v : integer) return integer;
end package;
@ -643,9 +661,9 @@ package body psi_ms_daq_daq_sm_tb_pkg is
end if;
else
-- wraparound for ringbuffer case
if (PtrStr_v(Stream) - BufStart_c(Stream) - AutoWincur_v(Stream)*AutoWinSize_v > AutoWinSize_v) then
if GetWindowOffset(Stream, PtrStr_v(Stream), AutoWincur_v, AutoWinSize_v) > AutoWinSize_v then
report "###ERROR### TB assertion, unhandled window crossing" severity error;
elsif (PtrStr_v(Stream) - BufStart_c(Stream) - AutoWincur_v(Stream)*AutoWinSize_v = AutoWinSize_v) then
elsif GetWindowOffset(Stream, PtrStr_v(Stream), AutoWincur_v, AutoWinSize_v) = AutoWinSize_v then
if AutoRingbuf_v = '1' then
PtrStr_v(Stream) := BufStart_c(Stream);
end if;
@ -730,9 +748,9 @@ package body psi_ms_daq_daq_sm_tb_pkg is
else
PtrDma_v(Stream) := PtrDma_v(Stream) + ExeSize_v;
-- wraparound for ringbuffer case
if (PtrDma_v(Stream) - BufStart_c(Stream) - AutoWincur_v(Stream)*AutoWinSize_v > AutoWinSize_v) then
if GetWindowOffset(Stream, PtrDma_v(Stream), AutoWincur_v, AutoWinSize_v) > AutoWinSize_v then
report "###ERROR### TB assertion, unhandled window crossing" severity error;
elsif (PtrDma_v(Stream) - BufStart_c(Stream) - AutoWincur_v(Stream)*AutoWinSize_v = AutoWinSize_v) then
elsif GetWindowOffset(Stream, PtrDma_v(Stream), AutoWincur_v, AutoWinSize_v) = AutoWinSize_v then
if AutoRingbuf_v = '1' then
PtrDma_v(Stream) := BufStart_c(Stream) + AutoWincur_v(Stream)*AutoWinSize_v;
end if;
@ -764,5 +782,13 @@ package body psi_ms_daq_daq_sm_tb_pkg is
Dma_Resp_Rdy => Dma_Resp_Rdy,
Msg => Msg);
end procedure;
function GetWindowOffset( Stream : integer;
Ptr : integer;
AutoWincur_v : t_ainteger;
AutoWinSize_v : integer) return integer is
begin
return Ptr - BufStart_c(Stream) - AutoWincur_v(Stream)*AutoWinSize_v;
end function;
end;