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

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [ip.hwp.communication/] [fh_ring/] [1.0/] [sim/] [simple_test_ring.vhd] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
-------------------------------------------------------------------------------
2
-- Title      : Simple tester for FH Ring
3
-- Project    : 
4
-------------------------------------------------------------------------------
5
-- File       : simple_test_ring.vhd
6
-- Author     : Lasse Lehtonen
7
-- Company    : 
8
-- Created    : 2011-08-12
9
-- Last update: 2011-08-23
10
-- Platform   : 
11
-- Standard   : VHDL'87
12
-------------------------------------------------------------------------------
13
-- Description: 
14
-------------------------------------------------------------------------------
15
-- Copyright (c) 2011 
16
--
17
--  This file is part of Transaction Generator.
18
--
19
--  Transaction Generator is free software: you can redistribute it and/or modify
20
--  it under the terms of the Lesser GNU General Public License as published by
21
--  the Free Software Foundation, either version 3 of the License, or
22
--  (at your option) any later version.
23
--
24
--  Transaction Generator is distributed in the hope that it will be useful,
25
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
26
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27
--  Lesser GNU General Public License for more details.
28
--
29
--  You should have received a copy of the Lesser GNU General Public License
30
--  along with Transaction Generator.  If not, see <http://www.gnu.org/licenses/>.
31
-------------------------------------------------------------------------------
32
-- Revisions  :
33
-- Date        Version  Author  Description
34
-- 2011-08-12  1.0      lehton87        Created
35
-------------------------------------------------------------------------------
36
 
37
 
38
library ieee;
39
use ieee.std_logic_1164.all;
40
use ieee.numeric_std.all;
41
 
42
entity simple_test_ring is
43
end simple_test_ring;
44
 
45
 
46
 
47
architecture tb of simple_test_ring is
48
 
49
  -----------------------------------------------------------------------------
50
  -- CONSTANTS
51
  -----------------------------------------------------------------------------
52
  -- generics
53
  constant diag_en_c       : integer := 1;
54
  constant n_ag_c          : integer := 6;
55
  constant stfwd_en_c      : integer := 0;
56
  constant data_width_c    : integer := 32;
57
  constant addr_width_c    : integer := 32;
58
  constant packet_length_c : integer := 6;
59
  constant tx_len_width_c  : integer := 8;
60
  constant timeout_c       : integer := 4;
61
  constant fill_packet_c   : integer := 0;
62
  constant lut_en_c        : integer := 0;
63
  constant net_type_c      : integer := 0;
64
  constant len_flit_en_c   : integer := 1;
65
  constant oaddr_flit_en_c : integer := 0;
66
  constant status_en_c     : integer := 0;
67
  constant fifo_depth_c    : integer := 8;
68
  constant net_freq_c      : integer := 1;
69
  constant ip_freq_c       : integer := 2;
70
  constant max_send_c      : integer := 0;  -- 0 = inf
71
 
72
  -- clock generation
73
  constant noc_cycle_time_c : time := 4 ns;
74
  constant ip_cycle_time_c  : time := 2 ns;
75
 
76
  -----------------------------------------------------------------------------
77
  -- SIGNALS
78
  -----------------------------------------------------------------------------
79
  signal clk_noc : std_logic := '1';
80
  signal clk_ip  : std_logic := '1';
81
  signal rst_n   : std_logic := '0';
82
 
83
  signal rx_av : std_logic_vector(n_ag_c-1 downto 0)
84
 := (others => '0');
85
  signal rx_data : std_logic_vector(n_ag_c*data_width_c-1 downto 0)
86
 := (others => '0');
87
  signal we : std_logic_vector(n_ag_c-1 downto 0)
88
 := (others => '0');
89
  signal txlen : std_logic_vector(n_ag_c*tx_len_width_c-1 downto 0)
90
 := (others => '0');
91
  signal full : std_logic_vector(n_ag_c-1 downto 0)
