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

Subversion Repositories ht_tunnel

[/] [ht_tunnel/] [tags/] [START/] [bench/] [csr_l2/] [main.cpp] - Blame information for rev 21

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

Line No. Rev Author Line
1 2 acastong
//main.cpp - CSR testbench
2
/* ***** BEGIN LICENSE BLOCK *****
3
 * Version: MPL 1.1
4
 *
5
 * The contents of this file are subject to the Mozilla Public License Version
6
 * 1.1 (the "License"); you may not use this file except in compliance with
7
 * the License. You may obtain a copy of the License at
8
 * http://www.mozilla.org/MPL/
9
 *
10
 * Software distributed under the License is distributed on an "AS IS" basis,
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
 * for the specific language governing rights and limitations under the
13
 * License.
14
 *
15
 * The Original Code is HyperTransport Tunnel IP Core.
16
 *
17
 * The Initial Developer of the Original Code is
18
 * Ecole Polytechnique de Montreal.
19
 * Portions created by the Initial Developer are Copyright (C) 2005
20
 * the Initial Developer. All Rights Reserved.
21
 *
22
 * Contributor(s):
23
 *   Ami Castonguay <acastong@grm.polymtl.ca>
24
 *
25
 * Alternatively, the contents of this file may be used under the terms
26
 * of the Polytechnique HyperTransport Tunnel IP Core Source Code License
27
 * (the  "PHTICSCL License", see the file PHTICSCL.txt), in which case the
28
 * provisions of PHTICSCL License are applicable instead of those
29
 * above. If you wish to allow use of your version of this file only
30
 * under the terms of the PHTICSCL License and not to allow others to use
31
 * your version of this file under the MPL, indicate your decision by
32
 * deleting the provisions above and replace them with the notice and
33
 * other provisions required by the PHTICSCL License. If you do not delete
34
 * the provisions above, a recipient may use your version of this file
35
 * under either the MPL or the PHTICSCL License."
36
 *
37
 * ***** END LICENSE BLOCK ***** */
38
 
39
#include "../../rtl/systemc/core_synth/synth_datatypes.h"
40
#include "../../rtl/systemc/core_synth/constants.h"
41
 
42
#include "../../rtl/systemc/csr_l2/csr_l2.h"
43
#include "csr_l2_tb.h"
44
 
45
#include <iostream>
46
#include <string>
47
#include <sstream>
48
#include <iomanip>
49
 
50
using namespace std;
51
 
