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 229

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 213 diegovalve
`include "aDefinitions.v"
2
 
3
/**********************************************************************************
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
***********************************************************************************/
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
 
39
 
40
 
41
 
42
 
43
 
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
                        $fwrite(OMEM_LOG,"@%d\t%h\n",i,`THEIA_TOP.VPX[ CVPID ].OMEM.Ram[i]);
75
                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 229 diegovalve
                        `RS_IO:`DWRITE" IO ");
125 213 diegovalve
                        default:
126 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG]);
127 213 diegovalve
                endcase
128
 
129
                if ( `VP_TOP.EXE.II0.iInstruction0[`INST_IMM] == 0)
130
                begin
131
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_DEST_ZERO])
132 229 diegovalve
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
133 213 diegovalve
                        else
134 229 diegovalve
                                `DWRITE "R[%d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
135 213 diegovalve
                end
136
                else
137
                begin
138
 
139
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
140 229 diegovalve
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
141
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
142
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
143
                                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]);
144
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
145
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
146
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
147
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
148 213 diegovalve
                                endcase
149
                end
150
 
151
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG] )
152 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
153
                        3'b001: `DWRITE".z ");
154
                        3'b010: `DWRITE".y ");
155
                        3'b100: `DWRITE".x ");
156
                        3'b111: `DWRITE".xyz ");
157 213 diegovalve
                        default:
158 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG]);
159 213 diegovalve
                endcase
160
 
161
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_IMM])
162
                        /*if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED])
163 229 diegovalve
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II0.oSourceAddress0);
164 213 diegovalve
                        else
165 229 diegovalve
                                `DWRITE "I(%h)",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);*/
166 213 diegovalve
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
167 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]);
168
                                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);
169
                                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);
170
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset);
171
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
172
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
173
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II0.oSourceAddress1,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister);
174
                                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);
175 213 diegovalve
                                endcase
176
                else
177
                begin
178
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED] == 0)
179 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress1);
180 213 diegovalve
                        else
181 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
182 213 diegovalve
 
183
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] == 0)
184 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress0);
185 213 diegovalve
                        else
186 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
187 213 diegovalve
                end
188
 
189 229 diegovalve
                `DWRITE"\t\t\t\t");
190 213 diegovalve
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG] )
191 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
192
                        `RS_ADD1: `DWRITE" ADD_1 ");
193
                        `RS_DIV: `DWRITE" DIV ");
194
                        `RS_MUL: `DWRITE" MUL ");
195
                        `RS_SQRT: `DWRITE" SQRT ");
196
                        `RS_IO: `DWRITE" IO ");
197 213 diegovalve
                        default:
198 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG]);
199 213 diegovalve
                endcase
200 229 diegovalve
                `DWRITE" | ");
201 213 diegovalve
 
202
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG] )
203 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
204
                        `RS_ADD1: `DWRITE" ADD_1 ");
205
                        `RS_DIV: `DWRITE" DIV ");
206
                        `RS_MUL: `DWRITE" MUL ");
207
                        `RS_SQRT: `DWRITE" SQRT ");
208
                        `RS_IO: `DWRITE" IO ");
209 213 diegovalve
                        default:
210 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG]);
211 213 diegovalve
                endcase
212 229 diegovalve
                `DWRITE" | ");
213 213 diegovalve
 
214 229 diegovalve
                `DWRITE" %h.%b | %h.%b s(%b)|  -> ",
215 213 diegovalve
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1_DATA_RNG],
216
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ1_RNG],
217
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0_DATA_RNG],
218
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ0_RNG],
219
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG]);
220
 
221 229 diegovalve
                `DWRITE" %h | %h",
222 213 diegovalve
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
223
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
224
                );
225
        end
226
 
227
 
228
////////////// Same for thread 1...
229
 
230
 
231
 
232
 
233
 
234
 
235
 
236
 
237
//-----------------------------------------------------------------
238
 
239
 
240
        if (`VP_TOP.EXE.II1.rIssueNow && `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] != 0)
241
        begin
242
 
243
 
244
                //Issue state dump
245 229 diegovalve
                `DWRITE"\n THREAD 1 %dns IP %d    ISSUE ",$time,`VP_TOP.EXE.II1.oIP0-1);
246 213 diegovalve
 
247
                //Issue instruction undecoded
248 229 diegovalve
                `DWRITE" (%h) \t",`VP_TOP.EXE.II1.iInstruction0);
249 213 diegovalve
 
250
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_BRANCH_BIT])
251 229 diegovalve
                        `DWRITE" BRANCH ");
