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

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [beta_2.0/] [rtl/] [FlowDumper.v] - Blame information for rev 230

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 213 diegovalve
`include "aDefinitions.v"
2
 
3 230 diegovalve
/**********************************************************************************
4
Theia, Ray Cast Programable graphic Processing Unit.
5
Copyright (C) 2012  Diego Valverde (diego.valverde.g@gmail.com)
6
 
7
This program is free software; you can redistribute it and/or
8
modify it under the terms of the GNU General Public License
9
as published by the Free Software Foundation; either version 2
10
of the License, or (at your option) any later version.
11
 
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
GNU General Public License for more details.
16
 
17
You should have received a copy of the GNU General Public License
18
along with this program; if not, write to the Free Software
19
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20
 
21 213 diegovalve
***********************************************************************************/
22
//`define VP2_TOP( core ) `THEIA_TOP.\VPX[ core ].VP
23
`define MAX_OMEM_DUMP_SIZE 32
24
`define MAX_RF_MEM_DUMP_SIZE 128
25 229 diegovalve
 
26
//`define DEBUG_TO_STDOUT 1
27
 
28
`ifdef DEBUG_TO_STDOUT
29
        `define DWRITE $write(
30
`else
31
        `define DWRITE $fwrite(VP_LOG,
32
`endif
33 213 diegovalve
module VectorProcessor_Dumper # (parameter CVPID = 2);
34
 
35
 
36
integer RESULT_FILE,VP_LOG,OMEM_LOG,VP_REG_LOG,i;
37
reg [255:1] VPLogFileName,OMEMLogFileName,RegLogFileName;
38 230 diegovalve
 
39
 
40
 
41 213 diegovalve
 
42 230 diegovalve
 
43 213 diegovalve
 
44
initial
45
begin
46
        //Open output file
47
        $swrite(VPLogFileName,"vp.%01d.log",CVPID);
48
        $swrite(OMEMLogFileName,"OMEM.vp.%01d.log",CVPID);
49
        $swrite(RegLogFileName,"rf.vp.%01d.log",CVPID);
50
        RESULT_FILE = $fopen("test_result.log");
51
        VP_LOG = $fopen(VPLogFileName);
52
end
53
 
54
 
55
 
56
//always @ (posedge `THEIA_TOP.VPX[  CVPID ].VP.Clock )
57
always @ (posedge `VP_TOP.Clock)
58
begin
59
//-----------------------------------------------------------------
60
 
61
        if (`VP_TOP.EXE.II0.iInstruction0[`INST_EOF_RNG])
62
        begin
63
                $display(VP_LOG,"End of flow instruction detected");
64
                $fwrite(RESULT_FILE,"Simulation ended at time %dns\n",$time);
65
                $fwrite(RESULT_FILE,"multithread = %d\n",`VP_TOP.EXE.wThreadControl[`SPR_TCONTROL0_MT_ENABLED]);
66
                $fwrite(RESULT_FILE,"Simulation RESULT %h\n",`VP_TOP.EXE.RF.RF_X.Ram[66]);
67
                $fclose(RESULT_FILE);
68
                $fclose( VP_LOG );
69
 
70
                //Now write the output log
71
                OMEM_LOG = $fopen(OMEMLogFileName);
72
                for (i = 0; i < `MAX_OMEM_DUMP_SIZE; i = i +1)
73
                begin
74 230 diegovalve
                        $fwrite(OMEM_LOG,"@%02d\t%h\n",i,`THEIA_TOP.VPX[ CVPID ].OMEM.Ram[i]);
75 213 diegovalve
                end
76
                $fclose(OMEM_LOG);
77
 
78
                VP_REG_LOG = $fopen(RegLogFileName);
79
                for (i = 0; i < `MAX_RF_MEM_DUMP_SIZE; i = i +1)
80
                begin
81
                        $fwrite(VP_REG_LOG,"r%01d\t%h %h %h\n",i,
82
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_X.Ram[i],
83
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_Y.Ram[i],
84
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_Z.Ram[i]);
85
                end
86
                $fclose(VP_REG_LOG);
87
                $stop;
88
                $finish;
89
        end
90
//`ifdef 0      
91
        if (`VP_TOP.EXE.II0.rIssueNow && `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] != 0)
92
        begin
93
 
94
 
95
                //Issue state dump
96 229 diegovalve
                `DWRITE"\n%dns VP[%d] IP %d    ISSUE ",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.II0.oIP0-1);
97 213 diegovalve
 
98
                //Issue instruction undecoded
99 229 diegovalve
                `DWRITE" (%h) \t",`VP_TOP.EXE.II0.iInstruction0);
100 213 diegovalve
 
101
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_BRANCH_BIT])
102 229 diegovalve
                        `DWRITE" BRANCH ");
103 213 diegovalve
 
104
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] )
105 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
106
                        `RS_ADD1: `DWRITE" ADD_1 ");
