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

Subversion Repositories rtfbitmapcontroller

[/] [rtfbitmapcontroller/] [trunk/] [rtl/] [verilog/] [fta_bus_pkg.sv] - Blame information for rev 25

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 25 robfinch
// ============================================================================
2
//        __
3
//   \\__/ o\    (C) 2015-2023  Robert Finch, Waterloo
4
//    \  __ /    All rights reserved.
5
//     \/_//     robfinch@finitron.ca
6
//       ||
7
//
8
// BSD 3-Clause License
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are met:
11
//
12
// 1. Redistributions of source code must retain the above copyright notice, this
13
//    list of conditions and the following disclaimer.
14
//
15
// 2. Redistributions in binary form must reproduce the above copyright notice,
16
//    this list of conditions and the following disclaimer in the documentation
17
//    and/or other materials provided with the distribution.
18
//
19
// 3. Neither the name of the copyright holder nor the names of its
20
//    contributors may be used to endorse or promote products derived from
21
//    this software without specific prior written permission.
22
//
23
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
27
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
31
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
//
34
// ============================================================================
35
//
36
package fta_bus_pkg;
37
 
38
typedef logic [31:0] fta_address_t;
39
typedef logic [5:0] fta_burst_len_t;            // number of beats in a burst -1
40
typedef logic [3:0] fta_channel_t;                      // channel for devices like system cache
41
//typedef logic [7:0] fta_tranid_t;                     // transaction id
42
typedef logic [7:0] fta_priv_level_t;   // 0=all access,
43
typedef logic [3:0] fta_priority_t;             // network transaction priority, higher is better
44
typedef logic [11:0] fta_asid_t;                                // address space identifier
45
 
46
typedef struct packed {
47
        logic [5:0] core;
48
        logic [2:0] channel;
49
        logic [3:0] tranid;
50
} fta_tranid_t;
51
 
52
typedef enum logic [1:0] {
53
        APP = 2'd0,
54
        SUPERVISOR = 2'd1,
55
        HYPERVISOR = 2'd2,
56
        MACHINE = 2'd3
57
} fta_operating_mode_t;
58
 
59
typedef enum logic [2:0] {
60
        CLASSIC = 3'b000,
61
        FIXED = 3'b001,                                 // constant data address
62
        INCR = 3'b010,                                  // incrementing data address
63
        IRQA = 3'b110,                                  // interrupt acknowledge
64
        EOB = 3'b111                                            // end of data burst
65
} fta_cycle_type_t;
66
 
67
typedef enum logic [2:0] {
68
        DATA = 3'b000,
69
        STACK = 3'b110,
70
        CODE = 3'b111
71
} fta_segment_t;
72
 
73
typedef enum logic [2:0] {
74
        LINEAR = 3'b000,
75
        WRAP4 = 3'b001,
76
        WRAP8 = 3'b010,
77
        WRAP16 = 3'b011,
78
        WRAP32 = 3'b100,
79
        WRAP64 = 3'b101,
80
        WRAP128 = 3'b110
81
} fta_burst_type_t;
82
 
83
// number of byte transferred in a beat
84
typedef enum logic [3:0] {
85
        nul = 4'd0,
86
        byt = 4'd1,
87
        wyde = 4'd2,
88
        tetra = 4'd3,
89
        penta = 4'd4,
90
        octa = 4'd5,
91
        hexi = 4'd6,
92
        n96 = 4'd7,
93
        char = 4'd8,
94
        vect = 4'd10
95
} fta_size_t;
96
 
97
typedef enum logic [1:0] {
98
        OKAY = 2'b00,                           // no error
99
        DECERR = 2'd01,                 // decode error
100
        PROTERR = 2'b10,                // security violation
101
        ERR = 2'b11                                     // general error
102
} fta_error_t;
103
 
104
typedef enum logic [3:0] {
105
        NC_NB = 4'd0,                                                                           // Non-cacheable, non-bufferable
106
        NON_CACHEABLE = 4'd1,
107
        CACHEABLE_NB = 4'd2,                                            // Cacheable, non-bufferable
108
        CACHEABLE = 4'd3,                                                               // Cacheable, bufferable
109
        WT_NO_ALLOCATE = 4'd8,                                  // Write Through
110
        WT_READ_ALLOCATE = 4'd9,
111
        WT_WRITE_ALLOCATE = 4'd10,
112
        WT_READWRITE_ALLOCATE = 4'd11,
113
        WB_NO_ALLOCATE = 4'd12,                                 // Write Back
114
        WB_READ_ALLOCATE = 4'd13,
115
        WB_WRITE_ALLOCATE = 4'd14,
116
        WB_READWRITE_ALLOCATE = 4'd15
117
} fta_cache_t;
118
 