252 213 diegovalve
 
253
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] )
254 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
255
                        `RS_ADD1: `DWRITE" ADD_1 ");
256
                        `RS_DIV: `DWRITE" DIV ");
257
                        `RS_MUL: `DWRITE" MUL ");
258
                        `RS_SQRT: `DWRITE" SQRT ");
259 213 diegovalve
                        default:
260 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG]);
261 213 diegovalve
                endcase
262
 
263
                if ( `VP_TOP.EXE.II1.iInstruction0[`INST_IMM] == 0)
264
                begin
265
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_DEST_ZERO])
266 229 diegovalve
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
267 213 diegovalve
                        else
268 229 diegovalve
                                `DWRITE "R[%d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
269 213 diegovalve
                end
270
                else
271
                begin
272
 
273
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
274 229 diegovalve
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
275
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
276
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
277
                                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]);
278
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
279
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
280
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
281
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
282 213 diegovalve
                                endcase
283
                end
284
 
285
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG] )
286 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
287
                        3'b001: `DWRITE".z ");
288
                        3'b010: `DWRITE".y ");
289
                        3'b100: `DWRITE".x ");
290
                        3'b111: `DWRITE".xyz ");
291 213 diegovalve
                        default:
292 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG]);
293 213 diegovalve
                endcase
294
 
295
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_IMM])
296
                        /*if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED])
297 229 diegovalve
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II1.oSourceAddress0);
298 213 diegovalve
                        else
299 229 diegovalve
                                `DWRITE "I(%h)",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);*/
300 213 diegovalve
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
301 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]);
302
                                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);
303
                                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);
304
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
305
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
306
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
307
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II1.oSourceAddress1,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister);
308
                                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);
309 213 diegovalve
                                endcase
310
                else
311
                begin
312
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED] == 0)
313 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress1);
314 213 diegovalve
                        else
315 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
316 213 diegovalve
 
317
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] == 0)
318 229 diegovalve
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress0);
319 213 diegovalve
                        else
320 229 diegovalve
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
321 213 diegovalve
                end
322
 
323 229 diegovalve
                `DWRITE"\t\t\t\t");
324 213 diegovalve
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG] )
325 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
326
                        `RS_ADD1: `DWRITE" ADD_1 ");
327
                        `RS_DIV: `DWRITE" DIV ");
328
                        `RS_MUL: `DWRITE" MUL ");
329
                        `RS_SQRT: `DWRITE" SQRT ");
330
                        `RS_IO: `DWRITE" IO ");
331 213 diegovalve
                        default:
332 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG]);
333 213 diegovalve
                endcase
334 229 diegovalve
                `DWRITE" | ");
335 213 diegovalve
 
336
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG] )
337 229 diegovalve
                        `RS_ADD0: `DWRITE" ADD_0 ");
338
                        `RS_ADD1: `DWRITE" ADD_1 ");
339
                        `RS_DIV: `DWRITE" DIV ");
340
                        `RS_MUL: `DWRITE" MUL ");
341
                        `RS_SQRT: `DWRITE" SQRT ");
342
                        `RS_IO: `DWRITE" IO ");
343 213 diegovalve
                        default:
344 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG]);
345 213 diegovalve
                endcase
346 229 diegovalve
                `DWRITE" | ");
347 213 diegovalve
 
348 229 diegovalve
                `DWRITE" %h | %h",
349 213 diegovalve
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
350
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
351
                );
352
        end
353
 
354
 
355
 
356
 
357
 
358
 
359
////////////////////////// DUMP EXE UNITS!
360
 
361
if (`VP_TOP.EXE.II0.wCommitFromPendingStation)
362
begin
363
        if ( `VP_TOP.EXE.II0.wBranchTaken)
364 229 diegovalve
                `DWRITE"\nTHREAD 0: BRANCH TAKEN ");
365 213 diegovalve
 
366
end
367
 
368
if (`VP_TOP.EXE.II1.wCommitFromPendingStation)
369
begin
370
        if ( `VP_TOP.EXE.II1.wBranchTaken)
371
 
372 229 diegovalve
                `DWRITE"\nTHREAD 1: BRANCH TAKEN ");
373 213 diegovalve
 
