From d52574e6c028b556b080b7aa485b5a3acfb96c26 Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Fri, 17 Mar 2017 09:20:49 +0000 Subject: [PATCH] Added proc_common_timeout_failure(). --- libraries/base/common/tb/vhdl/tb_common_pkg.vhd | 16 ++++++++++++++++ libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd | 5 ++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/libraries/base/common/tb/vhdl/tb_common_pkg.vhd b/libraries/base/common/tb/vhdl/tb_common_pkg.vhd index 52ab2bb315..4a2e16886c 100644 --- a/libraries/base/common/tb/vhdl/tb_common_pkg.vhd +++ b/libraries/base/common/tb/vhdl/tb_common_pkg.vhd @@ -94,6 +94,11 @@ PACKAGE tb_common_pkg IS CONSTANT c_value : IN INTEGER; SIGNAL clk : IN STD_LOGIC; SIGNAL level : IN STD_LOGIC_VECTOR); + + -- Exit simulation on timeout failure + PROCEDURE proc_common_timeout_failure(CONSTANT c_timeout : IN TIME; + SIGNAL tb_end : IN STD_LOGIC); + -- Handle stream ready signal, only support ready latency c_rl = 0 or 1. PROCEDURE proc_common_ready_latency(CONSTANT c_rl : IN NATURAL; @@ -483,6 +488,17 @@ PACKAGE BODY tb_common_pkg IS END LOOP; END proc_common_wait_until_value; + + PROCEDURE proc_common_timeout_failure(CONSTANT c_timeout : IN TIME; + SIGNAL tb_end : IN STD_LOGIC) IS + BEGIN + WHILE tb_end='0' LOOP + ASSERT NOW < c_timeout REPORT "Test bench timeout." SEVERITY FAILURE; + WAIT FOR 1 us; + END LOOP; + END PROCEDURE; + + ------------------------------------------------------------------------------ -- PROCEDURE: Handle stream ready signal for data valid -- . output active when ready='1' and enable='1' diff --git a/libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd b/libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd index 47019f4c98..8d7a994932 100644 --- a/libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd +++ b/libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd @@ -25,11 +25,12 @@ -- > as 5 -- > run -all -LIBRARY IEEE, technology_lib, tech_ddr_lib; +LIBRARY IEEE, technology_lib, tech_ddr_lib, common_lib; USE IEEE.std_logic_1164.ALL; USE technology_lib.technology_pkg.ALL; USE technology_lib.technology_select_pkg.ALL; USE tech_ddr_lib.tech_ddr_pkg.ALL; +USE common_lib.tb_common_pkg.ALL; ENTITY tb_tb_io_ddr IS @@ -96,6 +97,8 @@ BEGIN tb_end <= '1' WHEN tb_end_vec=c_tb_end_vec ELSE '0'; + proc_common_timeout_failure(1 ms, tb_end); + p_tb_end : PROCESS BEGIN WAIT UNTIL tb_end='1'; -- GitLab