119
typedef enum logic [4:0] {
120
        CMD_NONE = 5'd0,
121
        CMD_LOAD = 5'd1,
122
        CMD_LOADZ = 5'd2,
123
        CMD_STORE = 5'd3,
124
        CMD_STOREPTR = 5'd4,
125
        CMD_LEA = 5'd7,
126
        CMD_DCACHE_LOAD = 5'd10,
127
        CMD_ICACHE_LOAD = 5'd11,
128
        CMD_CACHE = 5'd13,
129
        CMD_SWAP = 5'd16,
130
        CMD_MIN = 5'd18,
131
        CMD_MAX = 5'd19,
132
        CMD_ADD = 5'd20,
133
        CMD_ASL = 5'd22,
134
        CMD_LSR = 5'd23,
135
        CMD_AND = 5'd24,
136
        CMD_OR = 5'd25,
137
        CMD_EOR = 5'd26,
138
        CMD_MINU = 5'd28,
139
        CMD_MAXU = 5'd29,
140
        CMD_CAS = 5'd31
141
} fta_cmd_t;
142
 
143
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
144
// Command requests
145
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
146
 
147
typedef struct packed {
148
        fta_operating_mode_t om;        // operating mode
149
        fta_cmd_t cmd;                                  // command
150
        fta_burst_type_t bte;   // burst type extension
151
        fta_cycle_type_t cti;   // cycle type indicator
152
        fta_burst_len_t blen;   // length of burst-1
153
        fta_size_t sz;                                  // transfer size
154
        fta_segment_t seg;                      // segment
155
        logic cyc;                                              // valid cycle
156
        logic stb;                                              // data strobe
157
        logic we;                                                       // write enable
158
        fta_asid_t asid;                                // address space identifier
159
        fta_address_t vadr;             // virtual address
160
        fta_address_t padr;             // physical address
161
        logic [7:0] dat;                        // data
162
        fta_channel_t cid;                      // channel id
163
        fta_tranid_t tid;                       // transaction id
164
        logic csr;                                              // set or clear reservation we:1=clear 0=set
165
        fta_priv_level_t pl;            // privilege level
166
        fta_priority_t pri;             // transaction priority
167
        fta_cache_t cache;                      // cache and buffer properties
168
} fta_cmd_request8_t;
169
 
170
typedef struct packed {
171
        fta_operating_mode_t om;        // operating mode
172
        fta_cmd_t cmd;                                  // command
173
        fta_burst_type_t bte;   // burst type extension
174
        fta_cycle_type_t cti;   // cycle type indicator
175
        fta_burst_len_t blen;   // length of burst-1
176
        fta_size_t sz;                                  // transfer size
177
        fta_segment_t seg;                      // segment
178
        logic cyc;                                              // valid cycle
179
        logic stb;                                              // data strobe
180
        logic we;                                                       // write enable
181
        fta_asid_t asid;                                // address space identifier
182
        fta_address_t vadr;             // virtual address
183
        fta_address_t padr;             // physical address
184
        logic [1:0] sel;                        // byte lane selects
185
        logic [15:0] dat;                       // data
186
        fta_channel_t cid;                      // channel id
187
        fta_tranid_t tid;                       // transaction id
188
        logic csr;                                              // set or clear reservation we:1=clear 0=set
189
        fta_priv_level_t pl;            // privilege level
190
        fta_priority_t pri;             // transaction priority
191
        fta_cache_t cache;                      // cache and buffer properties
192
} fta_cmd_request16_t;
193
 
194
typedef struct packed {
195
        fta_operating_mode_t om;        // operating mode
196
        fta_cmd_t cmd;                                  // command
197
        fta_burst_type_t bte;   // burst type extension
198
        fta_cycle_type_t cti;   // cycle type indicator
199
        fta_burst_len_t blen;   // length of burst-1
200
        fta_size_t sz;                                  // transfer size
201
        fta_segment_t seg;                      // segment
202
        logic cyc;                                              // valid cycle
203
        logic stb;                                              // data strobe
204
        logic we;                                                       // write enable
205
        fta_asid_t asid;                                // address space identifier
206
        fta_address_t vadr;             // virtual address
207
        fta_address_t padr;             // physical address
208
        logic [3:0] sel;                        // byte lane selects
209
        logic [31:0] dat;                       // data
210
        fta_channel_t cid;                      // channel id
211
        fta_tranid_t tid;                       // transaction id
212
        logic csr;                                              // set or clear reservation we:1=clear 0=set
213
        fta_priv_level_t pl;            // privilege level
214
        fta_priority_t pri;             // transaction priority
215
        fta_cache_t cache;                      // cache and buffer properties
216
} fta_cmd_request32_t;
217
 
