Line 116... |
Line 116... |
`define TEXTURE_BUFFER_SIZE (256*256*3)
|
`define TEXTURE_BUFFER_SIZE (256*256*3)
|
reg [31:0] rTextures[`TEXTURE_BUFFER_SIZE:0]; //Lets asume we use 256*256 textures
|
reg [31:0] rTextures[`TEXTURE_BUFFER_SIZE:0]; //Lets asume we use 256*256 textures
|
|
|
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
//Debug registers
|
//Debug registers
|
`define TASK_TIMEOUTMAX 50000
|
`define TASK_TIMEOUTMAX 150000//50000
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
|
|
Line 193... |
Line 193... |
ExternalBus_DataReady = 0;
|
ExternalBus_DataReady = 0;
|
rTimeOut = 0;
|
rTimeOut = 0;
|
|
|
|
|
`ifdef DUMP_CODE
|
`ifdef DUMP_CODE
|
$display("Opening dump file....\n");
|
$write("Opening TestBench.log.... ");
|
ucode_file = $fopen("TestBench.log","w");
|
ucode_file = $fopen("TestBench.log","w");
|
|
$display("Done");
|
`endif
|
`endif
|
|
|
//Read Config register values
|
//Read Config register values
|
|
$write("Loading control register.... ");
|
$readmemh("Creg.mem",rControlRegister);
|
$readmemh("Creg.mem",rControlRegister);
|
|
$display("Done");
|
|
|
|
|
rInitialRow = rControlRegister[1];
|
|
rInitialCol = rControlRegister[2];
|
|
// rControlRegister[0] = 32'b0;
|
|
|
|
//Read configuration Data
|
//Read configuration Data
|
|
$write("Loading scene parameters.... ");
|
$readmemh("Params.mem", rSceneParameters );
|
$readmemh("Params.mem", rSceneParameters );
|
|
$display("Done");
|
|
|
|
rInitialRow = rSceneParameters[18];
|
|
rInitialCol = rSceneParameters[19];
|
|
|
//Read Scene Data
|
//Read Scene Data
|
|
$write("Loading scene geometry.... ");
|
$readmemh("Vertex.mem",rVertexBuffer);
|
$readmemh("Vertex.mem",rVertexBuffer);
|
|
$display("Done");
|
|
|
//Read Texture Data
|
//Read Texture Data
|
|
$write("Loading scene texture.... ");
|
$readmemh("Textures.mem",rTextures);
|
$readmemh("Textures.mem",rTextures);
|
|
$display("Done");
|
|
|
|
|
//Read instruction data
|
//Read instruction data
|
|
$write("Loading code allocation table and user shaders.... ");
|
$readmemh("Instructions.mem",rInstructionBuffer);
|
$readmemh("Instructions.mem",rInstructionBuffer);
|
|
$display("Done");
|
|
|
$display("Control Register: %b",rControlRegister[0]);
|
$display("Control Register: %b",rControlRegister[0]);
|
|
|
|
|
|
|
$display("Initial Row: %h",rInitialRow);
|
$display("Initial Row: %h",rInitialRow);
|
$display("Initial Column: %h",rInitialCol);
|
$display("Initial Column: %h",rInitialCol);
|
|
$display("Resolution : %d X %d",`RESOLUTION_WIDTH, `RESOLUTION_HEIGHT );
|
|
|
`LOGME"AABB min %h %h %h\n",rVertexBuffer[0],rVertexBuffer[1],rVertexBuffer[2]);
|
|
`LOGME"AABB max %h %h %h\n",rVertexBuffer[3],rVertexBuffer[4],rVertexBuffer[5]);
|
|
`LOGME"%h %h %h\n",rVertexBuffer[6],rVertexBuffer[7],rVertexBuffer[8]);
|
|
`LOGME"%h %h %h\n",rVertexBuffer[9],rVertexBuffer[10],rVertexBuffer[11]);
|
|
`LOGME"%h %h %h\n",rVertexBuffer[12],rVertexBuffer[13],rVertexBuffer[14]);
|
|
`LOGME"%h %h %h\n",rVertexBuffer[15],rVertexBuffer[16],rVertexBuffer[17]);
|
|
`LOGME"%h %h %h\n",rVertexBuffer[18],rVertexBuffer[19],rVertexBuffer[20]);
|
|
//Open output file
|
//Open output file
|
file = $fopen("Output.ppm");
|
file = $fopen("Output.ppm");
|
log = $fopen("Simulation.log");
|
log = $fopen("Simulation.log");
|
$fwrite(log, "Simulation start time : %dns\n",$time);
|
$fwrite(log, "Simulation start time : %dns\n",$time);
|
$fwrite(log, "Width : %d\n",`RESOLUTION_WIDTH);
|
$fwrite(log, "Width : %d\n",`RESOLUTION_WIDTH);
|
Line 239... |
Line 246... |
$fwrite(file,"P3\n");
|
$fwrite(file,"P3\n");
|
$fwrite(file,"#This file was generated by Theia's RTL simulation\n");
|
$fwrite(file,"#This file was generated by Theia's RTL simulation\n");
|
$fwrite(file,"%d %d\n",`RESOLUTION_WIDTH, `RESOLUTION_HEIGHT );
|
$fwrite(file,"%d %d\n",`RESOLUTION_WIDTH, `RESOLUTION_HEIGHT );
|
$fwrite(file,"255\n");
|
$fwrite(file,"255\n");
|
|
|
`LOGME"Running at %d X %d\n", `RESOLUTION_WIDTH, `RESOLUTION_HEIGHT);
|
|
|
|
`LOGME"%h\n",rSceneParameters[0]);
|
|
`LOGME"%h\n",rSceneParameters[1]);
|
|
`LOGME"%h\n",rSceneParameters[2]);
|
|
|
|
`LOGME"%h\n",rSceneParameters[3]);
|
|
`LOGME"%h\n",rSceneParameters[4]);
|
|
`LOGME"%h\n",rSceneParameters[5]);
|
|
|
|
`LOGME"%h\n",rSceneParameters[6]);
|
|
`LOGME"%h\n",rSceneParameters[7]);
|
|
`LOGME"%h\n",rSceneParameters[8]);
|
|
CurrentPixelRow = 0;
|
CurrentPixelRow = 0;
|
CurrentPixelCol = 0;
|
CurrentPixelCol = 0;
|
#10
|
#10
|
Reset = 1;
|
Reset = 1;
|
ExternalBus_DataReady = 0;
|
ExternalBus_DataReady = 0;
|
Line 531... |
Line 525... |
|
|
always @ (posedge STB_O)
|
always @ (posedge STB_O)
|
begin
|
begin
|
if (TGA_O == `TAG_INSTRUCTION_ADDRESS_TYPE)
|
if (TGA_O == `TAG_INSTRUCTION_ADDRESS_TYPE)
|
begin
|
begin
|
$display("-- %x\n",wMasteData_O);
|
//$display("-- %x\n",wMasteData_O);
|
end
|
end
|
end
|
end
|
assign ADR_O = rAddressToSend;
|
assign ADR_O = rAddressToSend;
|
|
|
reg [7:0] WBMCurrentState,WBMNextState;
|
reg [7:0] WBMCurrentState,WBMNextState;
|
Line 820... |
Line 814... |
MST_O <= 1;
|
MST_O <= 1;
|
IncDP <= 0;
|
IncDP <= 0;
|
rResetDp <= 0;
|
rResetDp <= 0;
|
rClearOutAddress <= 0;
|
rClearOutAddress <= 0;
|
|
|
$display("rDataPointer = %d\n",rDataPointer);
|
|
if (rDataPointer > wConfigurationPacketSize*3)
|
if (rDataPointer > wConfigurationPacketSize*3)
|
WBMNextState <= `WBM_DONE;
|
WBMNextState <= `WBM_DONE;
|
else
|
else
|
WBMNextState <= `WBM_SEND_DATA_PHASE1;
|
WBMNextState <= `WBM_SEND_DATA_PHASE1;
|
|
|