374
end
375
//-----------------------------------------------------------------             
376
if (`VP_TOP.EXE.LOGIC_STA.RS.iCommitGranted)
377
begin
378 229 diegovalve
`DWRITE"\n%dns VP[%d]\t COMMIT LOGIC( ",$time,`VP_TOP.iVPID-1);
379 213 diegovalve
 
380
                        case (`VP_TOP.EXE.LOGIC_STA.wResultSelector)
381 229 diegovalve
                        0: `DWRITE"AND");
382
                        1: `DWRITE"OR");
383
                        2: `DWRITE"NOT");
384
                        3: `DWRITE"SHL");
385
                        4: `DWRITE"SHR");
386 213 diegovalve
                        default:
387 229 diegovalve
                          `DWRITE"UNKNOWN");
388 213 diegovalve
                        endcase
389 229 diegovalve
                        `DWRITE")  ");
390
         `DWRITE" R[%d]",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_DST_RNG]);
391 213 diegovalve
 
392
        case ( `VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG] )
393 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
394
                        3'b001: `DWRITE".z ");
395
                        3'b010: `DWRITE".y ");
396
                        3'b100: `DWRITE".x ");
397
                        3'b111: `DWRITE".xyz ");
398 213 diegovalve
                        default:
399 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG]);
400 213 diegovalve
                endcase
401 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]);
402 213 diegovalve
end
403
//-----------------------------------------------------------------             
404
if (`VP_TOP.EXE.ADD_STA0.RS.iCommitGranted)
405
begin
406 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]);
407 213 diegovalve
 
408
        case ( `VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG] )
409 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
410
                        3'b001: `DWRITE".z ");
411
                        3'b010: `DWRITE".y ");
412
                        3'b100: `DWRITE".x ");
413
                        3'b111: `DWRITE".xyz ");
414 213 diegovalve
                        default:
415 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG]);
416 213 diegovalve
                endcase
417 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]);
418 213 diegovalve
end
419
//-----------------------------------------------------------------             
420
if (`VP_TOP.EXE.ADD_STA1.RS.iCommitGranted)
421
begin
422 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]);
423 213 diegovalve
 
424
        case ( `VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG] )
425 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
426
                        3'b001: `DWRITE".z ");
427
                        3'b010: `DWRITE".y ");
428
                        3'b100: `DWRITE".x ");
429
                        3'b111: `DWRITE".xyz ");
430 213 diegovalve
                        default:
431 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG]);
432 213 diegovalve
                endcase
433 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]);
434 213 diegovalve
end
435
//-----------------------------------------------------------------             
436
if (`VP_TOP.EXE.DIV_STA.RS.iCommitGranted)
437
begin
438 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]);
439 213 diegovalve
 
440
        case ( `VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG] )
441 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
442
                        3'b001: `DWRITE".z ");
443
                        3'b010: `DWRITE".y ");
444
                        3'b100: `DWRITE".x ");
445
                        3'b111: `DWRITE".xyz ");
446 213 diegovalve
                        default:
447 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG]);
448 213 diegovalve
                endcase
449 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]);
450 213 diegovalve
end
451
//-----------------------------------------------------------------             
452
if (`VP_TOP.EXE.MUL_STA.RS.iCommitGranted)
453
begin
454 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]);
455 213 diegovalve
 
456
        case ( `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG] )
457 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
458
                        3'b001: `DWRITE".z ");
459
                        3'b010: `DWRITE".y ");
460
                        3'b100: `DWRITE".x ");
461
                        3'b111: `DWRITE".xyz ");
462 213 diegovalve
                        default:
463 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG]);
464 213 diegovalve
                endcase
465 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]);
466 213 diegovalve
end
467
//-----------------------------------------------------------------             
468
if (`VP_TOP.EXE.SQRT_STA.RS.iCommitGranted)
469
begin
470 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]);
471 213 diegovalve
 
472
        case ( `VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG] )
473 229 diegovalve
                        3'b000: `DWRITE".nowrite ");
474
                        3'b001: `DWRITE".z ");
475
                        3'b010: `DWRITE".y ");
476
                        3'b100: `DWRITE".x ");
477
                        3'b111: `DWRITE".xyz ");
478 213 diegovalve
                        default:
479 229 diegovalve
                        `DWRITE" %b ",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG]);
480 213 diegovalve
                endcase
481 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]);
482 213 diegovalve
end
483
//-----------------------------------------------------------------             
484
 
485
end //always
486
 
487
 
488
endmodule

powered by: WebSVN 2.1.0

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