218
typedef struct packed {
219
        fta_operating_mode_t om;        // operating mode
220
        fta_cmd_t cmd;                                  // command
221
        fta_burst_type_t bte;   // burst type extension
222
        fta_cycle_type_t cti;   // cycle type indicator
223
        fta_burst_len_t blen;   // length of burst-1
224
        fta_size_t sz;                                  // transfer size
225
        fta_segment_t seg;                      // segment
226
        logic cyc;                                              // valid cycle
227
        logic stb;                                              // data strobe
228
        logic we;                                                       // write enable
229
        fta_asid_t asid;                                // address space identifier
230
        fta_address_t vadr;             // virtual address
231
        fta_address_t padr;             // physical address
232
        logic [7:0] sel;                        // byte lane selects
233
        logic [63:0] dat;                       // data
234
        fta_channel_t cid;                      // channel id
235
        fta_tranid_t tid;                       // transaction id
236
        logic csr;                                              // set or clear reservation we:1=clear 0=set
237
        fta_priv_level_t pl;            // privilege level
238
        fta_priority_t pri;             // transaction priority
239
        fta_cache_t cache;                      // cache and buffer properties
240
} fta_cmd_request64_t;
241
 
242
typedef struct packed {
243
        fta_operating_mode_t om;        // operating mode
244
        fta_cmd_t cmd;                                  // command
245
        fta_burst_type_t bte;   // burst type extension
246
        fta_cycle_type_t cti;   // cycle type indicator
247
        fta_burst_len_t blen;   // length of burst-1
248
        fta_size_t sz;                                  // transfer size
249
        fta_segment_t seg;                      // segment
250
        logic cyc;                                              // valid cycle
251
        logic stb;                                              // data strobe
252
        logic we;                                                       // write enable
253
        fta_asid_t asid;                                // address space identifier
254
        fta_address_t vadr;             // virtual address
255
        fta_address_t padr;             // physical address
256
        logic [15:0] sel;                       // byte lane selects
257
        logic [127:0] data1;    // data
258
        logic [127:0] data2;    // data
259
        fta_channel_t cid;                      // channel id
260
        fta_tranid_t tid;                       // transaction id
261
        logic csr;                                              // set or clear reservation we:1=clear 0=set
262
        fta_priv_level_t pl;            // privilege level
263
        fta_priority_t pri;             // transaction priority
264
        fta_cache_t cache;                      // cache and buffer properties
265
} fta_cmd_request128_t;
266
 
267
typedef struct packed {
268
        fta_operating_mode_t om;        // operating mode
269
        fta_cmd_t cmd;                                  // command
270
        fta_burst_type_t bte;   // burst type extension
271
        fta_cycle_type_t cti;   // cycle type indicator
272
        fta_burst_len_t blen;   // length of burst-1
273
        fta_size_t sz;                                  // transfer size
274
        fta_segment_t seg;                      // segment
275
        logic cyc;                                              // valid cycle
276
        logic stb;                                              // data strobe
277
        logic we;                                                       // write enable
278
        fta_asid_t asid;                                // address space identifier
279
        fta_address_t vadr;             // virtual address
280
        fta_address_t padr;             // physical address
281
        logic [31:0] sel;                       // byte lane selects
282
        logic [255:0] dat;              // data
283
        fta_channel_t cid;                      // channel id
284
        fta_tranid_t tid;                       // transaction id
285
        logic csr;                                              // set or clear reservation we:1=clear 0=set
286
        fta_priv_level_t pl;            // privilege level
287
        fta_priority_t pri;             // transaction priority
288
        fta_cache_t cache;                      // cache and buffer properties
289
} fta_cmd_request256_t;
290
 
291
typedef struct packed {
292
        fta_operating_mode_t om;        // operating mode
293
        fta_cmd_t cmd;                                  // command
294
        fta_burst_type_t bte;   // burst type extension
295
        fta_cycle_type_t cti;   // cycle type indicator
296
        fta_burst_len_t blen;   // length of burst-1
297
        fta_size_t sz;                                  // transfer size
298
        fta_segment_t seg;                      // segment
299
        logic cyc;                                              // valid cycle
300
        logic stb;                                              // data strobe
301
        logic we;                                                       // write enable
302
        fta_asid_t asid;                                // address space identifier
303
        fta_address_t vadr;             // virtual address
304
        fta_address_t padr;             // physical address
305
        logic [63:0] sel;                       // byte lane selects
306
        logic [511:0] dat;              // data
307
        fta_channel_t cid;                      // channel id
308
        fta_tranid_t tid;                       // transaction id
309
        logic csr;                                              // set or clear reservation we:1=clear 0=set
310
        fta_priv_level_t pl;            // privilege level
311
        fta_priority_t pri;             // transaction priority
312
        fta_cache_t cache;                      // cache and buffer properties
313
} fta_cmd_request512_t;
314
 
