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

Subversion Repositories theia_gpu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /theia_gpu
    from Rev 228 to Rev 229
    Reverse comparison

Rev 228 → Rev 229

/branches/beta_2.0/testbench/testbench_theia_icarus.v
1,7 → 1,8
`timescale 1ns / 1ps
`include "aDefinitions.v"
 
 
`define MAIN_MEMORY_DEPTH (255 * 2) //Each entry is 64 bits = 32 *2 * 255 entries
 
module testbench_theia_icarus;
 
16,13 → 17,13
THEIA uut
(
.Clock(Clock),
.Reset(Reset),
.iEnable(iEnable),
.iMemReadData(iMemReadData),
.iMemDataAvailable( iMemDataAvailable ),
.oMEM_ReadRequest( oMEM_ReadRequest ),
.oMemReadAddress(oMemReadAddress)
.Clock( Clock ),
.Reset( Reset ),
.iEnable( iEnable ),
.iMemReadData( iMemReadData ),
.iMemDataAvailable( iMemDataAvailable ),
.oMEM_ReadRequest( oMEM_ReadRequest ),
.oMemReadAddress( oMemReadAddress )
);
//---------------------------------------------
//generate the clock signal here
38,10 → 39,11
VectorProcessor_Dumper #(2) VP_Dump2();
VectorProcessor_Dumper #(3) VP_Dump3();
reg [31:0] MainMemory [255:0];
reg [31:0] InstMemory [31:0];
reg [31:0] MainMemory [`MAIN_MEMORY_DEPTH-1:0];
always @ (posedge Clock )
begin
if (oMEM_ReadRequest)
54,8 → 56,6
end
 
initial begin
Clock = 0;
Reset = 0;
iEnable = 0;
62,12 → 62,12
$readmemh("control_code.mem", uut.CP.InstructionRam.Ram);
$readmemh("code.mem", MainMemory);
#110;
Reset = 1;
Reset = 1;
#40;
Reset = 0;
$dumpfile("dump.vcd");
$dumpvars(0,testbench_theia_icarus);
end
endmodule
 
