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

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v5/] [rtl/] [common/] [FT64_config.vh] - Blame information for rev 59

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 49 robfinch
// ============================================================================
2
//        __
3
//   \\__/ o\    (C) 2017-2018  Robert Finch, Waterloo
4
//    \  __ /    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 59 robfinch
// The following line is to enable simulation versions of some modules.
26
// Comment out for synthesis.
27 51 robfinch
`define SIM             1'b1
28 59 robfinch
 
29 49 robfinch
//`define SUPPORT_SMT           1'b1
30 59 robfinch
//`define SUPPORT_VECTOR        1'b1
31 57 robfinch
//`define SUPPORT_DCI                   1'b1    // dynamically compressed instructions
32 49 robfinch
//`define DEBUG_LOGIC 1'b1
33 59 robfinch
`define L1_ICACHE_SIZE  2                               // 2 or 4 for 2 or 4 kB
34 49 robfinch
 
35 58 robfinch
// One way to tweak the size of the core a little bit is to limit the number
36
// of address bits processed. The test system for instance has only 512MB of
37
// memory, so the address size is limited to 32 bits.
38 49 robfinch
`define AMSB                    31
39
`define ABITS                   `AMSB:0
40 58 robfinch
 
41
 
42
`define QBITS                   3:0                      // bitfield representing a queue entry index
43 53 robfinch
`define QENTRIES        10                      // changing this still requires changing code in FT64.
44 49 robfinch
`define XBITS                   7:0
45
 
46
//`define SUPPORT_DBG           1'b1
47 58 robfinch
 
48
// Issue logic is not really required for every possible distance from
49
// the head of the queue. Later queue entries tend to depend on prior
50
// ones and hence may not be ready to be issued. Also note that 
51
// instruction decode takes a cycle making the last entry or two in the
52
// queue not ready to be issued. Commenting out this line will limit
53
// much of the issue logic to the first six queue slots relative to the
54
// head of the queue.
55 49 robfinch
`define FULL_ISSUE_LOGIC        1'b1
56
 
57 58 robfinch
// The WAYS config define affects things like the number of ports on the
58
// register file, the number of ports on the instruction cache, and how
59
// many entries are contained in the fetch buffers. It also indirectly
60
// affects how many instructions are queued.
61 59 robfinch
`define WAYS                    1                               // number of ways parallel (1-3 3 not working yet)
62
`define NUM_IDU         1                               // number of instruction decode units (1-3)
63
`define NUM_ALU         1                               // number of ALU's (1-2)
64
`define NUM_MEM         1                               // number of memory queues (1-3)
65
`define NUM_FPU         1                               // number of floating-point units (0-2)
66 58 robfinch
// Note that even with just a single commit bus, multiple instructions may
67
// commit if they do not target any registers. Up to three instruction may
68
// commit even with just a single bus.
69 59 robfinch
`define NUM_CMT         1                               // number of commit busses (1-2)
70 49 robfinch
// Comment out the following to remove FCU enhancements (branch predictor, BTB, RSB)
71
`define FCU_ENH         1
72
// Comment out the following to remove bypassing logic on the functional units
73
`define FU_BYPASS       1
74
 
75
// These are unit availability settings at reset.
76
`define ID1_AVAIL       1'b1
77
`define ID2_AVAIL       1'b1
78
`define ID3_AVAIL 1'b0
79
`define ALU0_AVAIL      1'b1
80
`define ALU1_AVAIL      1'b1
81
`define FPU1_AVAIL      1'b1
82
`define FPU2_AVAIL      1'b0
83
`define MEM1_AVAIL      1'b1
84
`define MEM2_AVAIL      1'b1
85
`define MEM3_AVAIL      1'b0
86
`define FCU_AVAIL 1'b1
87
 
88
// Comment out to remove the write buffer from the core.
89
`define HAS_WB  1'b1
90
`define WB_DEPTH        8                       // must be one more than desired depth
91 51 robfinch
 
92
// Uncomment to allow SIMD operations
93 52 robfinch
`define SIMD    1'b1
94
 
95
// Comment the following to disable registering the output of instruction decoders.
96 53 robfinch
// Inline decoding should not be registered.
97
`define REGISTER_DECODE         1'b1
98
//`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.