107
                        `RS_DIV: `DWRITE" DIV ");
108
                        `RS_MUL: `DWRITE" MUL ");
109
                        `RS_SQRT: `DWRITE" SQRT ");
110 213 diegovalve
                        `RS_LOGIC:
111
                        begin
112 229 diegovalve
                        `DWRITE" LOGIC( ");
113 213 diegovalve
                        case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
114 229 diegovalve
                        0: `DWRITE"AND");
115
                        1: `DWRITE"OR");
116
                        2: `DWRITE"NOT");
117
                        3: `DWRITE"SHL");
118
                        4: `DWRITE"SHR");
119 213 diegovalve
                        default:
120 229 diegovalve
                          `DWRITE"UNKNOWN");
121 213 diegovalve
                        endcase
122 229 diegovalve
                        `DWRITE")  ");
123 213 diegovalve
                        end
124 230 diegovalve
                        `RS_IO:
125
                        begin
126
                                `DWRITE" IO ");
127
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
128
                                0: `DWRITE" OMWRITE ");
129
                                1: `DWRITE" TMREAD ");
130
                                default:
131
                                  `DWRITE" UNKNOWN");
132
                                endcase
133
                        end
134 213 diegovalve
                        default:
135 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG]);
136 213 diegovalve
                endcase
137
 
138
                if ( `VP_TOP.EXE.II0.iInstruction0[`INST_IMM] == 0)
139
                begin
140
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_DEST_ZERO])
141 229 diegovalve
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
142 213 diegovalve
                        else
143 229 diegovalve
                                `DWRITE "R[%d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
144 213 diegovalve
                end
145
                else
146
                begin
147
 
148
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
149 229 diegovalve
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
150
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
151
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
152
                                3'b011: `DWRITE"R[%d + %d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.wSource1_Temp[`X_RNG]);
153
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
154
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
155
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
156
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
157 213 diegovalve
                                endcase
158
                end
159
 
160
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG] )
161 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
162
                        3'b001: `DWRITE".z ");
163
                        3'b010: `DWRITE".y ");
164
                        3'b100: `DWRITE".x ");
165
                        3'b111: `DWRITE".xyz ");
166 213 diegovalve
                        default:
167 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG]);
168 213 diegovalve
                endcase
169
 
170
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_IMM])
171
                        /*if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED])
172 229 diegovalve
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II0.oSourceAddress0);
173 213 diegovalve
                        else
174 229 diegovalve
                                `DWRITE "I(%h)",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);*/
175 213 diegovalve
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
176 229 diegovalve
                                3'b000: `DWRITE"I(%h) R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
177
                                3'b001: `DWRITE"**!!I(%h) R[%d + %d] ",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG],`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
178
                                3'b010: `DWRITE"R[%d+%d] R[%d+%d+%d]",`VP_TOP.EXE.II0.oSourceAddress1,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister);
179
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset);
180
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
181
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
182
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II0.oSourceAddress1,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister);
183
                                3'b111: `DWRITE"R[%d + %d + %d] R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister,`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset);
184 213 diegovalve
                                endcase
185
                else
186
                begin
187
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED] == 0)
188 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress1);
189 213 diegovalve
                        else
190 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
191 213 diegovalve
 
192
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] == 0)
193 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress0);
194 213 diegovalve
                        else
195 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
196 213 diegovalve
                end
197
 
198 229 diegovalve
                `DWRITE"\t\t\t\t");
199 213 diegovalve
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG] )
200 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
201
                        `RS_ADD1: `DWRITE" ADD_1 ");
202
                        `RS_DIV: `DWRITE" DIV ");
203
                        `RS_MUL: `DWRITE" MUL ");
204
                        `RS_SQRT: `DWRITE" SQRT ");
205 230 diegovalve
                        `RS_IO:
206
                         begin
207
                                `DWRITE" IO ");
208
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
209
                                0: `DWRITE" OMWRITE ");
210
                                1: `DWRITE" TMREAD ");
211
                                default:
212
                                  `DWRITE" UNKNOWN");
213
                                endcase
214
                        end
215 213 diegovalve
                        default:
216 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG]);
217 213 diegovalve
                endcase
218 229 diegovalve
                `DWRITE" | ");
219 213 diegovalve
 
220
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG] )
221 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
222
                        `RS_ADD1: `DWRITE" ADD_1 ");
223
                        `RS_DIV: `DWRITE" DIV ");
224
                        `RS_MUL: `DWRITE" MUL ");
225
                        `RS_SQRT: `DWRITE" SQRT ");
226 230 diegovalve
                        `RS_IO:
227
                         begin
228
                                `DWRITE" IO ");
229
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
230
                                0: `DWRITE" OMWRITE ");
231
                                1: `DWRITE" TMREAD ");
232
                                default:
233
                                  `DWRITE" UNKNOWN");
234
                                endcase
235
                        end
236 213 diegovalve
                        default:
237 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG]);
238 213 diegovalve
                endcase
239 229 diegovalve
                `DWRITE" | ");
240 213 diegovalve
 
241 229 diegovalve
                `DWRITE" %h.%b | %h.%b s(%b)|  -> ",
242 213 diegovalve
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1_DATA_RNG],
243
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ1_RNG],
244
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0_DATA_RNG],
245
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ0_RNG],
246
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG]);
247
 
248 229 diegovalve
                `DWRITE" %h | %h",
249 213 diegovalve
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
250
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
251
                );
252
        end
253
 
254
 
255
////////////// Same for thread 1...
256
 
257
 
258
 
259
 
260
 
261
 
262
 
263
 
264
//-----------------------------------------------------------------
265
 
266
 
267
        if (`VP_TOP.EXE.II1.rIssueNow && `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] != 0)
268
        begin
269
 
270
 
271
                //Issue state dump
272 229 diegovalve
                `DWRITE"\n THREAD 1 %dns IP %d    ISSUE ",$time,`VP_TOP.EXE.II1.oIP0-1);
273 213 diegovalve
 
274
                //Issue instruction undecoded
275 229 diegovalve
                `DWRITE" (%h) \t",`VP_TOP.EXE.II1.iInstruction0);
276 213 diegovalve
 
277
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_BRANCH_BIT])
278 229 diegovalve
                        `DWRITE" BRANCH ");
279 213 diegovalve
 
280
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] )
281 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
282
                        `RS_ADD1: `DWRITE" ADD_1 ");
283
                        `RS_DIV: `DWRITE" DIV ");
284
                        `RS_MUL: `DWRITE" MUL ");
285
                        `RS_SQRT: `DWRITE" SQRT ");
286 213 diegovalve
                        default:
287 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG]);
288 213 diegovalve
                endcase
289
 
290
                if ( `VP_TOP.EXE.II1.iInstruction0[`INST_IMM] == 0)
291
                begin
292
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_DEST_ZERO])
293 229 diegovalve
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
294 213 diegovalve
                        else
295 229 diegovalve
                                `DWRITE "R[%d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
296 213 diegovalve
                end
297
                else
298
                begin
299
 
300
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
301 229 diegovalve
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
302
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
303
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
304
                                3'b011: `DWRITE"R[%d + %d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.wSource1_Temp[`X_RNG]);
305
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
306
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
307
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
308
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
309 213 diegovalve
                                endcase
310
                end
311
 
312
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG] )
313 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
314
                        3'b001: `DWRITE".z ");
315
                        3'b010: `DWRITE".y ");
316
                        3'b100: `DWRITE".x ");
317
                        3'b111: `DWRITE".xyz ");
318 213 diegovalve
                        default:
319 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG]);
320 213 diegovalve
                endcase
321
 
322
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_IMM])
323
                        /*if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED])
324 229 diegovalve
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II1.oSourceAddress0);
325 213 diegovalve
                        else
326 229 diegovalve
                                `DWRITE "I(%h)",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);*/
327 213 diegovalve
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
328 229 diegovalve
                                3'b000: `DWRITE"I(%h) R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
329
                                3'b001: `DWRITE"I(%h) R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
330
                                3'b010: `DWRITE"R[%d+%d] R[%d+%d+%d]",`VP_TOP.EXE.II1.oSourceAddress1,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister);
331
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
332
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
333
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
334
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II1.oSourceAddress1,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister);
335
                                3'b111: `DWRITE"R[%d + %d + %d] R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister,`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
336 213 diegovalve
                                endcase
337
                else
338
                begin
339
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED] == 0)
340 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress1);
341 213 diegovalve
                        else
342 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
343 213 diegovalve
 
