sudp_rf.v
10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
*************************************************************************/
// $Id: sudp_rf.v,v 1.1 2002/03/28 00:26:13 berndt Exp $
////////////////////////////////////////////////////////////////////////
//
// Project Reality
//
// module: sudp_rf
// description: Register file for scalar unit, std cell version.
//
// designer: Phil Gossett
// date: 4/9/95
//
////////////////////////////////////////////////////////////////////////
module sudp_rf (clk, d, a, b, wen, w, ra, rb);
input clk;
input [31:0] d;
output [31:0] a;
output [31:0] b;
input wen;
input [4:0] w;
input [4:0] ra;
input [4:0] rb;
wire [31:0] bufd;
lanfnh lat0 (.en(clk), .d(d[0]), .q(bufd[0]));
lanfnh lat1 (.en(clk), .d(d[1]), .q(bufd[1]));
lanfnh lat2 (.en(clk), .d(d[2]), .q(bufd[2]));
lanfnh lat3 (.en(clk), .d(d[3]), .q(bufd[3]));
lanfnh lat4 (.en(clk), .d(d[4]), .q(bufd[4]));
lanfnh lat5 (.en(clk), .d(d[5]), .q(bufd[5]));
lanfnh lat6 (.en(clk), .d(d[6]), .q(bufd[6]));
lanfnh lat7 (.en(clk), .d(d[7]), .q(bufd[7]));
lanfnh lat8 (.en(clk), .d(d[8]), .q(bufd[8]));
lanfnh lat9 (.en(clk), .d(d[9]), .q(bufd[9]));
lanfnh lat10 (.en(clk), .d(d[10]), .q(bufd[10]));
lanfnh lat11 (.en(clk), .d(d[11]), .q(bufd[11]));
lanfnh lat12 (.en(clk), .d(d[12]), .q(bufd[12]));
lanfnh lat13 (.en(clk), .d(d[13]), .q(bufd[13]));
lanfnh lat14 (.en(clk), .d(d[14]), .q(bufd[14]));
lanfnh lat15 (.en(clk), .d(d[15]), .q(bufd[15]));
lanfnh lat16 (.en(clk), .d(d[16]), .q(bufd[16]));
lanfnh lat17 (.en(clk), .d(d[17]), .q(bufd[17]));
lanfnh lat18 (.en(clk), .d(d[18]), .q(bufd[18]));
lanfnh lat19 (.en(clk), .d(d[19]), .q(bufd[19]));
lanfnh lat20 (.en(clk), .d(d[20]), .q(bufd[20]));
lanfnh lat21 (.en(clk), .d(d[21]), .q(bufd[21]));
lanfnh lat22 (.en(clk), .d(d[22]), .q(bufd[22]));
lanfnh lat23 (.en(clk), .d(d[23]), .q(bufd[23]));
lanfnh lat24 (.en(clk), .d(d[24]), .q(bufd[24]));
lanfnh lat25 (.en(clk), .d(d[25]), .q(bufd[25]));
lanfnh lat26 (.en(clk), .d(d[26]), .q(bufd[26]));
lanfnh lat27 (.en(clk), .d(d[27]), .q(bufd[27]));
lanfnh lat28 (.en(clk), .d(d[28]), .q(bufd[28]));
lanfnh lat29 (.en(clk), .d(d[29]), .q(bufd[29]));
lanfnh lat30 (.en(clk), .d(d[30]), .q(bufd[30]));
lanfnh lat31 (.en(clk), .d(d[31]), .q(bufd[31]));
wire [31:0] bufb;
ni01d5 nib0 (.i(bufd[0]), .z(bufb[0]));
ni01d5 nib1 (.i(bufd[1]), .z(bufb[1]));
ni01d5 nib2 (.i(bufd[2]), .z(bufb[2]));
ni01d5 nib3 (.i(bufd[3]), .z(bufb[3]));
ni01d5 nib4 (.i(bufd[4]), .z(bufb[4]));
ni01d5 nib5 (.i(bufd[5]), .z(bufb[5]));
ni01d5 nib6 (.i(bufd[6]), .z(bufb[6]));
ni01d5 nib7 (.i(bufd[7]), .z(bufb[7]));
ni01d5 nib8 (.i(bufd[8]), .z(bufb[8]));
ni01d5 nib9 (.i(bufd[9]), .z(bufb[9]));
ni01d5 nib10 (.i(bufd[10]), .z(bufb[10]));
ni01d5 nib11 (.i(bufd[11]), .z(bufb[11]));
ni01d5 nib12 (.i(bufd[12]), .z(bufb[12]));
ni01d5 nib13 (.i(bufd[13]), .z(bufb[13]));
ni01d5 nib14 (.i(bufd[14]), .z(bufb[14]));
ni01d5 nib15 (.i(bufd[15]), .z(bufb[15]));
ni01d5 nib16 (.i(bufd[16]), .z(bufb[16]));
ni01d5 nib17 (.i(bufd[17]), .z(bufb[17]));
ni01d5 nib18 (.i(bufd[18]), .z(bufb[18]));
ni01d5 nib19 (.i(bufd[19]), .z(bufb[19]));
ni01d5 nib20 (.i(bufd[20]), .z(bufb[20]));
ni01d5 nib21 (.i(bufd[21]), .z(bufb[21]));
ni01d5 nib22 (.i(bufd[22]), .z(bufb[22]));
ni01d5 nib23 (.i(bufd[23]), .z(bufb[23]));
ni01d5 nib24 (.i(bufd[24]), .z(bufb[24]));
ni01d5 nib25 (.i(bufd[25]), .z(bufb[25]));
ni01d5 nib26 (.i(bufd[26]), .z(bufb[26]));
ni01d5 nib27 (.i(bufd[27]), .z(bufb[27]));
ni01d5 nib28 (.i(bufd[28]), .z(bufb[28]));
ni01d5 nib29 (.i(bufd[29]), .z(bufb[29]));
ni01d5 nib30 (.i(bufd[30]), .z(bufb[30]));
ni01d5 nib31 (.i(bufd[31]), .z(bufb[31]));
wire [1:0] ppgn;
wire [7:0] pgn;
wire [31:0] gn;
wire [1:0] wb;
ni01d5 nigb0 (.i(w[0]), .z(wb[0]));
ni01d5 nigb1 (.i(w[1]), .z(wb[1]));
fn01d2 deppgn0 (.a1(w[4]), .b1(wen), .zn(ppgn[0]));
nd02d2 deppgn1 (.a1(w[4]), .a2(wen), .zn(ppgn[1]));
de24d2 depgn0 (.en(ppgn[0]), .a1(w[3]), .a0(w[2]),
.z0n(pgn[0]), .z1n(pgn[1]), .z2n(pgn[2]), .z3n(pgn[3]));
de24d2 depgn1 (.en(ppgn[1]), .a1(w[3]), .a0(w[2]),
.z0n(pgn[4]), .z1n(pgn[5]), .z2n(pgn[6]), .z3n(pgn[7]));
de24d2 degn0 (.en(pgn[0]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[0]), .z1n(gn[1]), .z2n(gn[2]), .z3n(gn[3]));
de24d2 degn1 (.en(pgn[1]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[4]), .z1n(gn[5]), .z2n(gn[6]), .z3n(gn[7]));
de24d2 degn2 (.en(pgn[2]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[8]), .z1n(gn[9]), .z2n(gn[10]), .z3n(gn[11]));
de24d2 degn3 (.en(pgn[3]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[12]), .z1n(gn[13]), .z2n(gn[14]), .z3n(gn[15]));
de24d2 degn4 (.en(pgn[4]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[16]), .z1n(gn[17]), .z2n(gn[18]), .z3n(gn[19]));
de24d2 degn5 (.en(pgn[5]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[20]), .z1n(gn[21]), .z2n(gn[22]), .z3n(gn[23]));
de24d2 degn6 (.en(pgn[6]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[24]), .z1n(gn[25]), .z2n(gn[26]), .z3n(gn[27]));
de24d2 degn7 (.en(pgn[7]), .a1(wb[1]), .a0(wb[0]),
.z0n(gn[28]), .z1n(gn[29]), .z2n(gn[30]), .z3n(gn[31]));
wire [31:0] m0b;
wire [31:0] m1b;
wire [31:0] m2b;
wire [31:0] m3b;
wire [31:0] m4b;
wire [31:0] m5b;
wire [31:0] m6b;
wire [31:0] m7b;
wire [31:0] m8b;
wire [31:0] m9b;
wire [31:0] m10b;
wire [31:0] m11b;
wire [31:0] m12b;
wire [31:0] m13b;
wire [31:0] m14b;
wire [31:0] m15b;
wire [31:0] m16b;
wire [31:0] m17b;
wire [31:0] m18b;
wire [31:0] m19b;
wire [31:0] m20b;
wire [31:0] m21b;
wire [31:0] m22b;
wire [31:0] m23b;
wire [31:0] m24b;
wire [31:0] m25b;
wire [31:0] m26b;
wire [31:0] m27b;
wire [31:0] m28b;
wire [31:0] m29b;
wire [31:0] m30b;
wire [31:0] m31b;
//sudp_latg mem0 (.clk(clk), .gn(gn[0]), .i(bufb[31:0]), .z(m0b[31:0]));
assign m0b[31:0] = 32'h0;
sudp_latg mem1 (.clk(clk), .gn(gn[1]), .i(bufb[31:0]), .z(m1b[31:0]));
sudp_latg mem2 (.clk(clk), .gn(gn[2]), .i(bufb[31:0]), .z(m2b[31:0]));
sudp_latg mem3 (.clk(clk), .gn(gn[3]), .i(bufb[31:0]), .z(m3b[31:0]));
sudp_latg mem4 (.clk(clk), .gn(gn[4]), .i(bufb[31:0]), .z(m4b[31:0]));
sudp_latg mem5 (.clk(clk), .gn(gn[5]), .i(bufb[31:0]), .z(m5b[31:0]));
sudp_latg mem6 (.clk(clk), .gn(gn[6]), .i(bufb[31:0]), .z(m6b[31:0]));
sudp_latg mem7 (.clk(clk), .gn(gn[7]), .i(bufb[31:0]), .z(m7b[31:0]));
sudp_latg mem8 (.clk(clk), .gn(gn[8]), .i(bufb[31:0]), .z(m8b[31:0]));
sudp_latg mem9 (.clk(clk), .gn(gn[9]), .i(bufb[31:0]), .z(m9b[31:0]));
sudp_latg mem10 (.clk(clk), .gn(gn[10]), .i(bufb[31:0]), .z(m10b[31:0]));
sudp_latg mem11 (.clk(clk), .gn(gn[11]), .i(bufb[31:0]), .z(m11b[31:0]));
sudp_latg mem12 (.clk(clk), .gn(gn[12]), .i(bufb[31:0]), .z(m12b[31:0]));
sudp_latg mem13 (.clk(clk), .gn(gn[13]), .i(bufb[31:0]), .z(m13b[31:0]));
sudp_latg mem14 (.clk(clk), .gn(gn[14]), .i(bufb[31:0]), .z(m14b[31:0]));
sudp_latg mem15 (.clk(clk), .gn(gn[15]), .i(bufb[31:0]), .z(m15b[31:0]));
sudp_latg mem16 (.clk(clk), .gn(gn[16]), .i(bufb[31:0]), .z(m16b[31:0]));
sudp_latg mem17 (.clk(clk), .gn(gn[17]), .i(bufb[31:0]), .z(m17b[31:0]));
sudp_latg mem18 (.clk(clk), .gn(gn[18]), .i(bufb[31:0]), .z(m18b[31:0]));
sudp_latg mem19 (.clk(clk), .gn(gn[19]), .i(bufb[31:0]), .z(m19b[31:0]));
sudp_latg mem20 (.clk(clk), .gn(gn[20]), .i(bufb[31:0]), .z(m20b[31:0]));
sudp_latg mem21 (.clk(clk), .gn(gn[21]), .i(bufb[31:0]), .z(m21b[31:0]));
sudp_latg mem22 (.clk(clk), .gn(gn[22]), .i(bufb[31:0]), .z(m22b[31:0]));
sudp_latg mem23 (.clk(clk), .gn(gn[23]), .i(bufb[31:0]), .z(m23b[31:0]));
sudp_latg mem24 (.clk(clk), .gn(gn[24]), .i(bufb[31:0]), .z(m24b[31:0]));
sudp_latg mem25 (.clk(clk), .gn(gn[25]), .i(bufb[31:0]), .z(m25b[31:0]));
sudp_latg mem26 (.clk(clk), .gn(gn[26]), .i(bufb[31:0]), .z(m26b[31:0]));
sudp_latg mem27 (.clk(clk), .gn(gn[27]), .i(bufb[31:0]), .z(m27b[31:0]));
sudp_latg mem28 (.clk(clk), .gn(gn[28]), .i(bufb[31:0]), .z(m28b[31:0]));
sudp_latg mem29 (.clk(clk), .gn(gn[29]), .i(bufb[31:0]), .z(m29b[31:0]));
sudp_latg mem30 (.clk(clk), .gn(gn[30]), .i(bufb[31:0]), .z(m30b[31:0]));
sudp_latg mem31 (.clk(clk), .gn(gn[31]), .i(bufb[31:0]), .z(m31b[31:0]));
wire [4:0] rab;
wire [4:0] rbb;
wire [31:0] ppa0b;
wire [31:0] ppa1b;
wire [31:0] ppa2b;
wire [31:0] ppa3b;
wire [31:0] pa0b;
wire [31:0] pa1b;
wire [31:0] ppb0b;
wire [31:0] ppb1b;
wire [31:0] ppb2b;
wire [31:0] ppb3b;
wire [31:0] pb0b;
wire [31:0] pb1b;
ni01d5 nirab0 (.i(ra[0]), .z(rab[0]));
ni01d5 nirab1 (.i(ra[1]), .z(rab[1]));
ni01d5 nirab2 (.i(ra[2]), .z(rab[2]));
ni01d5 nirab3 (.i(ra[3]), .z(rab[3]));
ni01d5 nirab4 (.i(ra[4]), .z(rab[4]));
ni01d5 nirbb0 (.i(rb[0]), .z(rbb[0]));
ni01d5 nirbb1 (.i(rb[1]), .z(rbb[1]));
ni01d5 nirbb2 (.i(rb[2]), .z(rbb[2]));
ni01d5 nirbb3 (.i(rb[3]), .z(rbb[3]));
ni01d5 nirbb4 (.i(rb[4]), .z(rbb[4]));
sudp_mx81 mxppa0 (.s(rab[2:0]),
.i0(m0b), .i1(m1b), .i2(m2b), .i3(m3b),
.i4(m4b), .i5(m5b), .i6(m6b), .i7(m7b), .z(ppa0b));
sudp_mx81 mxppa1 (.s(rab[2:0]),
.i0(m8b), .i1(m9b), .i2(m10b), .i3(m11b),
.i4(m12b), .i5(m13b), .i6(m14b), .i7(m15b), .z(ppa1b));
sudp_mx81 mxppa2 (.s(rab[2:0]),
.i0(m16b), .i1(m17b), .i2(m18b), .i3(m19b),
.i4(m20b), .i5(m21b), .i6(m22b), .i7(m23b), .z(ppa2b));
sudp_mx81 mxppa3 (.s(rab[2:0]),
.i0(m24b), .i1(m25b), .i2(m26b), .i3(m27b),
.i4(m28b), .i5(m29b), .i6(m30b), .i7(m31b), .z(ppa3b));
sudp_mx21 mxpa0 (.s(rab[3]), .i0(ppa0b), .i1(ppa1b), .z(pa0b));
sudp_mx21 mxpa1 (.s(rab[3]), .i0(ppa2b), .i1(ppa3b), .z(pa1b));
sudp_mx21 mxa0 (.s(rab[4]), .i0(pa0b), .i1(pa1b), .z(a));
sudp_mx81 mxppb0 (.s(rbb[2:0]),
.i0(m0b), .i1(m1b), .i2(m2b), .i3(m3b),
.i4(m4b), .i5(m5b), .i6(m6b), .i7(m7b), .z(ppb0b));
sudp_mx81 mxppb1 (.s(rbb[2:0]),
.i0(m8b), .i1(m9b), .i2(m10b), .i3(m11b),
.i4(m12b), .i5(m13b), .i6(m14b), .i7(m15b), .z(ppb1b));
sudp_mx81 mxppb2 (.s(rbb[2:0]),
.i0(m16b), .i1(m17b), .i2(m18b), .i3(m19b),
.i4(m20b), .i5(m21b), .i6(m22b), .i7(m23b), .z(ppb2b));
sudp_mx81 mxppb3 (.s(rbb[2:0]),
.i0(m24b), .i1(m25b), .i2(m26b), .i3(m27b),
.i4(m28b), .i5(m29b), .i6(m30b), .i7(m31b), .z(ppb3b));
sudp_mx21 mxpb0 (.s(rbb[3]), .i0(ppb0b), .i1(ppb1b), .z(pb0b));
sudp_mx21 mxpb1 (.s(rbb[3]), .i0(ppb2b), .i1(ppb3b), .z(pb1b));
sudp_mx21 mxb0 (.s(rbb[4]), .i0(pb0b), .i1(pb1b), .z(b));
endmodule // sudp_rf