OpenCores
URL https://opencores.org/ocsvn/vhdl_wb_tb/vhdl_wb_tb/trunk

Subversion Repositories vhdl_wb_tb

[/] [vhdl_wb_tb/] [trunk/] [bench/] [vhdl/] [tc_xxxx.vhd] - Rev 2

Go to most recent revision | Compare with Previous | Blame | View Log

---------------------------------------------------------------------- 
----                                                              ---- 
----  VHDL Wishbone TESTBENCH                                     ---- 
----                                                              ---- 
----  This file is part of the vhdl_wb_tb project                 ---- 
----  http://www.opencores.org/cores/vhdl_wb_tb/                  ---- 
----                                                              ---- 
----  This file contains the highest (top) module of the test     ----
----  bench.                                                      ---- 
----  It instantiates the design under test (DUT), instantiates   ----
----  the stimulator module for test vector generation,           ----
----  instantiates the verifier module for result comparison,     ----
----  instantiates the test case top (testcase_top) bfm,          ----
----  interconnects all three components, generates DUT-external  ----
----  clocks and resets.                                          ----
----                                                              ---- 
----  To Do:                                                      ---- 
----   -                                                          ---- 
----                                                              ---- 
----  Author(s):                                                  ---- 
----      - Sinx, email@opencores.org                             ---- 
----                                                              ---- 
----------------------------------------------------------------------
--    SVN information
--
--      $URL:  $
-- $Revision:  $
--     $Date:  $
--   $Author:  $
--       $Id:  $
--
---------------------------------------------------------------------- 
----                                                              ---- 
---- Copyright (C) 2018 Authors and OPENCORES.ORG                 ---- 
----                                                              ---- 
---- This source file may be used and distributed without         ---- 
---- restriction provided that this copyright statement is not    ---- 
---- removed from the file and that any derivative work contains  ---- 
---- the original copyright notice and the associated disclaimer. ---- 
----                                                              ---- 
---- This source file is free software; you can redistribute it   ---- 
---- and/or modify it under the terms of the GNU Lesser General   ---- 
---- Public License as published by the Free Software Foundation; ---- 
---- either version 2.1 of the License, or (at your option) any   ---- 
---- later version.                                               ---- 
----                                                              ---- 
---- This source is distributed in the hope that it will be       ---- 
---- useful, but WITHOUT ANY WARRANTY; without even the implied   ---- 
---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ---- 
---- PURPOSE.  See the GNU Lesser General Public License for more ---- 
---- details.                                                     ---- 
----                                                              ---- 
---- You should have received a copy of the GNU Lesser General    ---- 
---- Public License along with this source; if not, download it   ---- 
---- from http://www.opencores.org/lgpl.shtml                     ---- 
----                                                              ---- 
----------------------------------------------------------------------
 
-- library -----------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.convert_pkg.all;
use work.wishbone_pkg.all;
use work.wishbone_bfm_pkg.all;
use work.my_project_pkg.all;
use work.tb_pkg.all;
 
-- architecture ------------------------------------------------------
architecture tc_xxxx of testcase_top is
  --==========================================================================
  --  local constant definitions
  --==========================================================================
  --==========================================================================
begin
  --==========================================================================
  tc_xxxx_proc : process
  begin
  --==========================================================================
    -- standard signal initialization
    wb_o <= wb_bfm_master_out_idle_c;
 
    wait until wb_i.rst = '0';
    wait until rising_edge(wb_i.clk);
    wait until rising_edge(wb_i.clk);
    --
    wait for 400 ns;
    wait until rising_edge(wb_i.clk);
    --
  --==========================================================================
 
    report "-----------------------------------------------------------------";
    report "-- tc_xxxx: ADD_DESCRIPTION_HERE                               --";
    report "-----------------------------------------------------------------";
    --
    report "--configure stimulator";
    report "-----------------------------------------------------------------";
 
    wb_write(stimulator_register0_c       , 0, wb_i, wb_o);
 
    report "--configure verifier";
    report "-----------------------------------------------------------------";
 
    wb_write(verifier_register0_c         , 2, wb_i, wb_o);
    wb_write(verifier_register1_c         , 16#2b#, wb_i, wb_o);
    report "--configuration done";
    report "-----------------------------------------------------------------";
 
    report "--starting stimulator";
    report "-----------------------------------------------------------------";
    wb_write(stimulator_register0_c       , 3, wb_i, wb_o); -- shift '1' in
    wb_write(stimulator_register0_c       , 1, wb_i, wb_o);
    wb_write(stimulator_register0_c       , 2, wb_i, wb_o); -- shift '0' in
    wb_write(stimulator_register0_c       , 0, wb_i, wb_o);
    wb_read (verifier_register2_c         , 2, wb_i, wb_o);
 
    wb_write(stimulator_register0_c       , 3, wb_i, wb_o); -- shift '1' in
    wb_write(stimulator_register0_c       , 1, wb_i, wb_o);
 
    wb_read (verifier_register2_c         , 5, wb_i, wb_o); -- reads correct
    report "-----------------------------------------------------------------";
    report "-----------------------------------------------------------------";
    report "-- All fine till here. Now we provoke error messages for illustration.";
    wb_read (verifier_register2_c         , 6, wb_i, wb_o); -- provoke error (read value is 5)
    wb_read (verifier_register2_c         , 6, wb_i, wb_o,0); -- provoke error (read value is 5)
    wb_read (verifier_register2_c         , 6, wb_i, wb_o,1); -- provoke error (read value is 5)
    wb_read (verifier_register2_c         , 6, wb_i, wb_o,2); -- provoke error (read value is 5)
    wb_read (verifier_register2_c         , 6, wb_i, wb_o,2,"<TEXT>"); -- provoke error (read value is 5)
    wb_read (verifier_register2_c         , 6, wb_i, wb_o,3,"",7); -- provoke error (read value is 5)
    wb_read (verifier_register2_c         , 6, wb_i, wb_o,4); -- provoke error (read value is 5)
 
    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    report "-----------------------------------------------------------------";
    report "--check results";
    report "-----------------------------------------------------------------";
    wait for 6 us;
    wait until rising_edge(wb_i.clk);
    wb_read (verifier_register2_c, 16#0000_0005#, wb_i, wb_o);
    wait for 1 us;    
    -- =================================================
    report "-- tc_xxxx finished";
    -- =================================================
    --
    wait for 400 ns;
    --wait;
    --
    report "test case tc_xxxx completed successfully"; --severity failure;
    report "-----------------------------------------------------------------";
    report "-----------------------------------------------------------------";
    std.env.stop; -- pause simulation
 
    --std.env.finish; -- stop simulation; end modelsim
  end process tc_xxxx_proc;
  --==========================================================================
end tc_xxxx;
--============================================================================
-- end of file
--============================================================================

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2020 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.