344
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] == 0)
345 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress0);
346 213 diegovalve
                        else
347 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
348 213 diegovalve
                end
349
 
350 229 diegovalve
                `DWRITE"\t\t\t\t");
351 213 diegovalve
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG] )
352 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
353
                        `RS_ADD1: `DWRITE" ADD_1 ");
354
                        `RS_DIV: `DWRITE" DIV ");
355
                        `RS_MUL: `DWRITE" MUL ");
356
                        `RS_SQRT: `DWRITE" SQRT ");
357 230 diegovalve
                        `RS_IO:
358
                         begin
359
                                `DWRITE" IO ");
360
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
361
                                0: `DWRITE" OMWRITE ");
362
                                1: `DWRITE" TMREAD ");
363
                                default:
364
                                  `DWRITE" UNKNOWN");
365
                                endcase
366
                        end
367 213 diegovalve
                        default:
368 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG]);
369 213 diegovalve
                endcase
370 229 diegovalve
                `DWRITE" | ");
371 213 diegovalve
 
372
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG] )
373 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
374
                        `RS_ADD1: `DWRITE" ADD_1 ");
375
                        `RS_DIV: `DWRITE" DIV ");
376
                        `RS_MUL: `DWRITE" MUL ");
377
                        `RS_SQRT: `DWRITE" SQRT ");
378
                        `RS_IO: `DWRITE" IO ");
379 213 diegovalve
                        default:
380 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG]);
381 213 diegovalve
                endcase
382 229 diegovalve
                `DWRITE" | ");
383 213 diegovalve
 
384 229 diegovalve
                `DWRITE" %h | %h",
385 213 diegovalve
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
386
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
387
                );
388
        end
389
 
390
 
391
 
392
 
393
 
394
 
395
////////////////////////// DUMP EXE UNITS!
396
 
397
if (`VP_TOP.EXE.II0.wCommitFromPendingStation)
398
begin
399
        if ( `VP_TOP.EXE.II0.wBranchTaken)
400 229 diegovalve
                `DWRITE"\nTHREAD 0: BRANCH TAKEN ");
401 213 diegovalve
 
402
end
403
 
404
if (`VP_TOP.EXE.II1.wCommitFromPendingStation)
405
begin
406
        if ( `VP_TOP.EXE.II1.wBranchTaken)
407
 
408 229 diegovalve
                `DWRITE"\nTHREAD 1: BRANCH TAKEN ");
409 213 diegovalve
 
410
end
411
//-----------------------------------------------------------------             
412
if (`VP_TOP.EXE.LOGIC_STA.RS.iCommitGranted)
413
begin
414 229 diegovalve
`DWRITE"\n%dns VP[%d]\t COMMIT LOGIC( ",$time,`VP_TOP.iVPID-1);
415 213 diegovalve
 
416
                        case (`VP_TOP.EXE.LOGIC_STA.wResultSelector)
417 229 diegovalve
                        0: `DWRITE"AND");
418
                        1: `DWRITE"OR");
419
                        2: `DWRITE"NOT");
420
                        3: `DWRITE"SHL");
421
                        4: `DWRITE"SHR");
422 213 diegovalve
                        default:
423 229 diegovalve
                          `DWRITE"UNKNOWN");
424 213 diegovalve
                        endcase
425 229 diegovalve
                        `DWRITE")  ");
426
         `DWRITE" R[%d]",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_DST_RNG]);
427 213 diegovalve
 
428
        case ( `VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG] )
429 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
430
                        3'b001: `DWRITE".z ");
431
                        3'b010: `DWRITE".y ");
432
                        3'b100: `DWRITE".x ");
433
                        3'b111: `DWRITE".xyz ");
434 213 diegovalve
                        default:
435 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG]);
436 213 diegovalve
                endcase
437 229 diegovalve
        `DWRITE" %h %h %h\n",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_Y_RNG],`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_Z_RNG]);
438 213 diegovalve
end
439
//-----------------------------------------------------------------             
440
if (`VP_TOP.EXE.ADD_STA0.RS.iCommitGranted)
441
begin
442 229 diegovalve
        `DWRITE"\n%dns\t VP[%d] COMMIT ADD_0 R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_DST_RNG]);
443 213 diegovalve
 
444
        case ( `VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG] )
445 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
446
                        3'b001: `DWRITE".z ");
447
                        3'b010: `DWRITE".y ");
448
                        3'b100: `DWRITE".x ");
449
                        3'b111: `DWRITE".xyz ");
450 213 diegovalve
                        default:
451 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG]);
452 213 diegovalve
                endcase