52
int sc_main( int argc, char* argv[] ){
53
        //The Design Under Test
54
        csr_l2* dut = new csr_l2("csr_l2");
55
        //The TestBench
56
        csr_l2_tb* tb = new csr_l2_tb("csr_l2_tb");
57
 
58
 
59
        //Signals used to link the design to the testbench
60
        sc_clock clk("clk", 1);  // system clk
61
 
62
        /** Warm Reset signal (active low) */
63
        sc_signal<bool> resetx;
64
        sc_signal<bool> pwrok;
65
        sc_signal<bool> ldtstopx;
66
 
67
        ///If the tunnel is in sync mode
68
        /**
69
                When a critical error is detected, sync flood is sent.  When
70
                a sync flood is received, we also fall in sync mode.  This
71
                cascades and resyncs the complete HT chain.
72
        */
73
        sc_signal<bool>         csr_sync;
74
 
75
        //****************************************************
76
        //  Signals for communication with User Interface module
77
        //****************************************************
78
 
79
        sc_signal<bool> csr_request_databuffer0_access_ui;
80
        sc_signal<bool> csr_request_databuffer1_access_ui;
81
        sc_signal<bool> ui_databuffer_access_granted_csr;
82
 
83
 
84
        //****************************************************
85
        //  Signals for communication with Reordering module
86
        //****************************************************
87
 
88
        /** @name Reordering
89
        *  Signals for communication with Reordering module
90
        */
91
        //@{
92
        /** Packet is ready to read from Reordering module */
93
        sc_signal<bool> ro0_available_csr;
94
        /** Packet from Reordering module */
95
        sc_signal<syn_ControlPacketComplete > ro0_packet_csr;
96
        /** Packet from Reordering has been read by CSR */
97
        sc_signal<bool> csr_ack_ro0;
98
 
99
        /** Packet is ready to read from Reordering module */
100
        sc_signal<bool> ro1_available_csr;
101
        /** Packet from Reordering module */
102
        sc_signal<syn_ControlPacketComplete > ro1_packet_csr;
103
        /** Packet from Reordering has been read by CSR */
104
        sc_signal<bool> csr_ack_ro1;
105
 
106
        //@}
107
 
108
 
109
        //*****************************************************
110
        //  Signals for communication with Data Buffer module
111
        //*****************************************************
112
 
113
        /** @name DataBuffer
114
        *  Signals for communication with Data Buffer module
115
        */
116
        //@{
117
 
118
        /** Consume data from Data Buffer */
119
        sc_signal<bool> csr_read_db0;
120
        sc_signal<bool> csr_read_db1;
121
 
122
        /** Address of the data packet requested in Data Buffer */
123
        sc_signal<sc_uint<BUFFERS_ADDRESS_WIDTH> > csr_address_db0;
124
        sc_signal<sc_uint<BUFFERS_ADDRESS_WIDTH> > csr_address_db1;
125
 
126
        /** Virtual Channel of the data requested in Data Buffer */
127
        sc_signal<VirtualChannel > csr_vctype_db0;
128
        sc_signal<VirtualChannel > csr_vctype_db1;
129
 
130
        /** 32 bit data sent from Data Buffer to CSR */
131
        sc_signal<sc_bv<32> > db0_data_csr;
132
        sc_signal<sc_bv<32> > db1_data_csr;
133
 
134
        /** Last dword of data from Data Buffer */
135
        sc_signal<bool> csr_erase_db0;
136
        sc_signal<bool> csr_erase_db1;
137
        //@}
138
 
139
 
140
        //******************************************************
141
        //  Signals for communication with Flow Control module
142
        //******************************************************
143
 
144
        /** @name FlowControl
145
        *  Signals for communication with Flow Control module
146
        */
147
        //@{
148
 
149
        /** Request to Flow Control to send packet */
150
        sc_signal<bool> csr_available_fc0;
151
        /** 32 bit packet or data to Flow Control */
152
        sc_signal<sc_bv<32> > csr_dword_fc0;
153
        /** Flow Control has read the last 32 bit packet or data */
154
        sc_signal<bool> fc0_ack_csr;
155
 
156
 
157
        /** Request to Flow Control to send packet */
158
        sc_signal<bool> csr_available_fc1;
159
        /** 32 bit packet or data to Flow Control */
160
        sc_signal<sc_bv<32> > csr_dword_fc1;
161
        /** Flow Control has read the last 32 bit packet or data */
162
        sc_signal<bool> fc1_ack_csr;
163
 
164
        //@}
165
 
166
 
167
 
168
        //************************************************************
169
        //  Normal input signals from other modules to CSR registers
170
        //************************************************************
171
 
172
        /*
173
        *  Input signals received from other modules to CSR
174
        */
175
 
176
        ///Signals that come from analyzed packet going through the UI  
177
        //@{
178
        sc_signal<bool> ui_sendingPostedDataError_csr;
179
        sc_signal<bool> ui_sendingTargetAbort_csr;
180
        sc_signal<bool> ui_receivedResponseDataError_csr;
181
        sc_signal<bool> ui_receivedPostedDataError_csr;
182
        sc_signal<bool> ui_receivedTargetAbort_csr;
183
        sc_signal<bool> ui_receivedMasterAbort_csr;
184
        //@}
185
 
186
        ///When the user received a response with an error
187
        sc_signal<bool> usr_receivedResponseError_csr;
188
 
189
        ///Overflow of the buffers of the databuffer0
190
        sc_signal<bool> db0_overflow_csr;
191
        ///Overflow of the buffers of the reordering0
192
        sc_signal<bool> ro0_overflow_csr;
193
        ///Overflow of the buffers of the databuffer1
194
        sc_signal<bool> db1_overflow_csr;
195
        ///Overflow of the buffers of the reordering1
196
        sc_signal<bool> ro1_overflow_csr;
197
 
198
        ///If the Error Handler consumes data, it means that there is an end of chain error
199
        //@{
200
        sc_signal<bool> eh0_ack_ro0;
201
        sc_signal<bool> eh1_ack_ro1;
202
        //@}
203
 
204
        /// Link0 has completed it's initialization
205
        sc_signal<bool> lk0_initialization_complete_csr;
206
#ifdef RETRY_MODE_ENABLED
207
        ///Link0 asks to initiate a retry disconnect (probably due to a protocol error)
208
        sc_signal<bool> lk0_initiate_retry_disconnect;
209
#endif
210
        /// Link0 has completed it's initialization
211
        sc_signal<bool > lk0_crc_error_csr;
212
        /// Link0 detected a sync packet
213
        //sc_signal<bool>       lk0_sync_detected_csr;
214
        /// Link0 detected a protocol error
215
        sc_signal<bool> lk0_protocol_error_csr;
216
 
217
 
218
        /// Link1 has completed it's initialization
219
        sc_signal<bool> lk1_initialization_complete_csr;
220
#ifdef RETRY_MODE_ENABLED
221
        ///Link1 asks to initiate a retry disconnect (probably due to a protocol error)
222
        sc_signal<bool> lk1_initiate_retry_disconnect;
223
#endif
224
        /// Link1 has completed it's initialization
225
        sc_signal<bool > lk1_crc_error_csr;
226
        /// Link1 detected a sync packet
227
        //sc_signal<bool>       lk1_sync_detected_csr;
228
        /// Link1 detected a protocol error
229
        sc_signal<bool> lk1_protocol_error_csr;
230
 
231
        /** Signal to register Interface->LinkError_0->ProtocolError_0 */
232
        sc_signal<bool> cd0_protocol_error_csr;
233
 
234
        ///When the command decoder0 detects a sync
235
        sc_signal<bool> cd0_sync_detected_csr;
236
        /** Signal to register Interface->LinkError_1->ProtocolError_1 */
237
        sc_signal<bool> cd1_protocol_error_csr;
238
#ifdef RETRY_MODE_ENABLED
239
        /** Signal to register ErrorRetry->Status_0->RetrySent_0 */
240
        sc_signal<bool> cd0_initiate_retry_disconnect;
241
        /** Signal to register ErrorRetry->Status_0->StompReceived_0 */
242
        sc_signal<bool> cd0_received_stomped_csr;
243
        /** Signal to register ErrorRetry->Status_1->RetrySent_1 */
244
        sc_signal<bool> cd1_initiate_retry_disconnect;
245
        /** Signal to register ErrorRetry->Status_1->StompReceived_1 */
246
        sc_signal<bool> cd1_received_stomped_csr;
247
#endif
248
 
249
        ///When the command decode1r detects a sync
250
        sc_signal<bool> cd1_sync_detected_csr;
251
 
252
 
253
 
254
        ///Update the registers with the value of "link failure" from the link
255
        sc_signal<bool>                 lk0_update_link_failure_property_csr;
256
        ///Update the registers with the value of "link width" from the link
257
        sc_signal<bool>                 lk0_update_link_width_csr;
258
        ///Detected link width (only valid when lk0_update_link_width_csr)
259
        sc_signal<sc_bv<3> >    lk0_sampled_link_width_csr;
260
        ///Detected link failure (only valid when lk0_update_link_failure_property_csr)
261
        sc_signal<bool>                 lk0_link_failure_csr;
262
 
263
        ///Clear the bit that forces a single CRC error to be sent
264
        sc_signal<bool>                 fc0_clear_single_error_csr;
265
        ///Clear the bit that forces a single CRC stomp to be sent
266
        sc_signal<bool>                 fc0_clear_single_stomp_csr;
267
 
268
 
269
        ///Update the registers with the value of "link failure" from the link
270
        sc_signal<bool>                 lk1_update_link_failure_property_csr;
271
        ///Update the registers with the value of "link width" from the link
272
        sc_signal<bool>                 lk1_update_link_width_csr;
273
        ///Detected link width (only valid when lk1_update_link_width_csr)
274
        sc_signal<sc_bv<3> >    lk1_sampled_link_width_csr;
275
        ///Detected link failure (only valid when lk1_update_link_failure_property_csr)
276
        sc_signal<bool>                 lk1_link_failure_csr;
277
 
278
        ///Clear the bit that forces a single CRC error to be sent
279
        sc_signal<bool>                 fc1_clear_single_error_csr;
280
        ///Clear the bit that forces a single CRC stomp to be sent
281
        sc_signal<bool>                 fc1_clear_single_stomp_csr;
282
 
283
 
284
        //***********************************************
285
        //  Outputs from CSR registers to other modules
286
        //***********************************************
287
 
288
        /** Signal from register DeviceHeader->Command->csr_io_space_enable */
289
        sc_signal<bool> csr_io_space_enable;
290
        /** Signal from register DeviceHeader->Command->csr_memory_space_enable */
291
        sc_signal<bool> csr_memory_space_enable;
292
        /** Signal from register DeviceHeader->Command->csr_bus_master_enable */
293
        sc_signal<bool> csr_bus_master_enable;
294
        /** Signal from register Interface->Command->Master host */
295
        sc_signal<bool> csr_master_host;
296
        /** Signals table containing all 40 bits Base Addresses from BARs implemented */
297
        sc_signal<sc_bv<40> > csr_bar[NbRegsBars];
298
        /** Signal from register Interface->Command->csr_unit_id */
299
        sc_signal<sc_bv<5> > csr_unit_id;
300
        /** Signal from register Interface->Command->csr_default_dir */
301
        sc_signal<bool> csr_default_dir;
302
        /** Signal from register Interface->Command->csr_drop_uninit_link */
303
        sc_signal<bool> csr_drop_uninit_link;
304
        /** Signal from register Interface->LinkControl_0->csr_crc_force_error_lk0 */
305
        sc_signal<bool> csr_crc_force_error_lk0;
306
        /** Signal from register Interface->LinkControl_0->csr_end_of_chain0 */
307
        sc_signal<bool> csr_end_of_chain0;
308
        /** Signal from register Interface->LinkControl_0->csr_transmitter_off_lk0 */
309
        sc_signal<bool> csr_transmitter_off_lk0;
310
        /** Signal from register Interface->LinkControl_0->csr_ldtstop_tristate_enable_lk0 */
311
        sc_signal<bool> csr_ldtstop_tristate_enable_lk0;
312
        /** Signal from register Interface->LinkControl_0->csr_extented_ctl_lk0 */
313
        sc_signal<bool> csr_extented_ctl_lk0;
314
        /** Signal from register Interface->LinkConfiguration_0->csr_rx_link_width_lk0 */
315
        sc_signal<sc_bv<3> > csr_rx_link_width_lk0;
316
        /** Signal from register Interface->LinkConfiguration_0->csr_tx_link_width_lk0 */
317
        sc_signal<sc_bv<3> > csr_tx_link_width_lk0;
318
        /** Signal from register Interface->LinkControl_1->csr_crc_force_error_lk1 */
319
        sc_signal<bool> csr_crc_force_error_lk1;
320
        /** Signal from register Interface->LinkControl_1->csr_end_of_chain1 */
321
        sc_signal<bool> csr_end_of_chain1;
322
        /** Signal from register Interface->LinkControl_1->csr_transmitter_off_lk1 */
323
        sc_signal<bool> csr_transmitter_off_lk1;
324
        /** Signal from register Interface->LinkControl_1->csr_ldtstop_tristate_enable_lk1 */
325
        sc_signal<bool> csr_ldtstop_tristate_enable_lk1;
326
        /** Signal from register Interface->LinkControl_1->csr_extented_ctl_lk1 */
327
        sc_signal<bool> csr_extented_ctl_lk1;
328
        /** Signal from register Interface->LinkConfiguration_1->csr_rx_link_width_lk1 */
329
        sc_signal<sc_bv<3> > csr_rx_link_width_lk1;
330
        /** Signal from register Interface->LinkConfiguration_1->csr_tx_link_width_lk1 */
331
        sc_signal<sc_bv<3> > csr_tx_link_width_lk1;
332
        /** Signal from register Interface->LinkError_0->csr_extended_ctl_timeout_lk0 */
333
        sc_signal<bool> csr_extended_ctl_timeout_lk0;
334
#ifdef ENABLE_REORDERING
335
        /** Signal from register Interface->FeatureCapability->csr_unitid_reorder_disable */
336
        sc_signal<bool> csr_unitid_reorder_disable;
337
#endif
338
        /** Signal from register Interface->LinkError_1->csr_extended_ctl_timeout_lk1 */
339
        sc_signal<bool> csr_extended_ctl_timeout_lk1;
340
#ifdef RETRY_MODE_ENABLED
341
        /** Signal from register ErrorRetry->Control_0->LinkRetryEnable_0 */
342
        sc_signal<bool> csr_retry0;
343
        /** Signal from register ErrorRetry->Control_0->csr_force_single_error_fc0 */
344
        sc_signal<bool> csr_force_single_error_fc0;
345
        /** Signal from register ErrorRetry->Control_0->csr_force_single_stomp_fc0 */
346
        sc_signal<bool> csr_force_single_stomp_fc0;
347
        /** Signal from register ErrorRetry->Control_1->LinkRetryEnable_1 */
348
        sc_signal<bool> csr_retry1;
349
        /** Signal from register ErrorRetry->Control_1->csr_force_single_error_fc1 */
350
        sc_signal<bool> csr_force_single_error_fc1;
351
        /** Signal from register ErrorRetry->Control_1->csr_force_single_stomp_fc1 */
352
        sc_signal<bool> csr_force_single_stomp_fc1;
353
#endif
354
        /** Signal from register DirectRoute->csr_direct_route_enable */
355
        sc_signal<sc_bv<32> > csr_direct_route_enable;
356
        /** Signal from register DirectRoute->csr_clumping_configuration */
357
        sc_signal<sc_bv<32> > csr_clumping_configuration;
358
        /** Signals table containing all csr_direct_route_oppposite_dir from Direct Route spaces implemented */
359
        sc_signal<bool> csr_direct_route_oppposite_dir[DirectRoute_NumberDirectRouteSpaces];
360
        /** Signals table containing all Base Addresses from Direct Route spaces implemented
361
                These are the bits 39:8*/
362
        sc_signal<sc_bv<32> > csr_direct_route_base[DirectRoute_NumberDirectRouteSpaces];
363
        /** Signals table containing all Limit Addresses from Direct Route spaces implemented
364
                These are the bits 39:8*/
365
        sc_signal<sc_bv<32> > csr_direct_route_limit[DirectRoute_NumberDirectRouteSpaces];
366
 
367
        /** If the link has finished it's initialization (is connected)*/
368
        sc_signal<bool> csr_initcomplete0;
369
        /** If the link has finished it's initialization (is connected)*/
370
        sc_signal<bool> csr_initcomplete1;
371
 
372
 
373
        sc_signal<sc_uint<6> >  csr_read_addr_usr;
374
        sc_signal<sc_bv<32> >   usr_read_data_csr;
375
        sc_signal<bool >        csr_write_usr;
376
        sc_signal<sc_uint<6> >  csr_write_addr_usr;
377
        sc_signal<sc_bv<32> >   csr_write_data_usr;
378
        sc_signal<sc_bv<4> >    csr_write_mask_usr;
379
 
380
        ////////////////////////////////////////////////////////////////
381
        ////////////////////////////////////////////////////////////////
382
        //  CSR DUT connections
383
        ////////////////////////////////////////////////////////////////
384
        ////////////////////////////////////////////////////////////////
385
 
386
        //Signals used to link the design to the testbench
387
        dut->clk(clk);
388
 
389
        dut->resetx(resetx);
390
        dut->pwrok(pwrok);
391
        dut->ldtstopx(ldtstopx);
392
        dut->csr_sync(csr_sync);
393
        dut->csr_request_databuffer0_access_ui(csr_request_databuffer0_access_ui);
394
        dut->csr_request_databuffer1_access_ui(csr_request_databuffer1_access_ui);
395
        dut->ui_databuffer_access_granted_csr(ui_databuffer_access_granted_csr);
396
 
397
        dut->ro0_available_csr(ro0_available_csr);
398
        dut->ro0_packet_csr(ro0_packet_csr);
399
        dut->csr_ack_ro0(csr_ack_ro0);
400
 
401
        dut->ro1_available_csr(ro1_available_csr);
402
        dut->ro1_packet_csr(ro1_packet_csr);
403
        dut->csr_ack_ro1(csr_ack_ro1);
404
 
405
        dut->csr_read_db0(csr_read_db0);
406
        dut->csr_read_db1(csr_read_db1);
407
 
408
        dut->csr_address_db0(csr_address_db0);
409
        dut->csr_address_db1(csr_address_db1);
410
 
411
        dut->csr_vctype_db0(csr_vctype_db0);
412
        dut->csr_vctype_db1(csr_vctype_db1);
413
 
414
        dut->db0_data_csr(db0_data_csr);
415
        dut->db1_data_csr(db1_data_csr);
416
        dut->csr_erase_db0(csr_erase_db0);
417
        dut->csr_erase_db1(csr_erase_db1);
418
        dut->csr_available_fc0(csr_available_fc0);
419
        dut->csr_dword_fc0(csr_dword_fc0);
420
        dut->fc0_ack_csr(fc0_ack_csr);
421
 
422
 
423
        dut->csr_available_fc1(csr_available_fc1);
424
        dut->csr_dword_fc1(csr_dword_fc1);
425
        dut->fc1_ack_csr(fc1_ack_csr);
426
 
427
        dut->ui_sendingPostedDataError_csr(ui_sendingPostedDataError_csr);
428
        dut->ui_sendingTargetAbort_csr(ui_sendingTargetAbort_csr);
429
        dut->ui_receivedResponseDataError_csr(ui_receivedResponseDataError_csr);
430
        dut->ui_receivedPostedDataError_csr(ui_receivedPostedDataError_csr);
431
        dut->ui_receivedTargetAbort_csr(ui_receivedTargetAbort_csr);
432
        dut->ui_receivedMasterAbort_csr(ui_receivedMasterAbort_csr);
433
 
434
        dut->usr_receivedResponseError_csr(usr_receivedResponseError_csr);
435
 
436
        dut->db0_overflow_csr(db0_overflow_csr);
437
        dut->ro0_overflow_csr(ro0_overflow_csr);
438
        dut->db1_overflow_csr(db1_overflow_csr);
439
        dut->ro1_overflow_csr(ro1_overflow_csr);
440
        dut->eh0_ack_ro0(eh0_ack_ro0);
441
        dut->eh1_ack_ro1(eh1_ack_ro1);
442
 
443
        dut->lk0_initialization_complete_csr(lk0_initialization_complete_csr);
444
#ifdef RETRY_MODE_ENABLED
445
        dut->lk0_initiate_retry_disconnect(lk0_initiate_retry_disconnect);
446
#endif
447
        dut->lk0_crc_error_csr(lk0_crc_error_csr);
448
        dut->lk0_protocol_error_csr(lk0_protocol_error_csr);
449
        dut->lk1_initialization_complete_csr(lk1_initialization_complete_csr);
450
#ifdef RETRY_MODE_ENABLED
451
        dut->lk1_initiate_retry_disconnect(lk1_initiate_retry_disconnect);
452
#endif
453
        dut->lk1_crc_error_csr(lk1_crc_error_csr);
454
        dut->lk1_protocol_error_csr(lk1_protocol_error_csr);
455
        dut->cd0_protocol_error_csr(cd0_protocol_error_csr);
456
        dut->cd0_sync_detected_csr(cd0_sync_detected_csr);
457
        dut->cd1_protocol_error_csr(cd1_protocol_error_csr);
458
#ifdef RETRY_MODE_ENABLED
459
        dut->cd0_initiate_retry_disconnect(cd0_initiate_retry_disconnect);
460
        dut->cd0_received_stomped_csr(cd0_received_stomped_csr);
461
        dut->cd1_initiate_retry_disconnect(cd1_initiate_retry_disconnect);
462
        dut->cd1_received_stomped_csr(cd1_received_stomped_csr);
463
#endif
464
 
465
        dut->cd1_sync_detected_csr(cd1_sync_detected_csr);
466
        dut->lk0_update_link_failure_property_csr(lk0_update_link_failure_property_csr);
467
        dut->lk0_update_link_width_csr(lk0_update_link_width_csr);
468
        dut->lk0_sampled_link_width_csr(lk0_sampled_link_width_csr);
469
        dut->lk0_link_failure_csr(lk0_link_failure_csr);
470
 
471
        dut->fc0_clear_single_error_csr(fc0_clear_single_error_csr);
472
        dut->fc0_clear_single_stomp_csr(fc0_clear_single_stomp_csr);
473
 
474
 
475
        dut->lk1_update_link_failure_property_csr(lk1_update_link_failure_property_csr);
476
        dut->lk1_update_link_width_csr(lk1_update_link_width_csr);
477
        dut->lk1_sampled_link_width_csr(lk1_sampled_link_width_csr);
478
        dut->lk1_link_failure_csr(lk1_link_failure_csr);
479
        dut->fc1_clear_single_error_csr(fc1_clear_single_error_csr);
480
        dut->fc1_clear_single_stomp_csr(fc1_clear_single_stomp_csr);
481
        dut->csr_io_space_enable(csr_io_space_enable);
482
        dut->csr_memory_space_enable(csr_memory_space_enable);
483
        dut->csr_bus_master_enable(csr_bus_master_enable);
484
        dut->csr_master_host(csr_master_host);
485
        for(int n = 0; n < NbRegsBars; n++)
486
                dut->csr_bar[n](csr_bar[n]);
487
        dut->csr_unit_id(csr_unit_id);
488
        dut->csr_default_dir(csr_default_dir);
489
        dut->csr_drop_uninit_link(csr_drop_uninit_link);
490
        dut->csr_crc_force_error_lk0(csr_crc_force_error_lk0);
491
        dut->csr_end_of_chain0(csr_end_of_chain0);
492
        dut->csr_transmitter_off_lk0(csr_transmitter_off_lk0);
493
        dut->csr_ldtstop_tristate_enable_lk0(csr_ldtstop_tristate_enable_lk0);
494
        dut->csr_extented_ctl_lk0(csr_extented_ctl_lk0);
495
        dut->csr_rx_link_width_lk0(csr_rx_link_width_lk0);
496
        dut->csr_tx_link_width_lk0(csr_tx_link_width_lk0);
497
        dut->csr_crc_force_error_lk1(csr_crc_force_error_lk1);
498
        dut->csr_end_of_chain1(csr_end_of_chain1);
499
        dut->csr_transmitter_off_lk1(csr_transmitter_off_lk1);
500
        dut->csr_ldtstop_tristate_enable_lk1(csr_ldtstop_tristate_enable_lk1);
501
        dut->csr_extented_ctl_lk1(csr_extented_ctl_lk1);
502
        dut->csr_rx_link_width_lk1(csr_rx_link_width_lk1);
503
        dut->csr_tx_link_width_lk1(csr_tx_link_width_lk1);
504
        dut->csr_extended_ctl_timeout_lk0(csr_extended_ctl_timeout_lk0);
505
#ifdef ENABLE_REORDERING
506
        dut->csr_unitid_reorder_disable(csr_unitid_reorder_disable);
507
#endif
508
        dut->csr_extended_ctl_timeout_lk1(csr_extended_ctl_timeout_lk1);
509
#ifdef RETRY_MODE_ENABLED
510
        dut->csr_retry0(csr_retry0);
511
        dut->csr_force_single_error_fc0(csr_force_single_error_fc0);
512
        dut->csr_force_single_stomp_fc0(csr_force_single_stomp_fc0);
513
        dut->csr_retry1(csr_retry1);
514
        dut->csr_force_single_error_fc1(csr_force_single_error_fc1);
515
        dut->csr_force_single_stomp_fc1(csr_force_single_stomp_fc1);
516
#endif
517
        dut->csr_direct_route_enable(csr_direct_route_enable);
518
        dut->csr_clumping_configuration(csr_clumping_configuration);
519
        for(int n = 0; n < DirectRoute_NumberDirectRouteSpaces; n++){
520
                dut->csr_direct_route_oppposite_dir[n](csr_direct_route_oppposite_dir[n]);
521
                dut->csr_direct_route_base[n](csr_direct_route_base[n]);
522
                dut->csr_direct_route_limit[n](csr_direct_route_limit[n]);
523
        }
524
        dut->csr_initcomplete0(csr_initcomplete0);
525
        dut->csr_initcomplete1(csr_initcomplete1);
526
 
527
        dut->csr_read_addr_usr(csr_read_addr_usr);
528
        dut->usr_read_data_csr(usr_read_data_csr);
529
        dut->csr_write_usr(csr_write_usr);
530
        dut->csr_write_addr_usr(csr_write_addr_usr);
531
        dut->csr_write_data_usr(csr_write_data_usr);
532
        dut->csr_write_mask_usr(csr_write_mask_usr);
533
 
534
        ////////////////////////////////////////////////////////////////
535
        ////////////////////////////////////////////////////////////////
536
        //  CSR TB connections
537
        ////////////////////////////////////////////////////////////////
538
        ////////////////////////////////////////////////////////////////
539
 
540
        tb->clk(clk);
541
        tb->resetx(resetx);
542
        tb->pwrok(pwrok);
543
        tb->ldtstopx(ldtstopx);
544
        tb->csr_sync(csr_sync);
545
        tb->csr_request_databuffer0_access_ui(csr_request_databuffer0_access_ui);
546
        tb->csr_request_databuffer1_access_ui(csr_request_databuffer1_access_ui);
547
        tb->ui_databuffer_access_granted_csr(ui_databuffer_access_granted_csr);
548
 
549
        tb->ro0_available_csr(ro0_available_csr);
550
        tb->ro0_packet_csr(ro0_packet_csr);
551
        tb->csr_ack_ro0(csr_ack_ro0);
552
 
553
        tb->ro1_available_csr(ro1_available_csr);
554
        tb->ro1_packet_csr(ro1_packet_csr);
555
        tb->csr_ack_ro1(csr_ack_ro1);
556
 
557
        tb->csr_read_db0(csr_read_db0);
558
        tb->csr_read_db1(csr_read_db1);
559
 
560
        tb->csr_address_db0(csr_address_db0);
561
        tb->csr_address_db1(csr_address_db1);
562
 
563
        tb->csr_vctype_db0(csr_vctype_db0);
564
        tb->csr_vctype_db1(csr_vctype_db1);
565
 
566
        tb->db0_data_csr(db0_data_csr);
567
        tb->db1_data_csr(db1_data_csr);
568
        tb->csr_erase_db0(csr_erase_db0);
569
        tb->csr_erase_db1(csr_erase_db1);
570
        tb->csr_available_fc0(csr_available_fc0);
571
        tb->csr_dword_fc0(csr_dword_fc0);
572
        tb->fc0_ack_csr(fc0_ack_csr);
573
 
574
 
575
        tb->csr_available_fc1(csr_available_fc1);
576
        tb->csr_dword_fc1(csr_dword_fc1);
577
        tb->fc1_ack_csr(fc1_ack_csr);
578
 
579
        ////////////////////////////////////////////////////////////////
580
        ////////////////////////////////////////////////////////////////
581
        //  Trace signals
582
        ////////////////////////////////////////////////////////////////
583
        ////////////////////////////////////////////////////////////////
584
 
585
        sc_trace_file *tf = sc_create_vcd_trace_file("sim_csr_l2");
586
 
587
        sc_trace(tf,clk,"clk");
588
        sc_trace(tf,resetx,"resetx");
589
        sc_trace(tf,pwrok,"pwrok");
590
        sc_trace(tf,ldtstopx,"ldtstopx");
591
        sc_trace(tf,csr_sync,"csr_sync");
592
        sc_trace(tf,csr_request_databuffer0_access_ui,"csr_request_databuffer0_access_ui");
593
        sc_trace(tf,csr_request_databuffer1_access_ui,"csr_request_databuffer1_access_ui");
594
        sc_trace(tf,ui_databuffer_access_granted_csr,"ui_databuffer_access_granted_csr");
595
 
596
        sc_trace(tf,ro0_available_csr,"ro0_available_csr");
597
        sc_trace(tf,ro0_packet_csr,"ro0_packet_csr");
598
        sc_trace(tf,csr_ack_ro0,"csr_ack_ro0");
599
 
600
        sc_trace(tf,ro1_available_csr,"ro1_available_csr");
601
        sc_trace(tf,ro1_packet_csr,"ro1_packet_csr");
602
        sc_trace(tf,csr_ack_ro1,"csr_ack_ro1");
603
 
604
        sc_trace(tf,csr_read_db0,"csr_read_db0");
605
        sc_trace(tf,csr_read_db1,"csr_read_db1");
606
 
607
        sc_trace(tf,csr_address_db0,"csr_address_db0");
608
        sc_trace(tf,csr_address_db1,"csr_address_db1");
609
 
610
        sc_trace(tf,csr_vctype_db0,"csr_vctype_db0");
611
        sc_trace(tf,csr_vctype_db1,"csr_vctype_db1");
612
 
613
        sc_trace(tf,db0_data_csr,"db0_data_csr");
614
        sc_trace(tf,db1_data_csr,"db1_data_csr");
615
        sc_trace(tf,csr_erase_db0,"csr_erase_db0");
616
        sc_trace(tf,csr_erase_db1,"csr_erase_db1");
617
        sc_trace(tf,csr_available_fc0,"csr_available_fc0");
618
        sc_trace(tf,csr_dword_fc0,"csr_dword_fc0");
619
        sc_trace(tf,fc0_ack_csr,"fc0_ack_csr");
620
 
621
 
622
        sc_trace(tf,csr_available_fc1,"csr_available_fc1");
623
        sc_trace(tf,csr_dword_fc1,"csr_dword_fc1");
624
 
625
        sc_trace(tf,dut->config_registers[19],"bar0(31..24)");
626
        sc_trace(tf,dut->config_registers[18],"bar0(23..16)");
627
        sc_trace(tf,dut->config_registers[17],"bar0(15..8)");
628
        sc_trace(tf,dut->config_registers[16],"bar0(7..0)");
629
 
630
        sc_trace(tf,dut->config_registers[23],"bar1(31..24)");
631
        sc_trace(tf,dut->config_registers[22],"bar1(23..16)");
632
        sc_trace(tf,dut->config_registers[21],"bar1(15..8)");
633
        sc_trace(tf,dut->config_registers[20],"bar1(7..0)");
634
 
635
        sc_trace(tf,dut->config_registers[27],"bar2(31..24)");
636
        sc_trace(tf,dut->config_registers[26],"bar2(23..16)");
637
        sc_trace(tf,dut->config_registers[25],"bar2(15..8)");
638
        sc_trace(tf,dut->config_registers[24],"bar2(7..0)");
639
 
640
        sc_trace(tf,dut->config_registers[31],"bar3(31..24)");
641
        sc_trace(tf,dut->config_registers[30],"bar3(23..16)");
642
        sc_trace(tf,dut->config_registers[29],"bar3(15..8)");
643
        sc_trace(tf,dut->config_registers[28],"bar3(7..0)");
644
 
645
        //------------------------------------------
646
        // Start simulation
647
        //------------------------------------------
648
        cout << "Start of simulation" << endl;
649
        sc_start(60);
650
 
651
 
652
        sc_close_vcd_trace_file(tf);
653
        cout << "End of simulation" << endl;
654
 
655
        delete dut;
656
        delete tb;
657
        return 0;
658
}
659
 

powered by: WebSVN 2.1.0

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