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

Subversion Repositories core1990_interlaken

[/] [core1990_interlaken/] [trunk/] [gateware/] [simulation/] [interlaken_interface_tb.vhd] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 N.Boukadid
library ieee;
2
use ieee.std_logic_1164.all;
3
 
4
entity testbench_interlaken_interface is
5
end entity testbench_interlaken_interface;
6
 
7
architecture tb_interlaken_interface of testbench_interlaken_interface is
8
 
9
    constant   TX_REFCLK_PERIOD        :   time :=  8.0 ns;
10
    constant   RX_REFCLK_PERIOD        :   time :=  8.0 ns;
11
    constant   SYSCLK_PERIOD           :   time :=  25.0 ns;
12
    constant   DCLK_PERIOD             :   time :=  5.0 ns;
13 9 N.Boukadid
 
14 6 N.Boukadid
    signal System_Clock_In_P : std_logic;
15
    signal System_Clock_In_N : std_logic;
16
 
17
    signal GTREFCLK_IN_P : std_logic;
18
    signal GTREFCLK_IN_N : std_logic;
19
 
20
    signal Reset                : std_logic;
21
 
22
    signal TX_Data      : std_logic_vector(63 downto 0);          -- Data transmitted
23
    signal RX_Data  : std_logic_vector (63 downto 0);        -- Data received
24
 
25
    signal TX_Out_P     : std_logic;
26
    signal TX_Out_N     : std_logic;
27
    signal RX_In_P      : std_logic;
28
    signal RX_In_N      : std_logic;
29
 
30
    signal TX_Link_Up      : std_logic;                         -- In case signal is high transmission may start
31
    signal TX_SOP          : std_logic;
32
    signal TX_EOP          : std_logic;
33
    signal TX_EOP_Valid    : std_logic_vector(2 downto 0);
34
    signal TX_FlowControl  : std_logic_vector(15 downto 0);
35
    signal TX_Channel      : std_logic_vector(7 downto 0);
36
 
37
    signal RX_SOP               : std_logic;                         -- Start of Packet
38
    signal RX_EOP               : std_logic;                         -- End of Packet
39
    signal RX_EOP_Valid         : std_logic_vector(2 downto 0);      -- Valid bytes packet contains
40
    signal RX_FlowControl       : std_logic_vector(15 downto 0);     -- Flow control data (yet unutilized)
41
    signal RX_Channel           : std_logic_vector(7 downto 0);      -- Select transmit channel (yet unutilized)
42
 
43
    signal RX_Link_Up       : std_logic;
44
 
45
    signal TX_Overflow      : std_logic;
46
    signal TX_Underflow     : std_logic;
47
 
48
    signal RX_FIFO_Full      : std_logic;
49
    signal RX_FIFO_Empty     : std_logic;
50
    signal Decoder_lock      : std_logic;
51
    signal Descrambler_lock  : std_logic;
52
    signal CRC24_Error       : std_logic;
53
    signal CRC32_Error       : std_logic;
54
 
55
begin
56
    RX_In_N <=  TX_Out_N;
57
    RX_In_P <=  TX_Out_P;
58
 
59
    uut : entity work.interlaken_interface
60
    port map (
61
        System_Clock_In_P => System_Clock_In_P,
62
        System_Clock_In_N => System_Clock_In_N,
63
        GTREFCLK_IN_P => GTREFCLK_IN_P,
64
        GTREFCLK_IN_N => GTREFCLK_IN_N,
65
 
66
        reset => reset,
67
 
68
        TX_Data => TX_Data,
69
        RX_Data => RX_Data,
70
 
71
        RX_In_N => RX_In_N,
72
        RX_In_P => RX_In_P,
73
        TX_Out_N => TX_Out_N,
74
        TX_Out_P => TX_Out_P,
75
 
76
        TX_Link_Up => TX_Link_Up,
77
        TX_SOP => TX_SOP,
78
        TX_EOP => TX_EOP,
79
        TX_EOP_Valid => TX_EOP_Valid,
80
        TX_FlowControl => TX_FlowControl,
81
        TX_Channel => TX_Channel,
82
 
83
        RX_SOP => RX_SOP,
84
        RX_EOP => RX_EOP,
85
        RX_EOP_Valid => RX_EOP_Valid,
86
        RX_FlowControl => RX_FlowControl,
87
        RX_Channel => RX_Channel,
88
 
89
        RX_Link_Up => RX_Link_Up,
90
 
91
        TX_Overflow => TX_Overflow,
92
        TX_Underflow => TX_Underflow,
93
 
94
        RX_FIFO_Full => RX_FIFO_Full,
95
        RX_FIFO_Empty => RX_FIFO_Empty,
96
        Decoder_lock => Decoder_lock,
97
        Descrambler_lock => Descrambler_lock,
98
        CRC24_Error => CRC24_Error,
99
        CRC32_Error => CRC32_Error
100
    );
101
 
102
    process
103
    begin
104
        GTREFCLK_IN_N  <=  '1';
105
        wait for TX_REFCLK_PERIOD/2;
106
        GTREFCLK_IN_N  <=  '0';
107
        wait for TX_REFCLK_PERIOD/2;
108
    end process;
109
 
110
    GTREFCLK_IN_P <= not GTREFCLK_IN_N;
111
 
112
    process
113
    begin
114
        rx_refclk_n_r  <=  '1';
115
        wait for RX_REFCLK_PERIOD/2;
116
        rx_refclk_n_r  <=  '0';
117
        wait for RX_REFCLK_PERIOD/2;
