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

Subversion Repositories thor

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

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