92
 := (others => '0');
93
  signal full_r : std_logic_vector(n_ag_c-1 downto 0)
94
 := (others => '0');
95
  signal rx_empty : std_logic_vector(n_ag_c-1 downto 0)
96
 := (others => '0');
97
  signal tx_av : std_logic_vector(n_ag_c-1 downto 0)
98
 := (others => '0');
99
  signal tx_data : std_logic_vector(n_ag_c*data_width_c-1 downto 0)
100
 := (others => '0');
101
  signal re : std_logic_vector(n_ag_c-1 downto 0)
102
 := (others => '0');
103
  signal tx_empty : std_logic_vector(n_ag_c-1 downto 0)
104
 := (others => '0');
105
 
106
 
107
begin  -- tb
108
 
109
 
110
  clk_noc <= not clk_noc after noc_cycle_time_c;
111
  clk_ip  <= not clk_ip  after ip_cycle_time_c;
112
  rst_n   <= '1'         after 20 ns;
113
 
114
 
115
  i_ring_with_pkt_codec_top : entity work.ring_with_pkt_codec_top
116
    generic map (
117
      diag_en_g => diag_en_c,
118
      n_ag_g          => n_ag_c,
119
      stfwd_en_g      => stfwd_en_c,
120
      data_width_g    => data_width_c,
121
      addr_width_g    => addr_width_c,
122
      packet_length_g => packet_length_c,
123
      tx_len_width_g  => tx_len_width_c,
124
      timeout_g       => timeout_c,
125
      fill_packet_g   => fill_packet_c,
126
      lut_en_g        => lut_en_c,
127
      len_flit_en_g   => len_flit_en_c,
128
      oaddr_flit_en_g => oaddr_flit_en_c,
129
      status_en_g     => status_en_c,
130
--      max_send_g      => max_send_c,
131
      fifo_depth_g    => fifo_depth_c,
132
      ring_freq_g      => net_freq_c,
133
      ip_freq_g       => ip_freq_c)
134
    port map (
135
      clk_net      => clk_noc,
136
      clk_ip       => clk_ip,
137
      rst_n        => rst_n,
138
      tx_av_in     => tx_av,
139
      tx_data_in   => tx_data,
140
      tx_we_in     => we,
141
      tx_txlen_in  => txlen,
142
      tx_full_out  => full,
143
      tx_empty_out => tx_empty,
144
      rx_av_out    => rx_av,
145
      rx_data_out  => rx_data,
146
      rx_re_in     => re,
147
      rx_empty_out => rx_empty);
148
 
149
 
150
  basic_test_tx_1 : entity work.basic_test_tx
151
    generic map (
152
      conf_file_g  => "tx_file.txt",
153
      comm_width_g => 2,
154
      data_width_g => data_width_c)
155
    port map (
156
      clk            => clk_ip,
157
      rst_n          => rst_n,
158
      done_out       => open,
159
      agent_av_out   => tx_av(0),
160
      agent_data_out => tx_data(data_width_c-1 downto 0),
161
      agent_comm_out => open,
162
      agent_we_out   => we(0),
163
      agent_full_in  => full(0),
164
      agent_one_p_in => '0');
165
 
166
  basic_test_rx_1 : entity work.basic_test_rx
167
    generic map (
168
      conf_file_g  => "rx_file.txt",
169
      comm_width_g => 2,
170
      data_width_g => data_width_c)
171
    port map (
172
      clk            => clk_ip,
173
      rst_n          => rst_n,
174
      done_out       => open,
175
      agent_av_in    => rx_av(5),
176
      agent_data_in  => rx_data(6*data_width_c-1 downto 5*data_width_c),
177
      agent_comm_in  => "00",
178
      agent_re_out   => re(5),
179
      agent_empty_in => rx_empty(5),
180
      agent_one_d_in => '0');
181
 
182
end tb;

powered by: WebSVN 2.1.0

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