315
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
316
// Read responses
317
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
318
 
319
typedef struct packed {
320
        fta_channel_t cid;                      // channel id
321
        fta_tranid_t tid;                       // transaction id
322
        logic stall;                                    // stall pipeline
323
        logic next;                                             // advance to next transaction
324
        logic ack;                                              // response acknowledge
325
        logic rty;                                              // retry
326
        logic err;                                              // error
327
        fta_priority_t pri;             // response priority
328
        fta_address_t adr;
329
        logic [7:0] dat;                        // data
330
} fta_cmd_response8_t;
331
 
332
typedef struct packed {
333
        fta_channel_t cid;                      // channel id
334
        fta_tranid_t tid;                       // transaction id
335
        logic stall;                                    // stall pipeline
336
        logic next;                                             // advance to next transaction
337
        logic ack;                                              // response acknowledge
338
        logic rty;                                              // retry
339
        logic err;                                              // error
340
        fta_priority_t pri;             // response priority
341
        fta_address_t adr;
342
        logic [15:0] dat;                       // data
343
} fta_cmd_response16_t;
344
 
345
typedef struct packed {
346
        fta_channel_t cid;                      // channel id
347
        fta_tranid_t tid;                       // transaction id
348
        logic stall;                                    // stall pipeline
349
        logic next;                                             // advance to next transaction
350
        logic ack;                                              // response acknowledge
351
        logic rty;                                              // retry
352
        logic err;                                              // error
353
        fta_priority_t pri;             // response priority
354
        fta_address_t adr;
355
        logic [31:0] dat;                       // data
356
} fta_cmd_response32_t;
357
 
358
typedef struct packed {
359
        fta_channel_t cid;                      // channel id
360
        fta_tranid_t tid;                       // transaction id
361
        logic stall;                                    // stall pipeline
362
        logic next;                                             // advance to next transaction
363
        logic ack;                                              // response acknowledge
364
        logic rty;                                              // retry
365
        logic err;                                              // error
366
        fta_priority_t pri;             // response priority
367
        fta_address_t adr;
368
        logic [31:0] dat;                       // data
369
} fta_response32_t;
370
 
371
typedef struct packed {
372
        fta_channel_t cid;                      // channel id
373
        fta_tranid_t tid;                       // transaction id
374
        logic stall;                                    // stall pipeline
375
        logic next;                                             // advance to next transaction
376
        logic ack;                                              // response acknowledge
377
        logic rty;                                              // retry
378
        logic err;                                              // error
379
        fta_priority_t pri;             // response priority
380
        fta_address_t adr;
381
        logic [63:0] dat;                       // data
382
} fta_cmd_response64_t;
383
 
384
typedef struct packed {
385
        fta_channel_t cid;                      // channel id
386
        fta_tranid_t tid;                       // transaction id
387
        logic stall;                                    // stall pipeline
388
        logic next;                                             // advance to next transaction
389
        logic ack;                                              // response acknowledge
390
        logic rty;                                              // retry
391
        logic err;                                              // error
392
        fta_priority_t pri;             // response priority
393
        fta_address_t adr;
394
        logic [127:0] dat;              // data
395
} fta_cmd_response128_t;
396
 
397
typedef struct packed {
398
        fta_channel_t cid;                      // channel id
399
        fta_tranid_t tid;                       // transaction id
400
        logic stall;                                    // stall pipeline
401
        logic next;                                             // advance to next transaction
402
        logic ack;                                              // response acknowledge
403
        logic rty;                                              // retry
404
        logic err;                                              // error
405
        fta_priority_t pri;             // response priority
406
        fta_address_t adr;
407
        logic [127:0] dat;              // data
408
} fta_response128_t;
409
 
410
typedef struct packed {
411
        fta_channel_t cid;                      // channel id
412
        fta_tranid_t tid;                       // transaction id
413
        logic stall;                                    // stall pipeline
414
        logic next;                                             // advance to next transaction
415
        logic ack;                                              // response acknowledge
416
        logic rty;                                              // retry
417
        logic err;                                              // error
418
        fta_priority_t pri;             // response priority
419
        fta_address_t adr;
420
        logic [255:0] dat;              // data
421
} fta_cmd_response256_t;
422
 
423
typedef struct packed {
424
        fta_channel_t cid;                      // channel id
425
        fta_tranid_t tid;                       // transaction id
426
        logic stall;                                    // stall pipeline
427
        logic next;                                             // advance to next transaction
428
        logic ack;                                              // response acknowledge
429
        logic rty;                                              // retry
430
        logic err;                                              // error
431
        fta_priority_t pri;             // response priority
432
        fta_address_t adr;
433
        logic [511:0] dat;              // data
434
} fta_cmd_response512_t;
435
 
436
endpackage

powered by: WebSVN 2.1.0

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