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

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v7/] [rtl/] [common/] [FT64_config.vh] - Blame information for rev 61

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 60 robfinch
// ============================================================================
2
//        __
3 61 robfinch
//   \\__/ o\    (C) 2017-2019  Robert Finch, Waterloo
4 60 robfinch
//    \  __ /    All rights reserved.
5
//     \/_//     robfinch<remove>@finitron.ca
6
//       ||
7
//
8
//      FT64_config.vh
9
//
10
// This source file is free software: you can redistribute it and/or modify 
11
// it under the terms of the GNU Lesser General Public License as published 
12
// by the Free Software Foundation, either version 3 of the License, or     
13
// (at your option) any later version.                                      
14
//                                                                          
15
// This source file is distributed in the hope that it will be useful,      
16
// but WITHOUT ANY WARRANTY; without even the implied warranty of           
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            
18
// GNU General Public License for more details.                             
19
//                                                                          
20
// You should have received a copy of the GNU General Public License        
21
// along with this program.  If not, see <http://www.gnu.org/licenses/>.    
22
//
23
// ============================================================================
24
//
25
// The following line is to enable simulation versions of some modules.
26
// Comment out for synthesis.
27
//`define SIM           1'b1
28
 
29
//`define SUPPORT_SMT           1'b1
30
//`define SUPPORT_VECTOR        1'b1
31
//`define SUPPORT_DCI                   1'b1    // dynamically compressed instructions
32
//`define SUPPORT_BBMS  1'b1
33
//`define SUPPORT_SEGMENTATION  1'b1
34
//`define SUPPORT_PREDICATION   1'b1
35
//`define DEBUG_LOGIC 1'b1
36 61 robfinch
 
37
// The following define generates rtl to support 40-bit jumps and calls,
38
// otherwise only 24-bit jumps and calls are supported.
39
//`define JMP40 1'b1
40 60 robfinch
`define L1_ICACHE_SIZE  2                               // 2 or 4 for 2 or 4 kB
41
 
42
// One way to tweak the size of the core a little bit is to limit the number
43
// of address bits processed. The test system for instance has only 512MB of
44
// memory, so the address size is limited to 32 bits.
45
// ** The ASID is stored in the upper 8 bits of the address
46
`define AMSB                    63
47
`define ABITS                   `AMSB:0
48
 
49
 
50
// bitfield representing a queue entry index. The field must be large
51
// enough to accomodate a queue entry number, determined by the number
52
// of queue entries below.
53
`define QBIT                    4
54
`define QBITS                   3:0
55
`define QBITSP1         4:0
56
 
57
// The following bitfield spec is for the instruction sequence number. It
58
// must have at least one more bit in it than the QBITS above as the counter
59
// can overflow a little bit.
60
`define SNBITS          4:0
61
 
62
// If set greater than 10, then memory instructions won't
63
// issue until they are within 10 of the head of the queue.
64
`define QENTRIES        4
65
 
66
// Bitfield for representing exception codes
67
`define XBITS                   7:0
68
 
69
//`define SUPPORT_DBG           1'b1
70
 
71
// Issue logic is not really required for every possible distance from
72
// the head of the queue. Later queue entries tend to depend on prior
73
// ones and hence may not be ready to be issued. Also note that 
74
// instruction decode takes a cycle making the last entry or two in the
75
// queue not ready to be issued. Commenting out this line will limit
76
// much of the issue logic to the first six queue slots relative to the
77
// head of the queue.
78
`define FULL_ISSUE_LOGIC        1'b1
79
 
80
// The WAYS config define affects things like the number of ports on the
81
// register file, the number of ports on the instruction cache, and how
82
// many entries are contained in the fetch buffers. It also indirectly
83
// affects how many instructions are queued.
84
`define WAYS                    1                               // number of ways parallel (1-3 3 not working yet)
85
`define NUM_IDU         1                               // number of instruction decode units (1-3)
86
`define NUM_ALU         1                               // number of ALU's (1-2)
87
`define NUM_MEM         1                               // number of memory queues (1-3)
88
`define NUM_FPU         0                                // number of floating-point units (0-2)
89
// Note that even with just a single commit bus, multiple instructions may
90
// commit if they do not target any registers. Up to three instruction may
91
// commit even with just a single bus.
92
`define NUM_CMT         1                               // number of commit busses (1-3)
93
// Comment out the following to remove FCU enhancements (branch predictor, BTB, RSB)
94
//`define FCU_ENH               1
95
// Comment out the following to remove bypassing logic on the functional units
96 61 robfinch
`define FU_BYPASS       1
97 60 robfinch
 
98
//`define SUPPORT_TLB           1
99
 
100
// These are unit availability settings at reset.
101
`define ID1_AVAIL       1'b1
102
`define ID2_AVAIL       1'b1
103
`define ID3_AVAIL 1'b0
104
`define ALU0_AVAIL      1'b1
105
`define ALU1_AVAIL      1'b1
106
`define FPU1_AVAIL      1'b1
107
`define FPU2_AVAIL      1'b0
108
`define MEM1_AVAIL      1'b1
109
`define MEM2_AVAIL      1'b1
110
`define MEM3_AVAIL      1'b0
111
`define FCU_AVAIL 1'b1
112
 
113
// Comment out to remove the write buffer from the core.
114
`define HAS_WB  1'b1
115
`define WB_DEPTH        5                       // must be one more than desired depth
116
 
117
// Uncomment to allow SIMD operations
118
//`define SIMD  1'b1
119
 
120
// Comment the following to disable registering the output of instruction decoders.
121
// Inline decoding should not be registered.
122
//`define REGISTER_DECODE               1'b1
123
`define INLINE_DECODE           1'b1

powered by: WebSVN 2.1.0

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