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

Subversion Repositories wrimm

[/] [wrimm/] [trunk/] [WrimmTestBench.vhd] - Rev 7

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

--Propery of Tecphos Inc.  See License.txt for license details
--Latest version of all project files available at http://opencores.org/project,wrimm
--See WrimmManual.pdf for the Wishbone Datasheet and implementation details.
--See wrimm subversion project for version history
 
library ieee;
  use ieee.NUMERIC_STD.all;
  use ieee.std_logic_1164.all;
 
  use work.WrimmPackage.all;
 
entity wrimm_top_tb is
end wrimm_top_tb;
 
architecture TB_ARCHITECTURE of wrimm_top_tb is
  component wrimm_top
  port(
    WishboneClock       : in  std_logic;
    WishboneReset       : out std_logic;
    MasterPStrobe       : in  std_logic;
    MasterPWrEn         : in  std_logic;
    MasterPCyc          : in  std_logic;
    MasterPAddr         : in  WbAddrType;
    MasterPDataToSlave  : in  WbDataType;
    MasterPAck          : out std_logic;
    MasterPErr          : out std_logic;
    MasterPRty          : out std_logic;
    MasterPDataFrSlave  : out WbDataType;
    MasterQStrobe       : in  std_logic;
    MasterQWrEn         : in  std_logic;
    MasterQCyc          : in  std_logic;
    MasterQAddr         : in  WbAddrType;
    MasterQDataToSlave  : in  WbDataType;
    MasterQAck          : out std_logic;
    MasterQErr          : out std_logic;
    MasterQRty          : out std_logic;
    MasterQDataFrSlave  : out WbDataType;
    StatusRegA          : in  std_logic_vector(0 to 7);
    StatusRegB          : in  std_logic_vector(0 to 7);
    StatusRegC          : in  std_logic_vector(0 to 7);
    SettingRegX         : out std_logic_vector(0 to 7);
    SettingRstX         : in  std_logic;
    SettingRegY         : out std_logic_vector(0 to 7);
    SettingRstY         : in  std_logic;
    SettingRegZ         : out std_logic_vector(0 to 7);
    SettingRstZ         : in  std_logic;
    TriggerRegR         : out std_logic;
    TriggerClrR         : in  std_logic;
    TriggerRegS         : out std_logic;
    TriggerClrS         : in  std_logic;
    TriggerRegT         : out std_logic;
    TriggerClrT         : in  std_logic;
    rstZ                : in  std_logic);
  end component;
 
  signal WishboneClock        : std_logic;
  signal MasterPStrobe        : std_logic;
  signal MasterPWrEn          : std_logic;
  signal MasterPCyc           : std_logic;
  signal MasterPAddr          : WbAddrType;
  signal MasterPDataToSlave   : WbDataType;
  signal MasterQStrobe        : std_logic;
  signal MasterQWrEn          : std_logic;
  signal MasterQCyc           : std_logic;
  signal MasterQAddr          : WbAddrType;
  signal MasterQDataToSlave   : WbDataType;
  signal StatusRegA           : std_logic_vector(0 to 7);
  signal StatusRegB           : std_logic_vector(0 to 7);
  signal StatusRegC           : std_logic_vector(0 to 7);
  signal SettingRstX          : std_logic;
  signal SettingRstY          : std_logic;
  signal SettingRstZ          : std_logic;
  signal TriggerClrR          : std_logic;
  signal TriggerClrS          : std_logic;
  signal TriggerClrT          : std_logic;
  signal rstZ                 : std_logic;
  signal WishboneReset        : std_logic;
  signal MasterPAck           : std_logic;
  signal MasterPErr           : std_logic;
  signal MasterPRty           : std_logic;
  signal MasterPDataFrSlave   : WbDataType;
  signal MasterQAck           : std_logic;
  signal MasterQErr           : std_logic;
  signal MasterQRty           : std_logic;
  signal MasterQDataFrSlave   : WbDataType;
  signal SettingRegX          : std_logic_vector(0 to 7);
  signal SettingRegY          : std_logic_vector(0 to 7);
  signal SettingRegZ          : std_logic_vector(0 to 7);
  signal TriggerRegR          : std_logic;
  signal TriggerRegS          : std_logic;
  signal TriggerRegT          : std_logic;
 
  constant clkPeriod          : time := 0.01 us; --100 MHz
 
