OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [ip/] [NoC/] [ni_master.IP] - Blame information for rev 43

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

Line No. Rev Author Line
1 34 alirezamon
#######################################################################
2
##      File: ni_master.IP
3
##
4
##      Copyright (C) 2014-2016  Alireza Monemi
5
##
6 42 alirezamon
##      This file is part of ProNoC 1.8.1
7 34 alirezamon
##
8
##      WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
9
##      MAY CAUSE UNEXPECTED BEHAIVOR.
10
################################################################################
11
 
12 38 alirezamon
$ipgen = bless( {
13 42 alirezamon
                  'ports' => {
14 43 alirezamon
                               'm_send_dat_i' => {
15
                                                   'range' => 'Dw-1           :  0',
16
                                                   'type' => 'input',
17
                                                   'intfc_port' => 'dat_i',
18 42 alirezamon
                                                   'intfc_name' => 'plug:wb_master[0]'
19
                                                 },
20 43 alirezamon
                               's_addr_i' => {
21
                                               'intfc_port' => 'adr_i',
22
                                               'intfc_name' => 'plug:wb_slave[0]',
23
                                               'range' => 'S_Aw-1     :   0',
24
                                               'type' => 'input'
25
                                             },
26
                               'm_receive_sel_o' => {
27 42 alirezamon
                                                      'type' => 'output',
28 43 alirezamon
                                                      'range' => 'SELw-1          :   0',
29
                                                      'intfc_name' => 'plug:wb_master[1]',
30
                                                      'intfc_port' => 'sel_o'
31 42 alirezamon
                                                    },
32 43 alirezamon
                               'flit_in_wr' => {
33
                                                 'type' => 'input',
34
                                                 'range' => '',
35
                                                 'intfc_name' => 'socket:ni[0]',
36
                                                 'intfc_port' => 'flit_in_wr'
37
                                               },
38 42 alirezamon
                               'm_send_stb_o' => {
39 43 alirezamon
                                                   'range' => '',
40
                                                   'type' => 'output',
41 42 alirezamon
                                                   'intfc_port' => 'stb_o',
42
                                                   'intfc_name' => 'plug:wb_master[0]'
43
                                                 },
44 43 alirezamon
                               'clk' => {
45
                                          'intfc_port' => 'clk_i',
46
                                          'intfc_name' => 'plug:clk[0]',
47
                                          'range' => '',
48
                                          'type' => 'input'
49
                                        },
50
                               's_sel_i' => {
51
                                              'intfc_name' => 'plug:wb_slave[0]',
52
                                              'intfc_port' => 'sel_i',
53
                                              'type' => 'input',
54
                                              'range' => 'SELw-1     :   0'
55 42 alirezamon
                                            },
56 43 alirezamon
                               's_cyc_i' => {
57
                                              'intfc_name' => 'plug:wb_slave[0]',
58
                                              'intfc_port' => 'cyc_i',
59
                                              'type' => 'input',
60
                                              'range' => ''
61
                                            },
62
                               'm_receive_ack_i' => {
63
                                                      'intfc_name' => 'plug:wb_master[1]',
64
                                                      'intfc_port' => 'ack_i',
65
                                                      'type' => 'input',
66
                                                      'range' => ''
67
                                                    },
68
                               's_ack_o' => {
69
                                              'intfc_port' => 'ack_o',
70
                                              'intfc_name' => 'plug:wb_slave[0]',
71
                                              'range' => '',
72
                                              'type' => 'output'
73
                                            },
74 42 alirezamon
                               'reset' => {
75
                                            'range' => '',
76 43 alirezamon
                                            'type' => 'input',
77 42 alirezamon
                                            'intfc_port' => 'reset_i',
78 43 alirezamon
                                            'intfc_name' => 'plug:reset[0]'
79 42 alirezamon
                                          },
80 43 alirezamon
                               's_dat_i' => {
81
                                              'intfc_port' => 'dat_i',
82
                                              'intfc_name' => 'plug:wb_slave[0]',
83
                                              'range' => 'Dw-1       :   0',
84
                                              'type' => 'input'
85
                                            },
86
                               'm_send_ack_i' => {
87
                                                   'intfc_port' => 'ack_i',
88
                                                   'intfc_name' => 'plug:wb_master[0]',
89
                                                   'range' => '',
90
                                                   'type' => 'input'
91
                                                 },
92
                               'm_receive_cti_o' => {
93
                                                      'range' => 'TAGw-1          :   0',
94
                                                      'type' => 'output',
95
                                                      'intfc_port' => 'cti_o',
96
                                                      'intfc_name' => 'plug:wb_master[1]'
97
                                                    },
98
                               'irq' => {
99
                                          'intfc_port' => 'int_o',
100
                                          'intfc_name' => 'plug:interrupt_peripheral[0]',
101
                                          'range' => '',
102
                                          'type' => 'output'
103
                                        },
104
                               'flit_out_wr' => {
105
                                                  'range' => '',
106
                                                  'type' => 'output',
107
                                                  'intfc_port' => 'flit_out_wr',
108
                                                  'intfc_name' => 'socket:ni[0]'
109
                                                },
110
                               'credit_out' => {
111
                                                 'intfc_name' => 'socket:ni[0]',
112
                                                 'intfc_port' => 'credit_out',
113
                                                 'type' => 'output',
114
                                                 'range' => 'V-1    :   0'
115
                                               },
116 42 alirezamon
                               's_dat_o' => {
117 43 alirezamon
                                              'range' => 'Dw-1       :   0',
118 42 alirezamon
                                              'type' => 'output',
119
                                              'intfc_port' => 'dat_o',
120
                                              'intfc_name' => 'plug:wb_slave[0]'
121
                                            },
122 43 alirezamon
                               'flit_in' => {
123
                                              'type' => 'input',
124
                                              'range' => 'Fw-1   :   0',
125
                                              'intfc_name' => 'socket:ni[0]',
126
                                              'intfc_port' => 'flit_in'
127
                                            },
128 42 alirezamon
                               's_stb_i' => {
129 43 alirezamon
                                              'intfc_name' => 'plug:wb_slave[0]',
130 42 alirezamon
                                              'intfc_port' => 'stb_i',
131
                                              'type' => 'input',
132
                                              'range' => ''
133
                                            },
134 43 alirezamon
                               'current_r_addr' => {
135
                                                     'intfc_port' => 'current_r_addr',
136
                                                     'intfc_name' => 'socket:ni[0]',
137
                                                     'range' => 'RAw-1   :   0',
138
                                                     'type' => 'input'
139
                                                   },
140
                               'm_send_addr_o' => {
141
                                                    'type' => 'output',
142
                                                    'range' => 'M_Aw-1          :   0',
143
                                                    'intfc_name' => 'plug:wb_master[0]',
144
                                                    'intfc_port' => 'adr_o'
145
                                                  },
146
                               'm_send_sel_o' => {
147
                                                   'type' => 'output',
148
                                                   'range' => 'SELw-1          :   0',
149
                                                   'intfc_name' => 'plug:wb_master[0]',
150
                                                   'intfc_port' => 'sel_o'
151
                                                 },
152 42 alirezamon
                               'm_receive_we_o' => {
153
                                                     'type' => 'output',
154
                                                     'range' => '',
155 43 alirezamon
                                                     'intfc_name' => 'plug:wb_master[1]',
156
                                                     'intfc_port' => 'we_o'
157 42 alirezamon
                                                   },
158 43 alirezamon
                               'm_receive_cyc_o' => {
159
                                                      'intfc_name' => 'plug:wb_master[1]',
160
                                                      'intfc_port' => 'cyc_o',
161
                                                      'type' => 'output',
162
                                                      'range' => ''
163
                                                    },
164
                               'm_receive_dat_o' => {
165
                                                      'range' => 'Dw-1            :   0',
166
                                                      'type' => 'output',
167
                                                      'intfc_port' => 'dat_o',
168
                                                      'intfc_name' => 'plug:wb_master[1]'
169
                                                    },
170
                               'm_send_cti_o' => {
171
                                                   'type' => 'output',
172
                                                   'range' => 'TAGw-1          :   0',
173
                                                   'intfc_name' => 'plug:wb_master[0]',
174
                                                   'intfc_port' => 'cti_o'
175 42 alirezamon
                                                 },
176
                               'm_send_we_o' => {
177
                                                  'intfc_name' => 'plug:wb_master[0]',
178 43 alirezamon
                                                  'intfc_port' => 'we_o',
179 42 alirezamon
                                                  'type' => 'output',
180 43 alirezamon
                                                  'range' => ''
181 42 alirezamon
                                                },
182 43 alirezamon
                               's_cti_i' => {
183
                                              'range' => 'TAGw-1     :   0',
184
                                              'type' => 'input',
185
                                              'intfc_port' => 'cti_i',
186
                                              'intfc_name' => 'plug:wb_slave[0]'
187
                                            },
188 42 alirezamon
                               'flit_out' => {
189 43 alirezamon
                                               'range' => 'Fw-1   :   0',
190
                                               'type' => 'output',
191 42 alirezamon
                                               'intfc_port' => 'flit_out',
192 43 alirezamon
                                               'intfc_name' => 'socket:ni[0]'
193 38 alirezamon
                                             },
194 43 alirezamon
                               's_we_i' => {
195
                                             'intfc_name' => 'plug:wb_slave[0]',
196
                                             'intfc_port' => 'we_i',
197
                                             'type' => 'input',
198
                                             'range' => ''
199
                                           },
200
                               'current_e_addr' => {
201
                                                     'intfc_name' => 'socket:ni[0]',
202
                                                     'intfc_port' => 'current_e_addr',
203
                                                     'type' => 'input',
204
                                                     'range' => 'EAw-1   :   0'
205
                                                   },
206 42 alirezamon
                               'm_receive_stb_o' => {
207
                                                      'intfc_port' => 'stb_o',
208 43 alirezamon
                                                      'intfc_name' => 'plug:wb_master[1]',
209 42 alirezamon
                                                      'range' => '',
210 43 alirezamon
                                                      'type' => 'output'
211 42 alirezamon
                                                    },
212
                               'm_send_cyc_o' => {
213
                                                   'type' => 'output',
214
                                                   'range' => '',
215 43 alirezamon
                                                   'intfc_name' => 'plug:wb_master[0]',
216
                                                   'intfc_port' => 'cyc_o'
217 42 alirezamon
                                                 },
218
                               'credit_in' => {
219
                                                'intfc_port' => 'credit_in',
220
                                                'intfc_name' => 'socket:ni[0]',
221 43 alirezamon
                                                'range' => 'V-1    :   0',
222
                                                'type' => 'input'
223
                                              },
224
                               'm_receive_addr_o' => {
225
                                                       'range' => 'M_Aw-1          :   0',
226
                                                       'type' => 'output',
227
                                                       'intfc_port' => 'adr_o',
228
                                                       'intfc_name' => 'plug:wb_master[1]'
229
                                                     }
230 38 alirezamon
                             },
231 42 alirezamon
                  'parameters_order' => [
232
                                          'TOPOLOGY',
233
                                          'ROUTE_NAME',
234 43 alirezamon
                                          'T1',
235
                                          'T2',
236
                                          'T3',
237 42 alirezamon
                                          'C',
238
                                          'V',
239
                                          'B',
240
                                          'Fpay',
241
                                          'MAX_TRANSACTION_WIDTH',
242
                                          'MAX_BURST_SIZE',
243
                                          'DEBUG_EN',
244
                                          'Dw',
245
                                          'S_Aw',
246
                                          'M_Aw',
247
                                          'TAGw',
248
                                          'SELw',
249
                                          'Fw',
250 43 alirezamon
                                          'CRC_EN',
251
                                          'RAw',
252
                                          'EAw'
253 42 alirezamon
                                        ],
254 43 alirezamon
                  'description_pdf' => '/mpsoc/src_peripheral/ni/NI.pdf',
255
                  'system_v' => '`define INCLUDE_TOPOLOGY_LOCALPARAM
256
    `include "topology_localparam.v"',
257
                  'modules' => {
258
                                 'header_flit_generator' => {},
259
                                 'ni_master' => {},
260
                                 'ni_vc_dma' => {},
261
                                 'vc_wb_slave_registers' => {},
262
                                 'ovc_status' => {}
263
                               },
264
                  'category' => 'NoC',
265
                  'system_h' => '#include 
266
#include "../phy_addr.h"
267
 
268
/*          NI wb registers addresses
269 42 alirezamon
 
270 43 alirezamon
            1   :   STATUS2_WB_ADDR           // status2:  {send_enable_binary,receive_enable_binary,vc_got_error,aT2_error_isr,got_pck_isr, save_done_isr,send_done_isr,aT2_error_int_en,got_pck_int_en, save_done_int_en,send_done_int_en};
271 34 alirezamon
            2   :   BURST_SIZE_WB_ADDR       // The busrt size in words
272
 
273
            3   :   SEND_DATA_SIZE_WB_ADDR,  // The size of data to be sent in byte
274
            4   :   SEND_STRT_WB_ADDR,       // The address of data to be sent   in byte
275
            5   :   SEND_DEST_WB_ADDR        // The destination router address
276
            6   :   SEND_CTRL_WB_ADDR
277
 
278
            7   :   RECEIVE_DATA_SIZE_WB_ADDR // The size of recieved data in byte
279
            8   :   RECEIVE_STRT_WB_ADDR      // The address pointer of reciever memory in byte
280
            9   :   RECEIVE_SRC_WB_ADDR       // The source router (the router which is sent this packet).
281
            10  :   RECEIVE_CTRL_WB_ADDR      // The NI reciever control register
282
            11  :   RECEIVE_MAX_BUFF_SIZ      // The receiver\'s  allocated buffer size in words. If the packet size is bigger tha the buffer size the rest of will be discarred
283 42 alirezamon
            12  :   ERROR_FLAGS // errors:  {crc_miss_match,burst_size_error,send_data_size_error,rcive_buff_ovrflw_err};
284 34 alirezamon
 
285
*/
286 43 alirezamon
#define COREID  ${CORE_ID}
287
#define CORE_PHY_ADDR   PHY_ADDR_ENDP_${CORE_ID}
288 34 alirezamon
 
289
 
290
#define ${IP}_STATUS1_REG   (*((volatile unsigned int *) ($BASE)))   //0
291
#define ${IP}_STATUS2_REG   (*((volatile unsigned int *) ($BASE+4)))   //1
292
#define ${IP}_BURST_SIZE_REG  (*((volatile unsigned int *) ($BASE+8))) //2
293
 
294
 
295
#define ${IP}_NUM_VCs   ${V}
296
 
297
#define ${IP}_SEND_DATA_SIZE_REG(v)  (*((volatile unsigned int *) ($BASE+12+(v<<6))))  //3
298
#define ${IP}_SEND_START_ADDR_REG(v)   (*((volatile unsigned int *) ($BASE+16+(v<<6))))  //4
299
#define ${IP}_SEND_DEST_REG(v)   (*((volatile unsigned int *) ($BASE+20+(v<<6)))) //5
300
#define ${IP}_SEND_CTRL_REG(v)    (*((volatile unsigned int *) ($BASE+24+(v<<6)))) //6
301
 
302
#define ${IP}_RECEIVE_DATA_SIZE_REG(v)  (*((volatile unsigned int *) ($BASE+28+(v<<6)))) //7
303
#define ${IP}_RECEIVE_STRT_ADDR_REG(v)   (*((volatile unsigned int *) ($BASE+32+(v<<6)))) //8
304 42 alirezamon
#define ${IP}_RECEIVE_SRC_REG(v)    (*((volatile unsigned int *) ($BASE+36+(v<<6))))  //9
305
#define ${IP}_RECEIVE_CTRL_REG(v)    (*((volatile unsigned int *) ($BASE+40+(v<<6)))) //10
306
#define ${IP}_RECEIVE_MAX_BUFF_SIZ_REG(v)    (*((volatile unsigned int *) ($BASE+44+(v<<6)))) //11
307
#define ${IP}_ERROR_FLAGS_REG(v)    (*((volatile unsigned int *) ($BASE+48+(v<<6)))) //12
308 34 alirezamon
 
309
 
310
 
311
// assign status1= {send_vc_is_busy,receive_vc_is_busy,receive_vc_packet_is_saved,receive_vc_got_packet};
312 43 alirezamon
// assign status2= {send_enable_binary,receive_enable_binary,vc_got_error,aT2_error_isr,got_pck_isr, save_done_isr,send_done_isr,aT2_error_int_en,got_pck_int_en, save_done_int_en,send_done_int_en};
313 34 alirezamon
 
314
 
315
#define ${IP}_got_packet(v)     ((${IP}_STATUS1_REG >> (v)) & 0x1)
316
#define ${IP}_packet_is_saved(v) ((${IP}_STATUS1_REG >> (${V}+v)) & 0x1)
317
#define ${IP}_receive_is_busy(v)        ((${IP}_STATUS1_REG >> (2*${V}+v)) & 0x1)
318
#define ${IP}_send_is_busy(v)   ((${IP}_STATUS1_REG >> (3*${V}+v)) & 0x1)
319 43 alirezamon
#define ${IP}_got_aT2_error(v)  ((${IP}_STATUS2_REG >> (8+v)) & 0x1)
320 34 alirezamon
 
321 42 alirezamon
#define SEND_DONE_INT_EN  (1<<0)
322
#define SAVE_DONE_INT_EN  (1<<1)
323
#define GOT_PCK_INT_EN  (1<<2)
324
#define ERRORS_INT_EN  (1<<3)
325
#define ALL_INT_EN  (SEND_DONE_INT_EN | SAVE_DONE_INT_EN | GOT_PCK_INT_EN  | ERRORS_INT_EN)
326 34 alirezamon
 
327 42 alirezamon
#define SEND_DONE_ISR (1<<4)
328
#define SAVE_DONE_ISR (1<<5)
329
#define GOT_PCK_ISR (1<<6)
330
#define ERRORS_ISR (1<<7)
331 34 alirezamon
 
332 42 alirezamon
 
333
 
334
//errors = {crc_miss_match,illegal_send_req,burst_size_error,send_data_size_error,rcive_buff_ovrflw_err};
335
#define BUFF_OVER_FLOW_ERR  (1<<0)  // This error happens when the receiver allocated buffer size is smaller than the received packet size
336
#define SEND_DATA_SIZE_ERR  (1<<1)  // This error happens when the send data size is not set
337
#define BURST_SIZE_ERR      (1<<2)  // This error happens when the burst size is not set
338
#define ILLEGAL_SEND_REQ    (1<<3)  // This error happens when a new send request is received while the DMA is still busy sending previous packet
339
#define CRC_MISS_MATCH      (1<<4)  // This error happens when the received packet CRC miss match
340
 
341
//ack intrrupts functions
342
#define ${IP}_ack_send_done_isr()  (${IP}_STATUS2_REG &= (ALL_INT_EN |SEND_DONE_ISR))
343
#define ${IP}_ack_save_done_isr()  (${IP}_STATUS2_REG &= (ALL_INT_EN | SAVE_DONE_ISR))
344
#define ${IP}_ack_got_pck_isr()    (${IP}_STATUS2_REG &= (ALL_INT_EN | GOT_PCK_ISR))
345
#define ${IP}_ack_errors_isr()    (${IP}_STATUS2_REG &= (ALL_INT_EN | ERRORS_ISR))
346
 
347
#define ${IP}_ack_all_isr()  (${IP}_STATUS2_REG = ${IP}_STATUS2_REG)
348
 
349
 
350
struct SRC_INFOS{
351
        unsigned char r; // reserved
352
        unsigned char c;  // message  class
353 43 alirezamon
        int16_t addr; // phy_addr
354 42 alirezamon
} ;
355
 
356
inline struct SRC_INFOS get_src_info(unsigned char v){
357
        struct SRC_INFOS  src_info =*(struct SRC_INFOS *) (&ni_RECEIVE_SRC_REG(v));
358
        return  src_info;
359
}
360
 
361
/*
362
        The NI initializing function.
363
        The burst_size must be  <= $MAX_BURST_SIZE
364
        send_int_en :1: enable the intrrupt when a packet is sent 0 : This intrrupt is disabled
365
        save_int_en : 1: enable the intrrupt when a recived packet is saved on internal buffer  0 : This intrrupt is disabled
366
        got_pck_int_en : 1: enable the intrrupt when a packet is recived in NI. 0 : This intrrupt is disabled
367
 
368
*/
369
void ${IP}_initial (unsigned int burst_size, unsigned char errors_int_en, unsigned char send_int_en, unsigned char save_int_en, unsigned char got_pck_int_en) {
370
        ${IP}_BURST_SIZE_REG  =  burst_size;
371
        if(errors_int_en) ${IP}_STATUS2_REG |= ERRORS_INT_EN;
372
        if(send_int_en) ${IP}_STATUS2_REG |= SEND_DONE_INT_EN;
373
        if(save_int_en) ${IP}_STATUS2_REG |= SAVE_DONE_INT_EN;
374
        if(got_pck_int_en) ${IP}_STATUS2_REG |= GOT_PCK_INT_EN;
375 34 alirezamon
}
376
 
377 42 alirezamon
/*
378
        The NI message sent function:
379
        v: virtual channel number which this packet should be sent to
380
        class_num: message class number. Diffrent message classes can be sent via isolated network resources to avoid protocol deadlock
381
        data_start_addr : The address pointer to the start location of the packet to be sent in the memory
382
        data_size: the message data size in words
383 43 alirezamon
        dest_phy_addr: the destination endpoint physical address. check phy_adr.h file for knowing each endpoint physical address
384 34 alirezamon
 
385 42 alirezamon
*/
386
 
387 43 alirezamon
void ${IP}_transfer (unsigned int init_weight, unsigned int v, unsigned int class_num, unsigned int data_start_addr,  unsigned int data_size, unsigned int dest_phy_addr){
388 34 alirezamon
         while (${IP}_send_is_busy(v)); // wait until VC is busy sending previous packet
389
 
390
        ${IP}_SEND_DATA_SIZE_REG(v)  = data_size;
391
        ${IP}_SEND_START_ADDR_REG(v)  = data_start_addr;
392 43 alirezamon
        ${IP}_SEND_DEST_REG(v)   = dest_phy_addr | (class_num<<16) | (init_weight<<24);
393 34 alirezamon
 
394
}
395
 
396 42 alirezamon
/*
397
        The NI message receiver function:
398
        v: virtual channel number of the received packet
399
        data_start_addr : The address pointer to the start location of the memory where the newly arrived packet must be stored by NI in.
400
        max_buffer_size : The allocated receive-memory buffer size in words.
401
*/
402
 
403 34 alirezamon
void ${IP}_receive (unsigned int v, unsigned int data_start_addr,  unsigned int max_buffer_size){
404
         while (${IP}_receive_is_busy(v)); // wait until VC is busy saving previous packet
405
 
406
        ${IP}_RECEIVE_STRT_ADDR_REG(v)  = data_start_addr;
407
        ${IP}_RECEIVE_MAX_BUFF_SIZ_REG(v) = max_buffer_size;
408
        ${IP}_RECEIVE_CTRL_REG(v)   = 1;
409
 
410
 
411
}',
412 43 alirezamon
                  'parameters' => {
413
                                    'ROUTE_NAME' => {
414
                                                      'global_param' => 'Parameter',
415
                                                      'type' => 'Fixed',
416
                                                      'default' => '"XY"   ',
417
                                                      'redefine_param' => 1,
418
                                                      'content' => '',
419
                                                      'info' => 'Parameter'
420
                                                    },
421
                                    'Fpay' => {
422
                                                'global_param' => 'Parameter',
423
                                                'type' => 'Fixed',
424
                                                'default' => ' 32',
425
                                                'redefine_param' => 1,
426
                                                'content' => '',
427
                                                'info' => 'Parameter'
428
                                              },
429
                                    'TAGw' => {
430
                                                'default' => '3',
431
                                                'global_param' => 'Localparam',
432
                                                'type' => 'Fixed',
433
                                                'content' => '',
434
                                                'info' => 'Parameter',
435
                                                'redefine_param' => 1
436
                                              },
437
                                    'S_Aw' => {
438
                                                'content' => '',
439
                                                'info' => 'Parameter',
440
                                                'redefine_param' => 1,
441
                                                'default' => '8',
442
                                                'global_param' => 'Localparam',
443
                                                'type' => 'Fixed'
444
                                              },
445
                                    'T3' => {
446
                                              'type' => 'Fixed',
447
                                              'global_param' => 'Parameter',
448
                                              'default' => '1',
449
                                              'redefine_param' => 1,
450
                                              'info' => 'Parameter',
451
                                              'content' => ''
452
                                            },
453
                                    'MAX_BURST_SIZE' => {
454
                                                          'content' => '2,4,8,16,32,64,128,256,512,1024,2048',
455
                                                          'info' => 'Maximum burst size in words.
456
The NI releases the wishbone bus  each time one burst is completed or when the VC\'s internal FIFO becomes full.  The bus will be released for one clock cycle. Then in case, there are other active VCs, another active VC will get access to the bus using round robin arbiter.  This process will be continued until all of the desired data is transferred. ',
457
                                                          'redefine_param' => 1,
458
                                                          'default' => '16',
459
                                                          'global_param' => 'Localparam',
460
                                                          'type' => 'Combo-box'
461
                                                        },
462
                                    'M_Aw' => {
463
                                                'global_param' => 'Localparam',
464
                                                'type' => 'Fixed',
465
                                                'default' => '32',
466
                                                'redefine_param' => 1,
467
                                                'content' => 'Dw',
468
                                                'info' => 'Parameter'
469
                                              },
470
                                    'DEBUG_EN' => {
471
                                                    'info' => 'Parameter',
472
                                                    'content' => '',
473
                                                    'redefine_param' => 1,
474
                                                    'default' => ' 1',
475
                                                    'type' => 'Fixed',
476
                                                    'global_param' => 'Parameter'
477
                                                  },
478
                                    'SELw' => {
479
                                                'info' => 'Parameter',
480
                                                'content' => '',
481
                                                'redefine_param' => 1,
482
                                                'default' => '4',
483
                                                'type' => 'Fixed',
484
                                                'global_param' => 'Localparam'
485
                                              },
486
                                    'Dw' => {
487
                                              'global_param' => 'Localparam',
488
                                              'type' => 'Spin-button',
489
                                              'default' => '32',
490
                                              'redefine_param' => 1,
491
                                              'content' => '32,256,8',
492
                                              'info' => 'wishbone_bus data width in bits.'
493
                                            },
494
                                    'Fw' => {
495
                                              'redefine_param' => 0,
496
                                              'content' => '',
497
                                              'info' => undef,
498
                                              'global_param' => 'Localparam',
499
                                              'type' => 'Fixed',
500
                                              'default' => '2+V+Fpay'
501
                                            },
502
                                    'B' => {
503
                                             'global_param' => 'Parameter',
504
                                             'type' => 'Fixed',
505
                                             'default' => ' 4',
506
                                             'redefine_param' => 1,
507
                                             'content' => '',
508
                                             'info' => 'Parameter'
509
                                           },
510
                                    'CRC_EN' => {
511
                                                  'type' => 'Combo-box',
512
                                                  'global_param' => 'Localparam',
513
                                                  'default' => '"NO"',
514
                                                  'redefine_param' => 1,
515
                                                  'info' => 'The parameter can be selected as "YES" or "NO".
516
If CRC is enabled, then two CRC32 generator modules will be added to the NI. One CRC generator for calculating CRC of sending packets and another for receiving packets.   The CRC32 value of each packet is send via tail flit and at destination NI, is will be compared with received packet generated CRC32. The matching results can be used for error-detection and can be read via NI slave interface. ',
517
                                                  'content' => '"YES","NO"'
518
                                                },
519
                                    'V' => {
520
                                             'type' => 'Fixed',
521
                                             'global_param' => 'Parameter',
522
                                             'default' => '4',
523
                                             'redefine_param' => 1,
524
                                             'info' => 'Parameter',
525
                                             'content' => ''
526
                                           },
527
                                    'RAw' => {
528
                                               'type' => 'Fixed',
529
                                               'global_param' => 'Parameter',
530
                                               'default' => '16',
531
                                               'redefine_param' => 0,
532
                                               'info' => undef,
533
                                               'content' => ''
534
                                             },
535
                                    'T2' => {
536
                                              'content' => '',
537
                                              'info' => 'Parameter',
538
                                              'redefine_param' => 1,
539
                                              'default' => ' 4',
540
                                              'global_param' => 'Parameter',
541
                                              'type' => 'Fixed'
542
                                            },
543
                                    'T1' => {
544
                                              'global_param' => 'Parameter',
545
                                              'type' => 'Fixed',
546
                                              'default' => ' 4',
547
                                              'redefine_param' => 1,
548
                                              'content' => '',
549
                                              'info' => 'Parameter'
550
                                            },
551
                                    'TOPOLOGY' => {
552
                                                    'global_param' => 'Parameter',
553
                                                    'type' => 'Fixed',
554
                                                    'default' => '"MESH"',
555
                                                    'redefine_param' => 1,
556
                                                    'content' => '',
557
                                                    'info' => 'Parameter'
558
                                                  },
559
                                    'EAw' => {
560
                                               'redefine_param' => 0,
561
                                               'content' => '',
562
                                               'info' => undef,
563
                                               'global_param' => 'Parameter',
564
                                               'type' => 'Fixed',
565
                                               'default' => '16'
566
                                             },
567
                                    'C' => {
568
                                             'default' => ' 4',
569
                                             'type' => 'Fixed',
570
                                             'global_param' => 'Parameter',
571
                                             'info' => 'Parameter',
572
                                             'content' => '',
573
                                             'redefine_param' => 1
574
                                           },
575
                                    'MAX_TRANSACTION_WIDTH' => {
576
                                                                 'default' => '13',
577
                                                                 'type' => 'Spin-button',
578
                                                                 'global_param' => 'Localparam',
579
                                                                 'info' => 'maximum packet size width  in words.
580
The maximum data that can be sent via one packet will be 2 power of MAX_DMA_TRANSACTION_WIDTH in words.',
581
                                                                 'content' => '4,32,1',
582
                                                                 'redefine_param' => 1
583
                                                               }
584
                                  },
585
                  'plugs' => {
586
                               'wb_master' => {
587
                                                'type' => 'num',
588
                                                '0' => {
589
                                                         'name' => 'wb_send'
590
                                                       },
591
                                                'value' => 2,
592
                                                '1' => {
593
                                                         'name' => 'wb_receive'
594
                                                       },
595
                                                'wb_master' => {}
596
                                              },
597
                               'interrupt_peripheral' => {
598
                                                           'type' => 'num',
599
                                                           '0' => {
600
                                                                    'name' => 'interrupt'
601
                                                                  },
602
                                                           'value' => 1,
603
                                                           'interrupt_peripheral' => {}
604
                                                         },
605
                               'reset' => {
606
                                            '0' => {
607
                                                     'name' => 'reset'
608
                                                   },
609
                                            'value' => 1,
610
                                            'type' => 'num',
611
                                            'reset' => {}
612
                                          },
613
                               'wb_slave' => {
614
                                               'wb_slave' => {},
615
                                               'value' => 1,
616
                                               '0' => {
617
                                                        'addr' => '0xb800_0000  0xbfff_ffff             custom devices',
618
                                                        'width' => 10,
619
                                                        'name' => 'wb_slave'
620
                                                      },
621
                                               'type' => 'num'
622
                                             },
623
                               'clk' => {
624
                                          'type' => 'num',
625
                                          '0' => {
626
                                                   'name' => 'clk'
627
                                                 },
628
                                          'value' => 1,
629
                                          'clk' => {}
630
                                        }
631
                             },
632
                  'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/ni/ni_master.v',
633
                  'ip_name' => 'ni_master',
634
                  'sockets' => {
635
                                 'ni' => {
636
                                           'connection_num' => 'single connection',
637
                                           'ni' => {},
638
                                           'value' => 1,
639
                                           '0' => {
640
                                                    'name' => 'ni'
641
                                                  },
642
                                           'type' => 'num'
643
                                         }
644
                               },
645
                  'ports_order' => [
646
                                     'reset',
647
                                     'clk',
648
                                     'current_e_addr',
649
                                     'current_r_addr',
650
                                     'flit_out',
651
                                     'flit_out_wr',
652
                                     'credit_in',
653
                                     'flit_in',
654
                                     'flit_in_wr',
655
                                     'credit_out',
656
                                     's_dat_i',
657
                                     's_sel_i',
658
                                     's_addr_i',
659
                                     's_cti_i',
660
                                     's_stb_i',
661
                                     's_cyc_i',
662
                                     's_we_i',
663
                                     's_dat_o',
664
                                     's_ack_o',
665
                                     'm_send_sel_o',
666
                                     'm_send_addr_o',
667
                                     'm_send_cti_o',
668
                                     'm_send_stb_o',
669
                                     'm_send_cyc_o',
670
                                     'm_send_we_o',
671
                                     'm_send_dat_i',
672
                                     'm_send_ack_i',
673
                                     'm_receive_sel_o',
674
                                     'm_receive_dat_o',
675
                                     'm_receive_addr_o',
676
                                     'm_receive_cti_o',
677
                                     'm_receive_stb_o',
678
                                     'm_receive_cyc_o',
679
                                     'm_receive_we_o',
680
                                     'm_receive_ack_i',
681
                                     'irq'
682
                                   ],
683 42 alirezamon
                  'description' => '',
684 43 alirezamon
                  'unused' => {
685
                                'plug:wb_master[1]' => [
686
                                                         'tag_o',
687
                                                         'dat_i',
688
                                                         'bte_o',
689
                                                         'err_i',
690
                                                         'rty_i'
691
                                                       ],
692
                                'plug:wb_master[0]' => [
693
                                                         'tag_o',
694
                                                         'bte_o',
695
                                                         'err_i',
696
                                                         'dat_o',
697
                                                         'rty_i'
698
                                                       ],
699
                                'plug:wb_slave[0]' => [
700
                                                        'tag_i',
701
                                                        'err_o',
702
                                                        'rty_o',
703
                                                        'bte_i'
704
                                                      ]
705
                              },
706 42 alirezamon
                  'gui_status' => {
707 43 alirezamon
                                    'status' => 'ideal',
708
                                    'timeout' => 0
709
                                  },
710
                  'hdl_files' => [
711
                                   '/mpsoc/src_noc/arbiter.v',
712
                                   '/mpsoc/src_noc/flit_buffer.v',
713
                                   '/mpsoc/src_noc/input_ports.v',
714
                                   '/mpsoc/src_noc/main_comp.v',
715
                                   '/mpsoc/src_noc/route_mesh.v',
716
                                   '/mpsoc/src_noc/route_torus.v',
717
                                   '/mpsoc/src_noc/routing.v',
718
                                   '/mpsoc/src_peripheral/ni/ni_vc_dma.v',
719
                                   '/mpsoc/src_peripheral/ni/ni_vc_wb_slave_regs.v',
720
                                   '/mpsoc/src_peripheral/ni/ni_master.v',
721
                                   '/mpsoc/src_peripheral/ni/ni_crc32.v',
722
                                   '/mpsoc/src_noc/topology_localparam.v'
723
                                 ],
724
                  'module_name' => 'ni_master',
725
                  'version' => 60
726 38 alirezamon
                }, 'ip_gen' );

powered by: WebSVN 2.1.0

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