453 229 diegovalve
        `DWRITE" %h %h %h\n",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_Y_RNG],`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_Z_RNG]);
454 213 diegovalve
end
455
//-----------------------------------------------------------------             
456
if (`VP_TOP.EXE.ADD_STA1.RS.iCommitGranted)
457
begin
458 229 diegovalve
        `DWRITE"\n%dns\t VP[%d] COMMIT ADD_1 R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_DST_RNG]);
459 213 diegovalve
 
460
        case ( `VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG] )
461 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
462
                        3'b001: `DWRITE".z ");
463
                        3'b010: `DWRITE".y ");
464
                        3'b100: `DWRITE".x ");
465
                        3'b111: `DWRITE".xyz ");
466 213 diegovalve
                        default:
467 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG]);
468 213 diegovalve
                endcase
469 229 diegovalve
        `DWRITE" %h %h %h\n",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_Y_RNG],`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_Z_RNG]);
470 213 diegovalve
end
471
//-----------------------------------------------------------------             
472
if (`VP_TOP.EXE.DIV_STA.RS.iCommitGranted)
473
begin
474 229 diegovalve
        `DWRITE"\n%dns\t VP[%d] COMMIT DIV R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_DST_RNG]);
475 213 diegovalve
 
476
        case ( `VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG] )
477 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
478
                        3'b001: `DWRITE".z ");
479
                        3'b010: `DWRITE".y ");
480
                        3'b100: `DWRITE".x ");
481
                        3'b111: `DWRITE".xyz ");
482 213 diegovalve
                        default:
483 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG]);
484 213 diegovalve
                endcase
485 229 diegovalve
        `DWRITE" %h %h %h\n",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_Y_RNG],`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_Z_RNG]);
486 213 diegovalve
end
487
//-----------------------------------------------------------------             
488
if (`VP_TOP.EXE.MUL_STA.RS.iCommitGranted)
489
begin
490 229 diegovalve
        `DWRITE"\n%dns\t VP[%d] COMMIT MUL R[%d]",$time,`VP_TOP.iVPID-1, `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_DST_RNG]);
491 213 diegovalve
 
492
        case ( `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG] )
493 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
494
                        3'b001: `DWRITE".z ");
495
                        3'b010: `DWRITE".y ");
496
                        3'b100: `DWRITE".x ");
497
                        3'b111: `DWRITE".xyz ");
498 213 diegovalve
                        default:
499 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG]);
500 213 diegovalve
                endcase
501 229 diegovalve
        `DWRITE" %h %h %h\n",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_Y_RNG],`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_Z_RNG]);
502 213 diegovalve
end
503
//-----------------------------------------------------------------             
504
if (`VP_TOP.EXE.SQRT_STA.RS.iCommitGranted)
505
begin
506 229 diegovalve
        `DWRITE"\n%dns\t VP[%d] COMMIT SQRT R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_DST_RNG]);
507 213 diegovalve
 
508
        case ( `VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG] )
509 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
510
                        3'b001: `DWRITE".z ");
511
                        3'b010: `DWRITE".y ");
512
                        3'b100: `DWRITE".x ");
513
                        3'b111: `DWRITE".xyz ");
514 213 diegovalve
                        default:
515 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG]);
516 213 diegovalve
                endcase
517 229 diegovalve
        `DWRITE" %h %h %h \n",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_Y_RNG], `VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_Z_RNG]);
518 213 diegovalve
end
519
//-----------------------------------------------------------------             
520 230 diegovalve
if (`VP_TOP.EXE.IO_STA.iCommitGranted)
521
begin
522
        `DWRITE"\n%dns\t VP[%d] COMMIT IO TMREAD R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_DST_RNG]);
523
 
524
        case ( `VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_WE_RNG] )
525
                        3'b000: `DWRITE".nowrite ");
526
                        3'b001: `DWRITE".z ");
527
                        3'b010: `DWRITE".y ");
528
                        3'b100: `DWRITE".x ");
529
                        3'b111: `DWRITE".xyz ");
530
                        default:
531
                        `DWRITE" %b ",`VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_WE_RNG]);
532
                endcase
533
        `DWRITE" %h %h %h \n",`VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_X_RNG],`VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_Y_RNG], `VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_Z_RNG]);
534
end
535
//-----------------------------------------------------------------             
536 213 diegovalve
 
537
end //always
538
 
539
 
540
endmodule

powered by: WebSVN 2.1.0

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