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