begin
  UUT : wrimm_top
    port map (
      WishboneClock         => WishboneClock,
      WishboneReset         => WishboneReset,
      MasterPStrobe         => MasterPStrobe,
      MasterPWrEn           => MasterPWrEn,
      MasterPCyc            => MasterPCyc,
      MasterPAddr           => MasterPAddr,
      MasterPDataToSlave    => MasterPDataToSlave,
      MasterPAck            => MasterPAck,
      MasterPErr            => MasterPErr,
      MasterPRty            => MasterPRty,
      MasterPDataFrSlave    => MasterPDataFrSlave,
      MasterQStrobe         => MasterQStrobe,
      MasterQWrEn           => MasterQWrEn,
      MasterQCyc            => MasterQCyc,
      MasterQAddr           => MasterQAddr,
      MasterQDataToSlave    => MasterQDataToSlave,
      MasterQAck            => MasterQAck,
      MasterQErr            => MasterQErr,
      MasterQRty            => MasterQRty,
      MasterQDataFrSlave    => MasterQDataFrSlave,
      StatusRegA            => StatusRegA,
      StatusRegB            => StatusRegB,
      StatusRegC            => StatusRegC,
      SettingRegX           => SettingRegX,
      SettingRstX           => SettingRstX,
      SettingRegY           => SettingRegY,
      SettingRstY           => SettingRstY,
      SettingRegZ           => SettingRegZ,
      SettingRstZ           => SettingRstZ,
      TriggerRegR           => TriggerRegR,
      TriggerClrR           => TriggerClrR,
      TriggerRegS           => TriggerRegS,
      TriggerClrS           => TriggerClrS,
      TriggerRegT           => TriggerRegT,
      TriggerClrT           => TriggerClrT,
      rstZ                  => rstZ);
 
  procClk: process
  begin
    if WishBoneClock='1' then
      WishBoneClock <= '0';
    else
      WishBoneClock <= '1';
    end if;
    wait for clkPeriod/2;
  end process procClk;
 
  procRstZ: process
  begin
    rstZ  <= '0';
    wait for 10 ns;
    rstZ  <= '1';
    wait;
  end process procRstZ;
 
  procWbMasterP: process
  begin
    MasterPStrobe <= '0';
    MasterPWrEn   <= '0';
    MasterPCyc    <= '0';
    MasterPAddr   <= x"0";
    MasterPDataToSlave <= x"00";
    wait for clkPeriod / 10;
    wait for clkPeriod * 5;
    MasterPStrobe <= '1';
    MasterPWrEn   <= '1';
    MasterPCyc    <= '1';
    MasterPAddr   <= x"6";
    MasterPDataToSlave <= x"55";
    wait for clkPeriod * 2;
    MasterPStrobe <= '0';
    MasterPWrEn   <= '0';
    MasterPCyc    <= '0';
    MasterPAddr   <= x"0";
    MasterPDataToSlave <= x"00";
    wait for clkPeriod * 10;
    MasterPStrobe <= '1';
    MasterPWrEn   <= '1';
    MasterPCyc    <= '1';
    MasterPAddr   <= x"6";
    MasterPDataToSlave <= x"99";
    wait for clkPeriod * 2;
    MasterPStrobe <= '0';
    MasterPWrEn   <= '0';
    MasterPCyc    <= '0';
    MasterPAddr   <= x"0";
    MasterPDataToSlave <= x"00";
    wait;
  end process procWbMasterP;
  procWbMasterQ: process
  begin
    MasterQStrobe <= '0';
    MasterQWrEn   <= '0';
    MasterQCyc    <= '0';
    MasterQAddr   <= x"0";
    MasterQDataToSlave <= x"00";
    wait for clkPeriod / 10;
    wait for clkPeriod * 8;
    MasterQStrobe <= '1';
    MasterQWrEn   <= '1';
    MasterQCyc    <= '1';
    MasterQAddr   <= x"6";
    MasterQDataToSlave <= x"77";
    wait for clkPeriod * 2;
    MasterQStrobe <= '0';
    MasterQWrEn   <= '0';
    MasterQCyc    <= '0';
    MasterQAddr   <= x"0";
    MasterQDataToSlave <= x"00";
    wait for clkPeriod * 2;
    assert false report "Test Complete" severity warning;
  end process procWbMasterQ;
 
end TB_ARCHITECTURE;
 
configuration TESTBENCH_FOR_wrimm_top of wrimm_top_tb is
  for TB_ARCHITECTURE
    for UUT : wrimm_top
      use entity work.wrimm_top(structure);
    end for;
  end for;
end TESTBENCH_FOR_wrimm_top;
 
 

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

powered by: WebSVN 2.1.0

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