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

Subversion Repositories sparc64soc

[/] [sparc64soc/] [trunk/] [T1-common/] [include/] [ifu.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dmitryr
/*
2
* ========== Copyright Header Begin ==========================================
3
*
4
* OpenSPARC T1 Processor File: ifu.h
5
* Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
6
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
7
*
8
* The above named program is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU General Public
10
* License version 2 as published by the Free Software Foundation.
11
*
12
* The above named program is distributed in the hope that it will be
13
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
* General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public
18
* License along with this work; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
*
21
* ========== Copyright Header End ============================================
22
*/
23
////////////////////////////////////////////////////////////////////////
24
/*
25
//
26
//  Module Name: ifu.h
27
//  Description:
28
//  All ifu defines
29
*/
30
 
31
//--------------------------------------------
32
// Icache Values in IFU::ICD/ICV/ICT/FDP/IFQDP
33
//--------------------------------------------
34
// Set Values
35
`define IC_SZ      16384
36
// IC_IDX_HI = log(icache_size/4ways) - 1
37
`define IC_IDX_HI  11
38
 
39
// !!IMPORTANT!! a change to IC_LINE_SZ will mean a change to the code as
40
//   well.  Unfortunately this has not been properly parametrized.
41
//   Changing the IC_LINE_SZ param alone is *not* enough.
42
`define IC_LINE_SZ  32
43
 
44
// !!IMPORTANT!! a change to IC_TAG_HI will mean a change to the code as
45
//   well.  Changing the IC_TAG_HI param alone is *not* enough to
46
//   change the PA range. 
47
// highest bit of PA
48
`define IC_TAG_HI    39
49
 
50
 
51
// Derived Values
52
// 4095
53
`define IC_ARR_HI (`IC_SZ/4 - 1)
54
 
55
// number of entries - 1 = 511
56
`define IC_ENTRY_HI  ((`IC_SZ/`IC_LINE_SZ) - 1)
57
 
58
// 12
59
`define IC_TAG_LO    (`IC_IDX_HI + 1)
60
 
61
// 28
62
`define IC_TAG_SZ    (`IC_TAG_HI - `IC_IDX_HI)
63
 
64
// 7
65
`define IC_IDX_SZ  (`IC_IDX_HI - 4)
66
 
67
// tags for all 4 ways + parity
68
// 116
69
`define IC_TAG_ALL   ((`IC_TAG_SZ * 4) + 4)
70
 
71
// 115
72
`define IC_TAG_ALL_HI   ((`IC_TAG_SZ * 4) + 3)
73
 
74
 
75
//----------------------------------------------------------------------
76
// For thread scheduler in IFU::DTU::SWL
77
//----------------------------------------------------------------------
78
// thread states:  (thr_state[4:0])
79
`define THRFSM_DEAD     5'b00000
80
`define THRFSM_IDLE     5'b00000
81
`define THRFSM_HALT     5'b00010
82
`define THRFSM_RDY      5'b11001
83
`define THRFSM_SPEC_RDY 5'b10011
84
`define THRFSM_RUN      5'b00101
85
`define THRFSM_SPEC_RUN 5'b00111
86
`define THRFSM_WAIT     5'b00001
87
 
88
// thread configuration register bit fields
89
`define TCR_READY   4
90
`define TCR_URDY    3
91
`define TCR_RUNNING 2
92
`define TCR_SPEC    1
93
`define TCR_ACTIVE  0
94
 
95
 
96
//----------------------------------------------------------------------
97
// For MIL fsm in IFU::IFQ
98
//----------------------------------------------------------------------
99
`define MILFSM_NULL   4'b0000
100
`define MILFSM_WAIT   4'b1000
101
`define MILFSM_REQ    4'b1100
102
`define MILFSM_FILL0  4'b1001
103
`define MILFSM_FILL1  4'b1011
104
 
105
`define MIL_V  3
106
`define MIL_R  2
107
`define MIL_A  1
108
`define MIL_F  0
109
 
110
//---------------------------------------------------
111
// Interrupt Block
112
//---------------------------------------------------
113
`define INT_VEC_HI  5
114
`define INT_VEC_LO  0
115
`define INT_THR_HI  12
116
`define INT_THR_LO  8
117
`define INT_TYPE_HI 17
118
`define INT_TYPE_LO 16
119
 
120
//-------------------------------------
121
// IFQ
122
//-------------------------------------
123
// valid bit plus ifill
124
`define CPX_IFILLPKT {1'b1, `IFILL_RET}
125
`define CPX_INVPKT {1'b1, `INV_RET}
126
`define CPX_STRPKT {1'b1, `ST_ACK}
127
`define CPX_STRMACK {1'b1, `STRST_ACK}
128
`define CPX_EVPKT {1'b1, `EVICT_REQ}
129
`define CPX_LDPKT {1'b1, `LOAD_RET}
130
`define CPX_ERRPKT {1'b1, `ERR_RET}
131
`define CPX_FREQPKT {1'b1, `FWD_RQ_RET}
132
 
133
`define CPX_REQFIELD `CPX_RQ_HI:`CPX_RQ_LO
134
`define CPX_THRFIELD `CPX_TH_HI:`CPX_TH_LO
135
`define CPX_RQ_SIZE  (`CPX_RQ_HI - `CPX_RQ_LO + 1)
136
 
137
//`ifdef SPARC_L2_64B
138
`define BANK_ID_HI 7
139
`define BANK_ID_LO 6
140
//`else
141
//`define BANK_ID_HI 8
142
//`define BANK_ID_LO 7
143
//`endif
144
 
145
//`define CPX_INV_PA_HI  116
146
//`define CPX_INV_PA_LO  112
147
 
148
`define IFU_ASI_VA_HI   17
149
`define IFU_ASI_DATA_HI 47
150
 
151
`define ICT_FILL_BITS  (32 - `IC_TAG_SZ)
152
`define ICV_IDX_SZ  (`IC_IDX_HI - 5)
153
 
154
//----------------------------------------
155
// IFU Traps
156
//----------------------------------------
157
// precise
158
`define INST_ACC_EXC    9'h008
159
`define INST_ACC_ERR    9'h00a
160
`define CORR_ECC_ERR    9'h063
161
`define DATA_ACC_ERR    9'h032
162
`define DATA_ERR        9'h078
163
`define ASYN_DATA_ERR   9'h040
164
`define INST_ACC_MMU_MS 9'h009
165
`define FAST_MMU_MS     9'h064
166
`define PRIV_OPC        9'h011
167
`define ILL_INST        9'h010
168
`define SIR             9'h004
169
`define FP_DISABLED     9'h020
170
`define REAL_TRANS_MS   9'h03e
171
`define INST_BRK_PT     9'h076
172
 
173
// disrupting
174
`define SPU_MAINT        9'h074
175
`define SPU_ENCINT       9'h070
176
`define HSTICK_CMP       9'h05e
177
`define RESUMABLE_ERR    9'h07e
178
 
179
 
180
 

powered by: WebSVN 2.1.0

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