/branches/beta_2.0/rtl/Module_MemoryController.v
36,8 → 36,8
output wire oMEM_ReadRequest,
output wire [`WB_WIDTH-1:0] oMEM_ReadAddress,
input wire [`WB_WIDTH-1:0] iMEM_ReadData,
output wire oPendingRequests, //Connected to FIFO
input wire [`WB_WIDTH-1:0] iMEM_ReadData, //Data read from Main memory
output wire oPendingRequests, //Connected to FIFO
output wire oFifoFull,
output wire oFifoEmpty,
input wire iMEM_DataAvailable,
/branches/beta_2.0/rtl/FlowDumper.v
22,6 → 22,14
//`define VP2_TOP( core ) `THEIA_TOP.\VPX[ core ].VP
`define MAX_OMEM_DUMP_SIZE 32
`define MAX_RF_MEM_DUMP_SIZE 128
 
//`define DEBUG_TO_STDOUT 1
 
`ifdef DEBUG_TO_STDOUT
`define DWRITE $write(
`else
`define DWRITE $fwrite(VP_LOG,
`endif
module VectorProcessor_Dumper # (parameter CVPID = 2);
 
 
85,125 → 93,125
//Issue state dump
$fwrite(VP_LOG,"\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
$fwrite(VP_LOG," (%h) \t",`VP_TOP.EXE.II0.iInstruction0);
`DWRITE" (%h) \t",`VP_TOP.EXE.II0.iInstruction0);
if (`VP_TOP.EXE.II0.iInstruction0[`INST_BRANCH_BIT])
$fwrite(VP_LOG," BRANCH ");
`DWRITE" BRANCH ");
case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG] )
`RS_ADD0: $fwrite(VP_LOG," ADD_0 ");
`RS_ADD1: $fwrite(VP_LOG," ADD_1 ");
`RS_DIV: $fwrite(VP_LOG," DIV ");
`RS_MUL: $fwrite(VP_LOG," MUL ");
`RS_SQRT: $fwrite(VP_LOG," SQRT ");
`RS_ADD0: `DWRITE" ADD_0 ");
`RS_ADD1: `DWRITE" ADD_1 ");
`RS_DIV: `DWRITE" DIV ");
`RS_MUL: `DWRITE" MUL ");
`RS_SQRT: `DWRITE" SQRT ");
`RS_LOGIC:
begin
$fwrite(VP_LOG," LOGIC( ");
`DWRITE" LOGIC( ");
case (`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG])
0: $fwrite(VP_LOG,"AND");
1: $fwrite(VP_LOG,"OR");
2: $fwrite(VP_LOG,"NOT");
3: $fwrite(VP_LOG,"SHL");
4: $fwrite(VP_LOG,"SHR");
0: `DWRITE"AND");
1: `DWRITE"OR");
2: `DWRITE"NOT");
3: `DWRITE"SHL");
4: `DWRITE"SHR");
default:
$fwrite(VP_LOG,"UNKNOWN");
`DWRITE"UNKNOWN");
endcase
$fwrite(VP_LOG,") ");
`DWRITE") ");
end
`RS_IO:$fwrite(VP_LOG," IO ");
`RS_IO:`DWRITE" IO ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_RSID_RNG]);
endcase
if ( `VP_TOP.EXE.II0.iInstruction0[`INST_IMM] == 0)
begin
if (`VP_TOP.EXE.II0.iInstruction0[`INST_DEST_ZERO])
$fwrite(VP_LOG, "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
$fwrite(VP_LOG, "R[%d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
`DWRITE "R[%d]", `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
end
else
begin
case (`VP_TOP.EXE.II0.iInstruction0[`INST_ADDRMODE_RNG])
3'b000: $fwrite(VP_LOG,"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
3'b001: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
3'b010: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
3'b011: $fwrite(VP_LOG,"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: $fwrite(VP_LOG,"R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
3'b101: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
3'b110: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
3'b111: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II0.iFrameOffset);
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'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'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'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);
endcase
end
case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_WE_RNG]);
endcase
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])
$fwrite(VP_LOG, "R[%d] 0 ",`VP_TOP.EXE.II0.oSourceAddress0);
`DWRITE "R[%d] 0 ",`VP_TOP.EXE.II0.oSourceAddress0);
else
$fwrite(VP_LOG, "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])
3'b000: $fwrite(VP_LOG,"I(%h) R[%d]",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II0.iInstruction0[`INST_DST_RNG]);
3'b001: $fwrite(VP_LOG,"**!!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: $fwrite(VP_LOG,"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: $fwrite(VP_LOG,"0 R[%d + %d]",`VP_TOP.EXE.II0.oSourceAddress0,`VP_TOP.EXE.II0.iFrameOffset);
3'b100: $fwrite(VP_LOG,"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
3'b101: $fwrite(VP_LOG,"I(%h) 0",`VP_TOP.EXE.II0.iInstruction0[`INST_IMM_RNG]);
3'b110: $fwrite(VP_LOG,"R[%d + %d + %d] 0", `VP_TOP.EXE.II0.oSourceAddress1,`VP_TOP.EXE.II0.iFrameOffset,`VP_TOP.EXE.II0.iIndexRegister);
3'b111: $fwrite(VP_LOG,"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'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'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'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'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);
endcase
else
begin
if (`VP_TOP.EXE.II0.iInstruction0[`INST_SRC1_DISPLACED] == 0)
$fwrite(VP_LOG, "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress1);
`DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress1);
else
$fwrite(VP_LOG, "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)
$fwrite(VP_LOG, "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress0);
`DWRITE "R[%d] ",`VP_TOP.EXE.II0.oSourceAddress0);
else
$fwrite(VP_LOG, "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
$fwrite(VP_LOG,"\t\t\t\t");
`DWRITE"\t\t\t\t");
case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG] )
`RS_ADD0: $fwrite(VP_LOG," ADD_0 ");
`RS_ADD1: $fwrite(VP_LOG," ADD_1 ");
`RS_DIV: $fwrite(VP_LOG," DIV ");
`RS_MUL: $fwrite(VP_LOG," MUL ");
`RS_SQRT: $fwrite(VP_LOG," SQRT ");
`RS_IO: $fwrite(VP_LOG," IO ");
`RS_ADD0: `DWRITE" ADD_0 ");
`RS_ADD1: `DWRITE" ADD_1 ");
`RS_DIV: `DWRITE" DIV ");
`RS_MUL: `DWRITE" MUL ");
`RS_SQRT: `DWRITE" SQRT ");
`RS_IO: `DWRITE" IO ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC1RS_RNG]);
endcase
$fwrite(VP_LOG," | ");
`DWRITE" | ");
case ( `VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG] )
`RS_ADD0: $fwrite(VP_LOG," ADD_0 ");
`RS_ADD1: $fwrite(VP_LOG," ADD_1 ");
`RS_DIV: $fwrite(VP_LOG," DIV ");
`RS_MUL: $fwrite(VP_LOG," MUL ");
`RS_SQRT: $fwrite(VP_LOG," SQRT ");
`RS_IO: $fwrite(VP_LOG," IO ");
`RS_ADD0: `DWRITE" ADD_0 ");
`RS_ADD1: `DWRITE" ADD_1 ");
`RS_DIV: `DWRITE" DIV ");
`RS_MUL: `DWRITE" MUL ");
`RS_SQRT: `DWRITE" SQRT ");
`RS_IO: `DWRITE" IO ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0RS_RNG]);
endcase
$fwrite(VP_LOG," | ");
`DWRITE" | ");
$fwrite(VP_LOG," %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_SWZZ1_RNG],
`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SRC0_DATA_RNG],
210,7 → 218,7
`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SWZZ0_RNG],
`VP_TOP.EXE.II0.oIssueBcast[`ISSUE_SCALE_RNG]);
$fwrite(VP_LOG," %h | %h",
`DWRITE" %h | %h",
`VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
`VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
);
234,110 → 242,110
//Issue state dump
$fwrite(VP_LOG,"\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
$fwrite(VP_LOG," (%h) \t",`VP_TOP.EXE.II1.iInstruction0);
`DWRITE" (%h) \t",`VP_TOP.EXE.II1.iInstruction0);
if (`VP_TOP.EXE.II1.iInstruction0[`INST_BRANCH_BIT])
$fwrite(VP_LOG," BRANCH ");
`DWRITE" BRANCH ");
case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG] )
`RS_ADD0: $fwrite(VP_LOG," ADD_0 ");
`RS_ADD1: $fwrite(VP_LOG," ADD_1 ");
`RS_DIV: $fwrite(VP_LOG," DIV ");
`RS_MUL: $fwrite(VP_LOG," MUL ");
`RS_SQRT: $fwrite(VP_LOG," SQRT ");
`RS_ADD0: `DWRITE" ADD_0 ");
`RS_ADD1: `DWRITE" ADD_1 ");
`RS_DIV: `DWRITE" DIV ");
`RS_MUL: `DWRITE" MUL ");
`RS_SQRT: `DWRITE" SQRT ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_RSID_RNG]);
endcase
if ( `VP_TOP.EXE.II1.iInstruction0[`INST_IMM] == 0)
begin
if (`VP_TOP.EXE.II1.iInstruction0[`INST_DEST_ZERO])
$fwrite(VP_LOG, "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
$fwrite(VP_LOG, "R[%d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
`DWRITE "R[%d]", `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
end
else
begin
case (`VP_TOP.EXE.II1.iInstruction0[`INST_ADDRMODE_RNG])
3'b000: $fwrite(VP_LOG,"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
3'b001: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
3'b010: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
3'b011: $fwrite(VP_LOG,"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: $fwrite(VP_LOG,"R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
3'b101: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
3'b110: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
3'b111: $fwrite(VP_LOG,"R[%d + %d]",`VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG],`VP_TOP.EXE.II1.iFrameOffset);
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'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'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'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);
endcase
end
case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_WE_RNG]);
endcase
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])
$fwrite(VP_LOG, "R[%d] 0 ",`VP_TOP.EXE.II1.oSourceAddress0);
`DWRITE "R[%d] 0 ",`VP_TOP.EXE.II1.oSourceAddress0);
else
$fwrite(VP_LOG, "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])
3'b000: $fwrite(VP_LOG,"I(%h) R[%d]",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG], `VP_TOP.EXE.II1.iInstruction0[`INST_DST_RNG]);
3'b001: $fwrite(VP_LOG,"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: $fwrite(VP_LOG,"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: $fwrite(VP_LOG,"0 R[%d + %d]",`VP_TOP.EXE.II1.oSourceAddress0,`VP_TOP.EXE.II1.iFrameOffset);
3'b100: $fwrite(VP_LOG,"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
3'b101: $fwrite(VP_LOG,"I(%h) 0",`VP_TOP.EXE.II1.iInstruction0[`INST_IMM_RNG]);
3'b110: $fwrite(VP_LOG,"R[%d + %d + %d] 0", `VP_TOP.EXE.II1.oSourceAddress1,`VP_TOP.EXE.II1.iFrameOffset,`VP_TOP.EXE.II1.iIndexRegister);
3'b111: $fwrite(VP_LOG,"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'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'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'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'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);
endcase
else
begin
if (`VP_TOP.EXE.II1.iInstruction0[`INST_SRC1_DISPLACED] == 0)
$fwrite(VP_LOG, "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress1);
`DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress1);
else
$fwrite(VP_LOG, "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)
$fwrite(VP_LOG, "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress0);
`DWRITE "R[%d] ",`VP_TOP.EXE.II1.oSourceAddress0);
else
$fwrite(VP_LOG, "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
$fwrite(VP_LOG,"\t\t\t\t");
`DWRITE"\t\t\t\t");
case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG] )
`RS_ADD0: $fwrite(VP_LOG," ADD_0 ");
`RS_ADD1: $fwrite(VP_LOG," ADD_1 ");
`RS_DIV: $fwrite(VP_LOG," DIV ");
`RS_MUL: $fwrite(VP_LOG," MUL ");
`RS_SQRT: $fwrite(VP_LOG," SQRT ");
`RS_IO: $fwrite(VP_LOG," IO ");
`RS_ADD0: `DWRITE" ADD_0 ");
`RS_ADD1: `DWRITE" ADD_1 ");
`RS_DIV: `DWRITE" DIV ");
`RS_MUL: `DWRITE" MUL ");
`RS_SQRT: `DWRITE" SQRT ");
`RS_IO: `DWRITE" IO ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC1RS_RNG]);
endcase
$fwrite(VP_LOG," | ");
`DWRITE" | ");
case ( `VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG] )
`RS_ADD0: $fwrite(VP_LOG," ADD_0 ");
`RS_ADD1: $fwrite(VP_LOG," ADD_1 ");
`RS_DIV: $fwrite(VP_LOG," DIV ");
`RS_MUL: $fwrite(VP_LOG," MUL ");
`RS_SQRT: $fwrite(VP_LOG," SQRT ");
`RS_IO: $fwrite(VP_LOG," IO ");
`RS_ADD0: `DWRITE" ADD_0 ");
`RS_ADD1: `DWRITE" ADD_1 ");
`RS_DIV: `DWRITE" DIV ");
`RS_MUL: `DWRITE" MUL ");
`RS_SQRT: `DWRITE" SQRT ");
`RS_IO: `DWRITE" IO ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.II1.oIssueBcast[`ISSUE_SRC0RS_RNG]);
endcase
$fwrite(VP_LOG," | ");
`DWRITE" | ");
$fwrite(VP_LOG," %h | %h",
`DWRITE" %h | %h",
`VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC1_DATA_RNG],
`VP_TOP.EXE.wModIssue[`MOD_ISSUE_SRC0_DATA_RNG]
);
353,7 → 361,7
if (`VP_TOP.EXE.II0.wCommitFromPendingStation)
begin
if ( `VP_TOP.EXE.II0.wBranchTaken)
$fwrite(VP_LOG,"\nTHREAD 0: BRANCH TAKEN ");
`DWRITE"\nTHREAD 0: BRANCH TAKEN ");
end
361,116 → 369,116
begin
if ( `VP_TOP.EXE.II1.wBranchTaken)
$fwrite(VP_LOG,"\nTHREAD 1: BRANCH TAKEN ");
`DWRITE"\nTHREAD 1: BRANCH TAKEN ");
end
//-----------------------------------------------------------------
if (`VP_TOP.EXE.LOGIC_STA.RS.iCommitGranted)
begin
$fwrite(VP_LOG,"\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)
0: $fwrite(VP_LOG,"AND");
1: $fwrite(VP_LOG,"OR");
2: $fwrite(VP_LOG,"NOT");
3: $fwrite(VP_LOG,"SHL");
4: $fwrite(VP_LOG,"SHR");
0: `DWRITE"AND");
1: `DWRITE"OR");
2: `DWRITE"NOT");
3: `DWRITE"SHL");
4: `DWRITE"SHR");
default:
$fwrite(VP_LOG,"UNKNOWN");
`DWRITE"UNKNOWN");
endcase
$fwrite(VP_LOG,") ");
$fwrite(VP_LOG," R[%d]",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_DST_RNG]);
`DWRITE") ");
`DWRITE" R[%d]",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_DST_RNG]);
case ( `VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.LOGIC_STA.oCommitData[`COMMIT_WE_RNG]);
endcase
$fwrite(VP_LOG," %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
//-----------------------------------------------------------------
if (`VP_TOP.EXE.ADD_STA0.RS.iCommitGranted)
begin
$fwrite(VP_LOG,"\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] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.ADD_STA0.oCommitData[`COMMIT_WE_RNG]);
endcase
$fwrite(VP_LOG," %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
//-----------------------------------------------------------------
if (`VP_TOP.EXE.ADD_STA1.RS.iCommitGranted)
begin
$fwrite(VP_LOG,"\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] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.ADD_STA1.oCommitData[`COMMIT_WE_RNG]);
endcase
$fwrite(VP_LOG," %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
//-----------------------------------------------------------------
if (`VP_TOP.EXE.DIV_STA.RS.iCommitGranted)
begin
$fwrite(VP_LOG,"\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] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.DIV_STA.oCommitData[`COMMIT_WE_RNG]);
endcase
$fwrite(VP_LOG," %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
//-----------------------------------------------------------------
if (`VP_TOP.EXE.MUL_STA.RS.iCommitGranted)
begin
$fwrite(VP_LOG,"\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] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.MUL_STA.oCommitData[`COMMIT_WE_RNG]);
endcase
$fwrite(VP_LOG," %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
//-----------------------------------------------------------------
if (`VP_TOP.EXE.SQRT_STA.RS.iCommitGranted)
begin
$fwrite(VP_LOG,"\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] )
3'b000: $fwrite(VP_LOG,".nowrite ");
3'b001: $fwrite(VP_LOG,".z ");
3'b010: $fwrite(VP_LOG,".y ");
3'b100: $fwrite(VP_LOG,".x ");
3'b111: $fwrite(VP_LOG,".xyz ");
3'b000: `DWRITE".nowrite ");
3'b001: `DWRITE".z ");
3'b010: `DWRITE".y ");
3'b100: `DWRITE".x ");
3'b111: `DWRITE".xyz ");
default:
$fwrite(VP_LOG," %b ",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG]);
`DWRITE" %b ",`VP_TOP.EXE.SQRT_STA.oCommitData[`COMMIT_WE_RNG]);
endcase
$fwrite(VP_LOG," %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
//-----------------------------------------------------------------
 
/branches/beta_2.0/rtl/Theia.v
26,7 → 26,7
input wire Clock,
input wire Reset,
input wire iEnable,
input wire [31:0] iMemReadData,
input wire [31:0] iMemReadData, //Data read from Main memory
input wire iMemDataAvailable,
output wire [31:0] oMemReadAddress,
output wire oMEM_ReadRequest
/branches/beta_2.0/regressions/single_core/test_default_code1.vp
13,12 → 13,12
#define PixelPosition r60
#define InitialPosition r61
#define Three r62
#define CurrentOutputPixel r64
#define CurrentTextureColor r65
//#define CurrentOutputPixel r64
//#define CurrentTextureColor r65
#define V0 r68
#define V1 r69
#define V2 r60
#define TextureColor r61
//#define TextureColor r61
#define LastColumn r62
#define Pixel2DFinalPosition r63
 
56,10 → 56,17
V2 = (0x00050000, 0x00040000,0x00000000 );
 
 
Pixel2DFinalPosition.x = 255;
Pixel2DFinalPosition.y = 255;
Pixel2DFinalPosition.z = 255;
 
//----------------------------------------------------------
function main()
{
vector Hit,AllDone;
vector CurrentOutputPixel = (0,1,2);
vector CurrentTextureColor = (0xa,0xb,0xc);
//Make sure GenerateRay is only called once
if ( PrimitiveCount == MaxPrimitives )
{
67,11 → 74,9
Hit = 0;
}
Hit = CalculateBaricentricIntersection();
PrimitiveCount--;
if ( PrimitiveCount != 0 )
{
exit;
}
if ( PrimitiveCount == 0 ) { exit; }
if (Hit != 0)
{
79,10 → 84,10
PrePixelShader();
}
PixelShader();
PixelShader( CurrentOutputPixel, CurrentTextureColor );
GenerateNextPixel();
return 1;
exit;
exit ;
}
 
//----------------------------------------------------------
121,6 → 126,7
if ( t != ExpectedResult)
{
R66 = 0xdead;
exit ;
} else {
R66 = 0xaced;
}
138,17 → 144,17
return 1;
}
//---------------------------------------------------------------------
function PixelShader()
function PixelShader( CurrentOutputPixel, CurrentTextureColor )
{
//This does nothing because IO is not yet implemented
//I = { `OMWRITE ,`OREG_PIXEL_COLOR ,`CREG_CURRENT_OUTPUT_PIXEL ,`CREG_TEXTURE_COLOR };
//CurrentOutputPixel = CurrentTextureColor; // What the hell?????
out[ CurrentOutputPixel ] = CurrentTextureColor.xyz;
return ;
}
//---------------------------------------------------------------------
function GenerateNextPixel()
function GenerateNextPixel( CurrentOutputPixel, CurrentTextureColor )
{
PrimitiveCount = MaxPrimitives;
TextureColor = 0;
CurrentTextureColor = 0;
CurrentOutputPixel += 3;
/branches/beta_2.0/regressions/single_core/test_default_code1.config
3,4 → 3,6
//All right hand side values all assumed to be hexadecimal numbers
 
vp[2].r[66] == 0000aced 0000aced 0000aced
vp[2].omem[2] != x
vp[2].omem[0] == 0000000a
vp[2].omem[1] == 0000000b
vp[2].omem[2] == 0000000c
/branches/beta_2.0/scripts/run_regressions.pl
8,38 → 8,25
use Data::Dumper;
 
 
my $RegressionsDirectory = "../regressions/single_core/";
my $CompilerDir = "../compiler/bin/";
my $SimulatonResultFile = "test_result.log";
my $TestConfig = undef;
my $Option_Quiet = 1;
#Set the debug option from the command line
$Option_Quiet = 0 if (defined $ARGV[0] and $ARGV[0] == "-debug");
 
#Check to see if the necessary bash scripts are present and have
#the proper execution permissions
die "-E- '$CompilerDir/theia_compile' does not exists or does not have execute permissions\n" if (not -e "$CompilerDir/theia_compile" or not -x "$CompilerDir/theia_compile");
die "-E- '$CompilerDir/theia_vp_compile' does not exists or does not have execute permissions\n" if (not -e "$CompilerDir/theia_vp_compile" or not -x "$CompilerDir/theia_vp_compile");
die "-E- '$CompilerDir/theia_cp_compile' does not exists or does not have execute permissions\n" if (not -e "$CompilerDir/theia_cp_compile" or not -x "$CompilerDir/theia_cp_compile");
 
my $RegressionsDirectory = "../regressions/single_core/";
my $CompilerDir = "../compiler/bin/";
my $SimulatonResultFile = "test_result.log";
my $Option_Quiet = 1;
my $TestConfig;
#Set the enviroment variable THEIA_PROJECT_FOLDER
#this variable is used by the compiler wrapper bash
#scripts under $CompilerDir
my $tmp = `pwd`;
chomp $tmp;
$tmp .= "/../";
$ENV{'THEIA_PROJECT_FOLDER'} = $tmp;
print "THEIA_PROJECT_FOLDER = $ENV{'THEIA_PROJECT_FOLDER'}\n" if ($Option_Quiet == 0);
 
#find all the *.vp files
 
#find all the *.vp files
my @Tests = <$RegressionsDirectory/*.vp>;
for my $Test (@Tests)
{
print sprintf("Running test %-60s ",$Test);
#Compile the test
print "\nCommand: $CompilerDir/theia_compile $Test\n" if ($Option_Quiet == 0);
my $CompilationOutput = `source $CompilerDir/theia_compile $Test`;
my $CompilationOutput = `$CompilerDir/theia_compile $Test`;
if ($CompilationOutput =~ /ERROR/)
{
print $CompilationOutput;
/branches/beta_2.0/compiler/src/cp_compiler/parser.y
570,6 → 570,37
I.Clear();
}
|
constant
{
unsigned int ImmediateValue;
std::string StringHex = $1;
std::stringstream ss;
ss << std::hex << StringHex;
ss >> ImmediateValue;
unsigned int TempRegIndex0 = GetFreeTempRegister();
I.SetOperation( EOPERATION_ASSIGN );
I.SetDestinationAddress( TempRegIndex0 );
I.SetLiteral(ImmediateValue);
mInstructions.push_back(I);
gInsertedInstructions++;
I.SetOperation( EOPERATION_BEQ );
I.SetDestinationAddress( 0 );
I.SetSrc1Address( 0 ); //Compare againts zero
I.SetSrc0Address(TempRegIndex0);
mInstructions.push_back(I);
gInsertedInstructions++;
gBranchStack.push_back(mInstructions.size() - 1);
I.Clear();
I.SetOperation( EOPERATION_NOP );
I.mComment = "branch delay";
I.SetDestinationAddress( gWhileLoopAddress );
mInstructions.push_back(I);
I.Clear();
}
;
scalar_list
:
/branches/beta_2.0/compiler/bin/theia_cp_compile Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream

powered by: WebSVN 2.1.0

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