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

Subversion Repositories rise

[/] [rise/] [trunk/] [vhdl/] [tb_register_file.vhd] - Rev 148

Compare with Previous | Blame | View Log

-- File: tb_register_file.vhd
-- Author: Jakob Lechner, Urban Stadler, Harald Trinkl, Christian Walter
-- Created: 2006-11-29
-- Last updated: 2006-11-29
 
-- Description:
-- Execute stage
-------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
use work.RISE_PACK.all;
use work.RISE_PACK_SPECIFIC.all;
 
entity tb_register_file_vhd is
end tb_register_file_vhd;
 
architecture behavior of tb_register_file_vhd is
 
  -- Component Declaration for the Unit Under Test (UUT)
  component register_file
    port(
      clk         : in  std_logic;
      reset       : in  std_logic;
      rx_addr     : in  std_logic_vector(3 downto 0);
      ry_addr     : in  std_logic_vector(3 downto 0);
      rz_addr     : in  std_logic_vector(3 downto 0);
      dreg_addr   : in  std_logic_vector(3 downto 0);
      dreg_write  : in  std_logic_vector(15 downto 0);
      dreg_enable : in  std_logic;
      sr_write    : in  std_logic_vector(15 downto 0);
      sr_enable   : in  std_logic;
      lr_write    : in  std_logic_vector(15 downto 0);
      lr_enable   : in  std_logic;
      pc_write    : in  std_logic_vector(15 downto 0);
      rx_read     : out std_logic_vector(15 downto 0);
      ry_read     : out std_logic_vector(15 downto 0);
      rz_read     : out std_logic_vector(15 downto 0);
      sr_read     : out std_logic_vector(15 downto 0);
      pc_read     : out std_logic_vector(15 downto 0)
      );
  end component;
 
  --Inputs
  signal clk         : std_logic                     := '0';
  signal reset       : std_logic                     := '0';
  signal rx_addr     : std_logic_vector(3 downto 0)  := (others => '0');
  signal ry_addr     : std_logic_vector(3 downto 0)  := (others => '0');
  signal rz_addr     : std_logic_vector(3 downto 0)  := (others => '0');
  signal dreg_addr   : std_logic_vector(3 downto 0)  := (others => '0');
  signal dreg_write  : std_logic_vector(15 downto 0) := (others => '0');
  signal dreg_enable : std_logic;
  signal sr_write    : std_logic_vector(15 downto 0) := (others => '0');
  signal sr_enable   : std_logic;
  signal lr_write    : std_logic_vector(15 downto 0) := (others => '0');
  signal lr_enable   : std_logic;
  signal pc_write    : std_logic_vector(15 downto 0) := (others => '0');
 
  --Outputs
  signal rx_read : std_logic_vector(15 downto 0);
  signal ry_read : std_logic_vector(15 downto 0);
  signal rz_read : std_logic_vector(15 downto 0);
  signal sr_read : std_logic_vector(15 downto 0);
  signal pc_read : std_logic_vector(15 downto 0);
 
begin
 
  -- Instantiate the Unit Under Test (UUT)
  uut : register_file port map(
    clk         => clk,
    reset       => reset,
    rx_addr     => rx_addr,
    ry_addr     => ry_addr,
    rz_addr     => rz_addr,
    dreg_addr   => dreg_addr,
    dreg_write  => dreg_write,
    dreg_enable => dreg_enable,
    rx_read     => rx_read,
    ry_read     => ry_read,
    rz_read     => rz_read,
    sr_write    => sr_write,
    sr_enable   => sr_enable,
    lr_write    => lr_write,
    lr_enable   => lr_enable,
    pc_write    => pc_write,
    sr_read     => sr_read,
    pc_read     => pc_read
    );
 
  process                               -- clock process for CLK,
  begin
    CLOCK_LOOP : loop
      clk <= transport '0';
      wait for 10 ns;
      clk <= transport '1';
      wait for 10 ns;
 
    end loop CLOCK_LOOP;
  end process;
 
 
  process
  begin
 
    reset       <= '0';
    dreg_enable <= '0';
    sr_enable   <= '0';
    lr_enable   <= '0';
    wait for 50 ns;
    dreg_enable <= '1';
    reset       <= '1';
    wait for 10 ns;
 
    dreg_addr  <= "0101";
    dreg_write <= "1111111111111111";
 
    rx_addr <= "0101";
 
    wait for 40 ns;
    dreg_addr  <= "0001";
    dreg_write <= "1111111100000000";
 
    rx_addr <= "0101";
 
    wait for 40 ns;
    dreg_enable <= '0';
    wait for 5 ns;
    dreg_addr   <= "0000";
    dreg_write  <= "0000000011111111";
 
    wait for 40 ns;
    dreg_enable <= '1';
    wait for 5 ns;
    dreg_addr   <= "0010";
    dreg_write  <= "1010101010101010";
 
 
    wait for 30 ns;
 
    rx_addr <= "0010";
    ry_addr <= "0001";
    rz_addr <= "0000";
 
    dreg_addr  <= "0010";
    dreg_write <= "1111111111111111";
 
    wait for 20 ns;
 
    dreg_addr  <= "1110";
    dreg_write <= "1111111100000000";
    pc_write   <= "1010101010101010";
 
    wait for 20 ns;
 
    dreg_addr  <= "1111";
    dreg_write <= "1111111100000000";
 
    sr_enable <= '1';
    sr_write  <= "1010101010101010";
 
    --wait for
 
    wait;
 
  end process;
 
 
end;
 

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.