118
    end process;
119
 
120
    rx_refclk_p_r <= not rx_refclk_n_r;
121
 
122
    process
123
    begin
124
        System_Clock_In_N  <=  '1';
125
        wait for DCLK_PERIOD/2;
126
        System_Clock_In_N  <=  '0';
127
        wait for DCLK_PERIOD/2;
128
    end process;
129
 
130
    System_Clock_In_P <= not System_Clock_In_N;
131
 
132
 
133
 
134
    simulation : process
135
    begin
136
        wait for 1 ps;
137
            --TX_Enable <= '0';
138
        TX_EOP <= '0';
139
        TX_SOP <= '0';
140
        TX_Channel <= X"01";
141
        TX_EOP_Valid <= "111";
142
        TX_Data <= (others=>'0');
143
        reset <= '1';
144
        TX_FlowControl <= (others => '0');
145
 
146
        wait for 20*SYSCLK_PERIOD;
147
 
148
        wait for SYSCLK_PERIOD;
149
        reset <= '0';
150
        --TX_SOP <= '1';
151
        --TX_Enable <= '1';
152
        TX_Data <= X"1f5e5d5c5b5a5958";
153
        wait for SYSCLK_PERIOD;
154
        --TX_EOP <= '1';
155
 
156
        wait until (TX_Link_Up = '1');
157
 
158
        wait for SYSCLK_PERIOD*10;
159
        TX_FlowControl(0) <= '1';
160
        TX_SOP <= '1';
161
        TX_EOP <= '1';
162
        TX_Data <= X"2f5e5d5c5b5a5958";
163
        wait for SYSCLK_PERIOD;
164
 
165
        TX_EOP <= '0';
166
        TX_Data <= X"3f5e5d5c5b5a5958";
167
        wait for SYSCLK_PERIOD;
168
 
169
 
170
        TX_SOP <= '0';
171
        TX_EOP <= '0';
172
        TX_EOP <= '0';
173
        --reset <= '1';
174
        TX_Data <= X"4f21a2a3a4a5a6a7";
175
        wait for SYSCLK_PERIOD;
176
--        TX_FlowControl(0) <= '1';
177
        TX_SOP <= '1';
178
        TX_Data <= X"5f5e5a5c5b60f2a0";
179
        wait for SYSCLK_PERIOD;
180
 
181
        TX_SOP <= '0';
182
        TX_EOP <= '1';
183
        TX_Data  <= X"635e22a3a4a5a7a7";
184
        wait for SYSCLK_PERIOD;
185
 
186
        TX_EOP <= '0';
187
        --TX_SOP <= '1';
188
        TX_Data  <= X"70000FFF000000F0";
189
        wait for SYSCLK_PERIOD*2;
190
 
191
        TX_SOP <= '1';
192
        TX_Data <= X"2f5e5d5c5b5a5958";
193
        wait for SYSCLK_PERIOD;
194
 
195
        TX_SOP <= '0';
196
        TX_EOP <= '1';
197
        wait for SYSCLK_PERIOD;
198
 
199
        TX_EOP <= '0';
200
        --TX_SOP <= '0';
201
        TX_Data  <= X"8050505050050505";
202
        --wait for SYSCLK_PERIOD*3;                          
203
        wait for SYSCLK_PERIOD;
204
        TX_Data  <= X"9486576758050505";
205
        wait for SYSCLK_PERIOD;
206
 
207
        TX_EOP <= '1';
208
        TX_Data <= X"60b35d5dc4a582a7";
209
        wait for SYSCLK_PERIOD; --Test influencing pause state position
210
 
211
        TX_EOP <= '0';
212
        wait for SYSCLK_PERIOD*16;
213
 
214
        TX_SOP <= '1';
215
        TX_Data <= X"4f21a2a3a4a5a6a7";
216
        wait for SYSCLK_PERIOD;
217
 
218
        TX_Data <= X"995e5a5c5b60f2a0";
219
        wait for SYSCLK_PERIOD;
220
 
221
        TX_Data  <= X"635e22a3a4a5a7a7";
222
        wait for SYSCLK_PERIOD;
223
 
224
        TX_Data  <= X"70000FFF000000F0";
225
        wait for SYSCLK_PERIOD*2;
226
 
227
        TX_Data <= X"2f5e5d5c5b5a5958";
228
        wait for SYSCLK_PERIOD;
229
 
230
        TX_Data <= X"4f21a2a3a4a5a6a7";
231
        wait for SYSCLK_PERIOD;
232
 
233
        TX_Data <= X"5f5e5a5c5b60f2a0";
234
        wait for SYSCLK_PERIOD;
235
 
236
        TX_Data  <= X"635e22a3a4a5a7a7";
237
        wait for SYSCLK_PERIOD;
238
 
239
        TX_Data  <= X"70000FFF000000F0";
240
        wait for SYSCLK_PERIOD*2;
241
 
242
 
243
        TX_Data <= X"2f5e5d5c5b5a5958";
244
        wait for SYSCLK_PERIOD*12;
245
 
246
        TX_Data <= X"4f5e5d5c5b5a5958";
247
        wait for SYSCLK_PERIOD;
248
 
249
        TX_SOP <= '0';
250
        TX_EOP <= '1';
251
        wait for SYSCLK_PERIOD;
252
 
253
        wait for SYSCLK_PERIOD*4;
254
        wait;
255
    end process;
256
 
257
end architecture tb_interlaken_interface;
258
 
259
 

powered by: WebSVN 2.1.0

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