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

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [beta_2.0/] [rtl/] [FlowDumper.v] - Diff between revs 229 and 230

Only display areas with differences | Details | Blame | View Log

Rev 229 Rev 230
`include "aDefinitions.v"
`include "aDefinitions.v"
 
 
/**********************************************************************************
/**********************************************************************************
Theia, Ray Cast Programable graphic Processing Unit.
Theia, Ray Cast Programable graphic Processing Unit.
Copyright (C) 2012  Diego Valverde (diego.valverde.g@gmail.com)
Copyright (C) 2012  Diego Valverde (diego.valverde.g@gmail.com)
 
 
This program is free software; you can redistribute it and/or
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
of the License, or (at your option) any later version.
 
 
This program is distributed in the hope that it will be useful,
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
GNU General Public License for more details.
 
 
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 
***********************************************************************************/
***********************************************************************************/
//`define VP2_TOP( core ) `THEIA_TOP.\VPX[ core ].VP
//`define VP2_TOP( core ) `THEIA_TOP.\VPX[ core ].VP
`define MAX_OMEM_DUMP_SIZE 32
`define MAX_OMEM_DUMP_SIZE 32
`define MAX_RF_MEM_DUMP_SIZE 128
`define MAX_RF_MEM_DUMP_SIZE 128
 
 
//`define DEBUG_TO_STDOUT 1
//`define DEBUG_TO_STDOUT 1
 
 
`ifdef DEBUG_TO_STDOUT
`ifdef DEBUG_TO_STDOUT
        `define DWRITE $write(
        `define DWRITE $write(
`else
`else
        `define DWRITE $fwrite(VP_LOG,
        `define DWRITE $fwrite(VP_LOG,
`endif
`endif
module VectorProcessor_Dumper # (parameter CVPID = 2);
module VectorProcessor_Dumper # (parameter CVPID = 2);
 
 
 
 
integer RESULT_FILE,VP_LOG,OMEM_LOG,VP_REG_LOG,i;
integer RESULT_FILE,VP_LOG,OMEM_LOG,VP_REG_LOG,i;
reg [255:1] VPLogFileName,OMEMLogFileName,RegLogFileName;
reg [255:1] VPLogFileName,OMEMLogFileName,RegLogFileName;
 
 
 
 
 
 
 
 
 
 
 
 
initial
initial
begin
begin
        //Open output file
        //Open output file
        $swrite(VPLogFileName,"vp.%01d.log",CVPID);
        $swrite(VPLogFileName,"vp.%01d.log",CVPID);
        $swrite(OMEMLogFileName,"OMEM.vp.%01d.log",CVPID);
        $swrite(OMEMLogFileName,"OMEM.vp.%01d.log",CVPID);
        $swrite(RegLogFileName,"rf.vp.%01d.log",CVPID);
        $swrite(RegLogFileName,"rf.vp.%01d.log",CVPID);
        RESULT_FILE = $fopen("test_result.log");
        RESULT_FILE = $fopen("test_result.log");
        VP_LOG = $fopen(VPLogFileName);
        VP_LOG = $fopen(VPLogFileName);
end
end
 
 
 
 
 
 
//always @ (posedge `THEIA_TOP.VPX[  CVPID ].VP.Clock )
//always @ (posedge `THEIA_TOP.VPX[  CVPID ].VP.Clock )
always @ (posedge `VP_TOP.Clock)
always @ (posedge `VP_TOP.Clock)
begin
begin
//-----------------------------------------------------------------
//-----------------------------------------------------------------
 
 
        if (`VP_TOP.EXE.II0.iInstruction0[`INST_EOF_RNG])
        if (`VP_TOP.EXE.II0.iInstruction0[`INST_EOF_RNG])
        begin
        begin
                $display(VP_LOG,"End of flow instruction detected");
                $display(VP_LOG,"End of flow instruction detected");
                $fwrite(RESULT_FILE,"Simulation ended at time %dns\n",$time);
                $fwrite(RESULT_FILE,"Simulation ended at time %dns\n",$time);
                $fwrite(RESULT_FILE,"multithread = %d\n",`VP_TOP.EXE.wThreadControl[`SPR_TCONTROL0_MT_ENABLED]);
                $fwrite(RESULT_FILE,"multithread = %d\n",`VP_TOP.EXE.wThreadControl[`SPR_TCONTROL0_MT_ENABLED]);
                $fwrite(RESULT_FILE,"Simulation RESULT %h\n",`VP_TOP.EXE.RF.RF_X.Ram[66]);
                $fwrite(RESULT_FILE,"Simulation RESULT %h\n",`VP_TOP.EXE.RF.RF_X.Ram[66]);
                $fclose(RESULT_FILE);
                $fclose(RESULT_FILE);
                $fclose( VP_LOG );
                $fclose( VP_LOG );
 
 
                //Now write the output log
                //Now write the output log
                OMEM_LOG = $fopen(OMEMLogFileName);
                OMEM_LOG = $fopen(OMEMLogFileName);
                for (i = 0; i < `MAX_OMEM_DUMP_SIZE; i = i +1)
                for (i = 0; i < `MAX_OMEM_DUMP_SIZE; i = i +1)
                begin
                begin
                        $fwrite(OMEM_LOG,"@%d\t%h\n",i,`THEIA_TOP.VPX[ CVPID ].OMEM.Ram[i]);
                        $fwrite(OMEM_LOG,"@%02d\t%h\n",i,`THEIA_TOP.VPX[ CVPID ].OMEM.Ram[i]);
                end
                end
                $fclose(OMEM_LOG);
                $fclose(OMEM_LOG);
 
 
                VP_REG_LOG = $fopen(RegLogFileName);
                VP_REG_LOG = $fopen(RegLogFileName);
                for (i = 0; i < `MAX_RF_MEM_DUMP_SIZE; i = i +1)
                for (i = 0; i < `MAX_RF_MEM_DUMP_SIZE; i = i +1)
                begin
                begin
                        $fwrite(VP_REG_LOG,"r%01d\t%h %h %h\n",i,
                        $fwrite(VP_REG_LOG,"r%01d\t%h %h %h\n",i,
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_X.Ram[i],
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_X.Ram[i],
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_Y.Ram[i],
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_Y.Ram[i],
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_Z.Ram[i]);
                        `THEIA_TOP.VPX[ CVPID ].VP.EXE.RF.RF_Z.Ram[i]);
                end
                end
                $fclose(VP_REG_LOG);
                $fclose(VP_REG_LOG);
                $stop;
                $stop;
                $finish;
                $finish;
        end
        end
//`ifdef 0      
//`ifdef 0      
        if (`VP_TOP.EXE.II0.rIssueNow && `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] != 0)
        if (`VP_TOP.EXE.II0.rIssueNow && `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] != 0)
        begin
        begin
 
 
 
 
                //Issue state dump
                //Issue state dump
                `DWRITE"\n%dns VP[%d] IP %d    ISSUE ",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.II0.oIP0-1);
                `DWRITE"\n%dns VP[%d] IP %d    ISSUE ",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.II0.oIP0-1);
 
 
                //Issue instruction undecoded
                //Issue instruction undecoded
                `DWRITE" (%h) \t",`VP_TOP.EXE.II0.iInstruction0);
                `DWRITE" (%h) \t",`VP_TOP.EXE.II0.iInstruction0);
 
 
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_BRANCH_BIT])
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_BRANCH_BIT])
                        `DWRITE" BRANCH ");
                        `DWRITE" BRANCH ");
 
 
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] )
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] )
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_LOGIC:
                        `RS_LOGIC:
                        begin
                        begin
                        `DWRITE" LOGIC( ");
                        `DWRITE" LOGIC( ");
                        case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
                        case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
                        0: `DWRITE"AND");
                        0: `DWRITE"AND");
                        1: `DWRITE"OR");
                        1: `DWRITE"OR");
                        2: `DWRITE"NOT");
                        2: `DWRITE"NOT");
                        3: `DWRITE"SHL");
                        3: `DWRITE"SHL");
                        4: `DWRITE"SHR");
                        4: `DWRITE"SHR");
                        default:
                        default:
                          `DWRITE"UNKNOWN");
                          `DWRITE"UNKNOWN");
                        endcase
                        endcase
                        `DWRITE")  ");
                        `DWRITE")  ");
                        end
                        end
                        `RS_IO:`DWRITE" IO ");
                        `RS_IO:
 
                        begin
 
                                `DWRITE" IO ");
 
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
 
                                0: `DWRITE" OMWRITE ");
 
                                1: `DWRITE" TMREAD ");
 
                                default:
 
                                  `DWRITE" UNKNOWN");
 
                                endcase
 
                        end
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG]);
                endcase
                endcase
 
 
                if ( `VP_TOP.EXE.II0.iInstruction0[`INST_IMM] == 0)
                if ( `VP_TOP.EXE.II0.iInstruction0[`INST_IMM] == 0)
                begin
                begin
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_DEST_ZERO])
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_DEST_ZERO])
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                        else
                        else
                                `DWRITE "R[%d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                `DWRITE "R[%d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                end
                end
                else
                else
                begin
                begin
 
 
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                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]);
                                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]);
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                endcase
                                endcase
                end
                end
 
 
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG] )
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG]);
                endcase
                endcase
 
 
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_IMM])
                if (`VP_TOP.EXE.II0.iInstruction0[`INST_IMM])
                        /*if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED])
                        /*if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED])
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II0.oSourceAddress0);
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II0.oSourceAddress0);
                        else
                        else
                                `DWRITE "I(%h)",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);*/
                                `DWRITE "I(%h)",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);*/
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
                                case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
                                3'b000: `DWRITE"I(%h) R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                3'b000: `DWRITE"I(%h) R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
                                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);
                                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);
                                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);
                                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);
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset);
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset);
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II0.oSourceAddress1,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister);
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II0.oSourceAddress1,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister);
                                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);
                                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);
                                endcase
                                endcase
                else
                else
                begin
                begin
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED] == 0)
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED] == 0)
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress1);
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress1);
                        else
                        else
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
 
 
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] == 0)
                        if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_DISPLACED] == 0)
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress0);
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress0);
                        else
                        else
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II0.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II0.iFrameOffset);
                end
                end
 
 
                `DWRITE"\t\t\t\t");
                `DWRITE"\t\t\t\t");
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG] )
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG] )
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_IO: `DWRITE" IO ");
                        `RS_IO:
 
                         begin
 
                                `DWRITE" IO ");
 
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
 
                                0: `DWRITE" OMWRITE ");
 
                                1: `DWRITE" TMREAD ");
 
                                default:
 
                                  `DWRITE" UNKNOWN");
 
                                endcase
 
                        end
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG]);
                endcase
                endcase
                `DWRITE" | ");
                `DWRITE" | ");
 
 
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG] )
                case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG] )
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_IO: `DWRITE" IO ");
                        `RS_IO:
 
                         begin
 
                                `DWRITE" IO ");
 
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
 
                                0: `DWRITE" OMWRITE ");
 
                                1: `DWRITE" TMREAD ");
 
                                default:
 
                                  `DWRITE" UNKNOWN");
 
                                endcase
 
                        end
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG]);
                endcase
                endcase
                `DWRITE" | ");
                `DWRITE" | ");
 
 
                `DWRITE" %h.%b | %h.%b s(%b)|  -> ",
                `DWRITE" %h.%b | %h.%b s(%b)|  -> ",
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1_DATA_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1_DATA_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ1_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ1_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0_DATA_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0_DATA_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ0_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ0_RNG],
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG]);
                `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG]);
 
 
                `DWRITE" %h | %h",
                `DWRITE" %h | %h",
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
                );
                );
        end
        end
 
 
 
 
////////////// Same for thread 1...
////////////// Same for thread 1...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
 
 
 
 
        if (`VP_TOP.EXE.II1.rIssueNow && `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] != 0)
        if (`VP_TOP.EXE.II1.rIssueNow && `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] != 0)
        begin
        begin
 
 
 
 
                //Issue state dump
                //Issue state dump
                `DWRITE"\n THREAD 1 %dns IP %d    ISSUE ",$time,`VP_TOP.EXE.II1.oIP0-1);
                `DWRITE"\n THREAD 1 %dns IP %d    ISSUE ",$time,`VP_TOP.EXE.II1.oIP0-1);
 
 
                //Issue instruction undecoded
                //Issue instruction undecoded
                `DWRITE" (%h) \t",`VP_TOP.EXE.II1.iInstruction0);
                `DWRITE" (%h) \t",`VP_TOP.EXE.II1.iInstruction0);
 
 
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_BRANCH_BIT])
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_BRANCH_BIT])
                        `DWRITE" BRANCH ");
                        `DWRITE" BRANCH ");
 
 
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] )
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] )
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG]);
                endcase
                endcase
 
 
                if ( `VP_TOP.EXE.II1.iInstruction0[`INST_IMM] == 0)
                if ( `VP_TOP.EXE.II1.iInstruction0[`INST_IMM] == 0)
                begin
                begin
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_DEST_ZERO])
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_DEST_ZERO])
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                `DWRITE "R[%d + %d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                        else
                        else
                                `DWRITE "R[%d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                `DWRITE "R[%d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                end
                end
                else
                else
                begin
                begin
 
 
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                3'b000: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b001: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b010: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                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]);
                                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]);
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                3'b100: `DWRITE"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b101: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b110: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                3'b111: `DWRITE"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                endcase
                                endcase
                end
                end
 
 
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG] )
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG]);
                endcase
                endcase
 
 
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_IMM])
                if (`VP_TOP.EXE.II1.iInstruction0[`INST_IMM])
                        /*if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED])
                        /*if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] && `VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED])
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II1.oSourceAddress0);
                                `DWRITE "R[%d] 0 ",`VP_TOP.EXE.II1.oSourceAddress0);
                        else
                        else
                                `DWRITE "I(%h)",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);*/
                                `DWRITE "I(%h)",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);*/
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
                                case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
                                3'b000: `DWRITE"I(%h) R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                3'b000: `DWRITE"I(%h) R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
                                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);
                                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);
                                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);
                                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);
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
                                3'b011: `DWRITE"0 R[%d + %d]",`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
                                3'b100: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
                                3'b101: `DWRITE"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II1.oSourceAddress1,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister);
                                3'b110: `DWRITE"R[%d + %d + %d] 0", `VP_TOP.EXE.II1.oSourceAddress1,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister);
                                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);
                                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);
                                endcase
                                endcase
                else
                else
                begin
                begin
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED] == 0)
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED] == 0)
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress1);
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress1);
                        else
                        else
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SCR1_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
 
 
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] == 0)
                        if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_DISPLACED] == 0)
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress0);
                                `DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress0);
                        else
                        else
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                                `DWRITE "R[%d + %d] ",  `VP_TOP.EXE.II1.iInstruction0[`INST_SRC0_ADDR_RNG],`VP_TOP.EXE.II1.iFrameOffset);
                end
                end
 
 
                `DWRITE"\t\t\t\t");
                `DWRITE"\t\t\t\t");
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG] )
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG] )
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_IO: `DWRITE" IO ");
                        `RS_IO:
 
                         begin
 
                                `DWRITE" IO ");
 
                                case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
 
                                0: `DWRITE" OMWRITE ");
 
                                1: `DWRITE" TMREAD ");
 
                                default:
 
                                  `DWRITE" UNKNOWN");
 
                                endcase
 
                        end
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG]);
                endcase
                endcase
                `DWRITE" | ");
                `DWRITE" | ");
 
 
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG] )
                case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG] )
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD0: `DWRITE" ADD_0 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_ADD1: `DWRITE" ADD_1 ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_DIV: `DWRITE" DIV ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_MUL: `DWRITE" MUL ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_SQRT: `DWRITE" SQRT ");
                        `RS_IO: `DWRITE" IO ");
                        `RS_IO: `DWRITE" IO ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG]);
                endcase
                endcase
                `DWRITE" | ");
                `DWRITE" | ");
 
 
                `DWRITE" %h | %h",
                `DWRITE" %h | %h",
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
                `VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
                );
                );
        end
        end
 
 
 
 
 
 
 
 
 
 
 
 
////////////////////////// DUMP EXE UNITS!
////////////////////////// DUMP EXE UNITS!
 
 
if (`VP_TOP.EXE.II0.wCommitFromPendingStation)
if (`VP_TOP.EXE.II0.wCommitFromPendingStation)
begin
begin
        if ( `VP_TOP.EXE.II0.wBranchTaken)
        if ( `VP_TOP.EXE.II0.wBranchTaken)
                `DWRITE"\nTHREAD 0: BRANCH TAKEN ");
                `DWRITE"\nTHREAD 0: BRANCH TAKEN ");
 
 
end
end
 
 
if (`VP_TOP.EXE.II1.wCommitFromPendingStation)
if (`VP_TOP.EXE.II1.wCommitFromPendingStation)
begin
begin
        if ( `VP_TOP.EXE.II1.wBranchTaken)
        if ( `VP_TOP.EXE.II1.wBranchTaken)
 
 
                `DWRITE"\nTHREAD 1: BRANCH TAKEN ");
                `DWRITE"\nTHREAD 1: BRANCH TAKEN ");
 
 
end
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
if (`VP_TOP.EXE.LOGIC_STA.RS.iCommitGranted)
if (`VP_TOP.EXE.LOGIC_STA.RS.iCommitGranted)
begin
begin
`DWRITE"\n%dns VP[%d]\t COMMIT LOGIC( ",$time,`VP_TOP.iVPID-1);
`DWRITE"\n%dns VP[%d]\t COMMIT LOGIC( ",$time,`VP_TOP.iVPID-1);
 
 
                        case (`VP_TOP.EXE.LOGIC_STA.wResultSelector)
                        case (`VP_TOP.EXE.LOGIC_STA.wResultSelector)
                        0: `DWRITE"AND");
                        0: `DWRITE"AND");
                        1: `DWRITE"OR");
                        1: `DWRITE"OR");
                        2: `DWRITE"NOT");
                        2: `DWRITE"NOT");
                        3: `DWRITE"SHL");
                        3: `DWRITE"SHL");
                        4: `DWRITE"SHR");
                        4: `DWRITE"SHR");
                        default:
                        default:
                          `DWRITE"UNKNOWN");
                          `DWRITE"UNKNOWN");
                        endcase
                        endcase
                        `DWRITE")  ");
                        `DWRITE")  ");
         `DWRITE" R[%d]",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_DST_RNG]);
         `DWRITE" R[%d]",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_DST_RNG]);
 
 
        case ( `VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG] )
        case ( `VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG]);
                endcase
                endcase
        `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]);
        `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]);
end
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
if (`VP_TOP.EXE.ADD_STA0.RS.iCommitGranted)
if (`VP_TOP.EXE.ADD_STA0.RS.iCommitGranted)
begin
begin
        `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]);
        `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]);
 
 
        case ( `VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG] )
        case ( `VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG]);
                endcase
                endcase
        `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]);
        `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]);
end
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
if (`VP_TOP.EXE.ADD_STA1.RS.iCommitGranted)
if (`VP_TOP.EXE.ADD_STA1.RS.iCommitGranted)
begin
begin
        `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]);
        `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]);
 
 
        case ( `VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG] )
        case ( `VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG]);
                endcase
                endcase
        `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]);
        `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]);
end
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
if (`VP_TOP.EXE.DIV_STA.RS.iCommitGranted)
if (`VP_TOP.EXE.DIV_STA.RS.iCommitGranted)
begin
begin
        `DWRITE"\n%dns\t VP[%d] COMMIT DIV R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_DST_RNG]);
        `DWRITE"\n%dns\t VP[%d] COMMIT DIV R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_DST_RNG]);
 
 
        case ( `VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG] )
        case ( `VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG]);
                endcase
                endcase
        `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]);
        `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]);
end
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
if (`VP_TOP.EXE.MUL_STA.RS.iCommitGranted)
if (`VP_TOP.EXE.MUL_STA.RS.iCommitGranted)
begin
begin
        `DWRITE"\n%dns\t VP[%d] COMMIT MUL R[%d]",$time,`VP_TOP.iVPID-1, `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_DST_RNG]);
        `DWRITE"\n%dns\t VP[%d] COMMIT MUL R[%d]",$time,`VP_TOP.iVPID-1, `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_DST_RNG]);
 
 
        case ( `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG] )
        case ( `VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG]);
                endcase
                endcase
        `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]);
        `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]);
end
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
if (`VP_TOP.EXE.SQRT_STA.RS.iCommitGranted)
if (`VP_TOP.EXE.SQRT_STA.RS.iCommitGranted)
begin
begin
        `DWRITE"\n%dns\t VP[%d] COMMIT SQRT R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_DST_RNG]);
        `DWRITE"\n%dns\t VP[%d] COMMIT SQRT R[%d]",$time,`VP_TOP.iVPID-1,`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_DST_RNG]);
 
 
        case ( `VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG] )
        case ( `VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG] )
                        3'b000: `DWRITE".nowrite ");
                        3'b000: `DWRITE".nowrite ");
                        3'b001: `DWRITE".z ");
                        3'b001: `DWRITE".z ");
                        3'b010: `DWRITE".y ");
                        3'b010: `DWRITE".y ");
                        3'b100: `DWRITE".x ");
                        3'b100: `DWRITE".x ");
                        3'b111: `DWRITE".xyz ");
                        3'b111: `DWRITE".xyz ");
                        default:
                        default:
                        `DWRITE" %b ",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG]);
                        `DWRITE" %b ",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG]);
                endcase
                endcase
        `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]);
        `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]);
end
end
 
//-----------------------------------------------------------------             
 
if (`VP_TOP.EXE.IO_STA.iCommitGranted)
 
begin
 
        `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]);
 
 
 
        case ( `VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_WE_RNG] )
 
                        3'b000: `DWRITE".nowrite ");
 
                        3'b001: `DWRITE".z ");
 
                        3'b010: `DWRITE".y ");
 
                        3'b100: `DWRITE".x ");
 
                        3'b111: `DWRITE".xyz ");
 
                        default:
 
                        `DWRITE" %b ",`VP_TOP.EXE.IO_STA.oCommitData[`COMMIT_WE_RNG]);
 
                endcase
 
        `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]);
 
end
//-----------------------------------------------------------------             
//-----------------------------------------------------------------             
 
 
end //always
end //always
 
 
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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