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

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [icarus_version/] [rtl/] [Unit_Control.v] - Diff between revs 174 and 178

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 174 Rev 178
/**********************************************************************************
/**********************************************************************************
Theia, Ray Cast Programable graphic Processing Unit.
Theia, Ray Cast Programable graphic Processing Unit.
Copyright (C) 2010  Diego Valverde (diego.valverde.g@gmail.com)
Copyright (C) 2010  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.
 
 
***********************************************************************************/
***********************************************************************************/
/**********************************************************************************
/**********************************************************************************
Description:
Description:
 
 
This is the main Finite State Machine.
This is the main Finite State Machine.
 
 
**********************************************************************************/
**********************************************************************************/
 
 
`timescale 1ns / 1ps
`timescale 1ns / 1ps
`include "aDefinitions.v"
`include "aDefinitions.v"
`ifdef VERILATOR
`ifdef VERILATOR
`include "Collaterals.v"
`include "Collaterals.v"
`endif
`endif
 
 
`define CU_AFTER_RESET_STATE 0
`define CU_AFTER_RESET_STATE 0
`define CU_WAIT_FOR_INITIAL_CONFIGURATION 1
`define CU_WAIT_FOR_INITIAL_CONFIGURATION 1
`define CU_TRIGGER_CONFIGURATION_DATA_READ 2
`define CU_TRIGGER_CONFIGURATION_DATA_READ 2
`define CU_WAIT_FOR_CONFIG_DATA_READ    3
`define CU_WAIT_FOR_CONFIG_DATA_READ    3
`define CU_ACK_CONFIG_DATA_READ 4
`define CU_ACK_CONFIG_DATA_READ 4
`define CU_PRECALCULATE_CONSTANTS 5
`define CU_PRECALCULATE_CONSTANTS 5
`define CU_WAIT_FOR_CONSTANT 6
`define CU_WAIT_FOR_CONSTANT 6
`define CU_ACK_PRECALCULATE_CONSTANTS 7
`define CU_ACK_PRECALCULATE_CONSTANTS 7
`define CU_WAIT_FOR_TASK 8
`define CU_WAIT_FOR_TASK 8
`define CU_READ_TASK_DATA 9
`define CU_READ_TASK_DATA 9
`define CU_WAIT_TASK_DATA_READ 10
`define CU_WAIT_TASK_DATA_READ 10
`define CU_ACK_TASK_DATA_READ 11
`define CU_ACK_TASK_DATA_READ 11
`define CU_TRIGGER_RGU 12
`define CU_TRIGGER_RGU 12
`define CU_WAIT_FOR_RGU 13
`define CU_WAIT_FOR_RGU 13
`define CU_ACK_RGU 14
`define CU_ACK_RGU 14
`define CU_TRIGGER_GEO 15
`define CU_TRIGGER_GEO 15
`define CU_WAIT_FOR_GEO_SYNC 16
`define CU_WAIT_FOR_GEO_SYNC 16
//`define CU_CHECK_AABBIU_REQUEST 17
//`define CU_CHECK_AABBIU_REQUEST 17
`define CU_TRIGGER_TCC 17
`define CU_TRIGGER_TCC 17
//`define CU_CHECK_BIU_REQUEST 18
//`define CU_CHECK_BIU_REQUEST 18
//`define CU_TRIGGER_TFF 18
//`define CU_TRIGGER_TFF 18
//`define CU_CHECK_GEO_DONE 19
//`define CU_CHECK_GEO_DONE 19
//`define CU_WAIT_FOR_TFF 19
//`define CU_WAIT_FOR_TFF 19
`define CU_TRIGGER_AABBIU 20
`define CU_TRIGGER_AABBIU 20
`define CU_WAIT_FOR_AABBIU 21
`define CU_WAIT_FOR_AABBIU 21
`define CU_TRIGGER_MAIN 22
`define CU_TRIGGER_MAIN 22
`define CU_WAIT_FOR_MAIN 23
`define CU_WAIT_FOR_MAIN 23
`define CU_ACK_MAIN 24
`define CU_ACK_MAIN 24
`define CU_TRIGGER_PSU 25
`define CU_TRIGGER_PSU 25
`define CU_WAIT_FOR_PSU 26
`define CU_WAIT_FOR_PSU 26
`define CU_ACK_PSU 27
`define CU_ACK_PSU 27
//`define CU_TRIGGER_PCU 28
//`define CU_TRIGGER_PCU 28
`define CU_WAIT_FOR_PCU 29
`define CU_WAIT_FOR_PCU 29
`define CU_ACK_PCU 30
`define CU_ACK_PCU 30
`define CU_CHECK_HIT 31
`define CU_CHECK_HIT 31
`define CU_CLEAR_REGISTERS 32
`define CU_CLEAR_REGISTERS 32
`define CU_WAIT_CLEAR_REGISTERS 33
`define CU_WAIT_CLEAR_REGISTERS 33
`define CU_ACK_CLEAR_REGISTERS  34
`define CU_ACK_CLEAR_REGISTERS  34
`define CU_TRIGGER_PSU_WITH_TEXTURE 35
`define CU_TRIGGER_PSU_WITH_TEXTURE 35
`define WAIT_FOR_TCC 36
`define WAIT_FOR_TCC 36
`define CU_TRIGGER_NPU 37
`define CU_TRIGGER_NPU 37
`define CU_WAIT_NPU 38
`define CU_WAIT_NPU 38
`define CU_ACK_NPU 39
`define CU_ACK_NPU 39
`define CU_PERFORM_INTIAL_CONFIGURATION 40
`define CU_PERFORM_INTIAL_CONFIGURATION 40
`define CU_SET_PICTH 41
`define CU_SET_PICTH 41
`define CU_TRIGGER_USERCONSTANTS 42
`define CU_TRIGGER_USERCONSTANTS 42
`define CU_WAIT_USERCONSTANTS           43
`define CU_WAIT_USERCONSTANTS           43
`define CU_ACK_USERCONSTANTS 44
`define CU_ACK_USERCONSTANTS 44
`define CU_TRIGGER_USERPIXELSHADER 45
`define CU_TRIGGER_USERPIXELSHADER 45
`define CU_WAIT_FOR_USERPIXELSHADER 46
`define CU_WAIT_FOR_USERPIXELSHADER 46
`define CU_ACK_USERPIXELSHADER 47
`define CU_ACK_USERPIXELSHADER 47
`define CU_DONE 48
`define CU_DONE 48
`define CU_WAIT_FOR_RENDER_ENABLE 49
`define CU_WAIT_FOR_RENDER_ENABLE 49
`define CU_ACK_TCC 50
`define CU_ACK_TCC 50
`define CU_WAIT_FOR_HOST_DATA_AVAILABLE 51
`define CU_WAIT_FOR_HOST_DATA_AVAILABLE 51
`define CU_WAIT_FOR_HOST_DATA_ACK 52
`define CU_WAIT_FOR_HOST_DATA_ACK 52
 
`define CU_COMMIT_PIXEL_RESULT 53
//--------------------------------------------------------------
//--------------------------------------------------------------
module ControlUnit
module ControlUnit
(
(
 
 
input  wire                                  Clock,
input  wire                                  Clock,
input  wire                                  Reset,
input  wire                                  Reset,
input  wire[15:0]                            iControlRegister,
input  wire[15:0]                            iControlRegister,
output reg                                   oGFUEnable,
output reg                                   oGFUEnable,
input    wire                                  iTriggerAABBIURequest,
input    wire                                  iTriggerAABBIURequest,
input   wire                                   iTriggerBIURequest,
input   wire                                   iTriggerBIURequest,
input wire                                   iTriggertTCCRequest,
input wire                                   iTriggertTCCRequest,
output reg                                   oUCodeEnable,
output reg                                   oUCodeEnable,
output reg[`ROM_ADDRESS_WIDTH-1:0]           oCodeInstructioPointer,
output reg[`ROM_ADDRESS_WIDTH-1:0]           oCodeInstructioPointer,
input   wire                                   iUCodeDone,
input   wire                                   iUCodeDone,
input wire                                   iUCodeReturnValue,
input wire                                   iUCodeReturnValue,
input wire                                   iGFUDone,
input wire                                   iGFUDone,
input wire                                   iGEOSync,
input wire                                   iGEOSync,
output reg                                   oTriggerTFF,
output reg                                   oTriggerTFF,
input wire                                   iTFFDone,
input wire                                   iTFFDone,
input wire                                   MST_I,
input wire                                   MST_I,
//output reg[2:0]                              //oRamBusOwner,
//output reg[2:0]                              //oRamBusOwner,
input wire                                   iIODone,
input wire                                   iIODone,
output reg                                   oSetCurrentPitch,
output reg                                   oSetCurrentPitch,
output reg                                   oFlipMemEnabled,
output reg                                   oFlipMemEnabled,
output reg                                   oFlipMem,
output reg                                   oFlipMem,
output reg                                   oIOWritePixel,
output reg                                   oIOWritePixel,
input wire                                   iRenderEnable,
input wire                                   iRenderEnable,
input wire                                   iSceneTraverseComplete,
input wire                                   iSceneTraverseComplete,
input wire                                   iHostDataAvailable,
input wire                                   iHostDataAvailable,
input wire                                   iHostAckDataRead,
input wire                                   iHostAckDataRead,
 
 
`ifdef DEBUG
`ifdef DEBUG
input wire[`MAX_CORES-1:0]                  iDebug_CoreID,
input wire[`MAX_CORES-1:0]                  iDebug_CoreID,
`endif
`endif
 
 
output reg                                   oResultCommited,
output reg                                   oResultCommited,
output reg                                   oDone
output reg                                   oDone
 
 
);
);
 
 
//Internal State Machine varibles
//Internal State Machine varibles
reg     [5:0]    CurrentState;
reg     [5:0]    CurrentState;
reg     [5:0]    NextState;
reg     [5:0]    NextState;
integer ucode_file;
integer ucode_file;
reg rResetHitFlop,rHitFlopEnable;
reg rResetHitFlop,rHitFlopEnable;
wire wHit;
wire wHit;
 
 
`ifdef DUMP_CODE
`ifdef DUMP_CODE
        integer log;
        integer log;
 
 
        initial
        initial
        begin
        begin
 
 
        //$display("Opening ucode dump file....\n");
        //$display("Opening ucode dump file....\n");
        ucode_file = $fopen("CU.log","w");
        ucode_file = $fopen("CU.log","w");
        end
        end
 
 
`endif
`endif
 
 
 
 
 
 
//--------------------------------------------------------------
//--------------------------------------------------------------
FFToggleOnce_1Bit FFTO1
FFToggleOnce_1Bit FFTO1
(
(
        .Clock( Clock ),
        .Clock( Clock ),
        .Reset( rResetHitFlop ),
        .Reset( rResetHitFlop ),
        .Enable( rHitFlopEnable && iUCodeDone ),
        .Enable( rHitFlopEnable && iUCodeDone ),
        .S( iUCodeReturnValue ),
        .S( iUCodeReturnValue ),
        .Q( wHit )
        .Q( wHit )
);
);
//--------------------------------------------------------------
//--------------------------------------------------------------
 
 
`ifdef DEBUG_CU
`ifdef DEBUG_CU
        always @ ( wHit )
        always @ ( wHit )
        begin
        begin
                $display( "*** Triangle HIT ***\n");
                $display( "*** Triangle HIT ***\n");
        end
        end
`endif
`endif
 
 
//Next states logic and Reset sequence
//Next states logic and Reset sequence
always @(posedge Clock or posedge Reset)
always @(posedge Clock or posedge Reset)
  begin
  begin
 
 
    if (Reset)
    if (Reset)
                CurrentState <= `CU_AFTER_RESET_STATE;
                CurrentState <= `CU_AFTER_RESET_STATE;
    else
    else
                CurrentState <= NextState;
                CurrentState <= NextState;
 
 
  end
  end
 
 
//--------------------------------------------------------------
//--------------------------------------------------------------
always @ ( * )
always @ ( * )
begin
begin
        case (CurrentState)
        case (CurrentState)
        //-----------------------------------------
        //-----------------------------------------
        `CU_AFTER_RESET_STATE:
        `CU_AFTER_RESET_STATE:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CU_AFTER_RESET_STATE\n",$time);
                $display("%d CU_AFTER_RESET_STATE\n",$time);
        `endif
        `endif
 
 
                //oRamBusOwner                          = 0;
                //oRamBusOwner                          = 0;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_INITIAL;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_INITIAL;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 1;
                rResetHitFlop                           = 1;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 1;
                oSetCurrentPitch        = 1;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState                                       = `CU_WAIT_FOR_INITIAL_CONFIGURATION;
                NextState                                       = `CU_WAIT_FOR_INITIAL_CONFIGURATION;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
 
 
        `CU_WAIT_FOR_INITIAL_CONFIGURATION:
        `CU_WAIT_FOR_INITIAL_CONFIGURATION:
        begin
        begin
        //$display("CORE: %d CU_WAIT_FOR_INITIAL_CONFIGURATION", iDebug_CoreID);
        //$display("CORE: %d CU_WAIT_FOR_INITIAL_CONFIGURATION", iDebug_CoreID);
//              `ifdef DEBUG_CU
//              `ifdef DEBUG_CU
//                      $display("%d Control: CU_WAIT_FOR_INITIAL_CONFIGURATION\n",$time);
//                      $display("%d Control: CU_WAIT_FOR_INITIAL_CONFIGURATION\n",$time);
//              `endif
//              `endif
 
 
                //oRamBusOwner                          = 0;
                //oRamBusOwner                          = 0;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 1;
                rResetHitFlop                           = 1;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;          
                //oIncCurrentPitch        = 0;          
 
 
                if ( MST_I  )
                if ( MST_I  )
                        NextState = `CU_PERFORM_INTIAL_CONFIGURATION;//`CU_WAIT_FOR_CONFIG_DATA_READ;
                        NextState = `CU_PERFORM_INTIAL_CONFIGURATION;//`CU_WAIT_FOR_CONFIG_DATA_READ;
                else
                else
                        NextState = `CU_WAIT_FOR_INITIAL_CONFIGURATION;
                        NextState = `CU_WAIT_FOR_INITIAL_CONFIGURATION;
 
 
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_PERFORM_INTIAL_CONFIGURATION:
        `CU_PERFORM_INTIAL_CONFIGURATION:
        begin
        begin
 
 
        //oRamBusOwner                          = 0;
        //oRamBusOwner                          = 0;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 1;
                rResetHitFlop                           = 1;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;          
                //oIncCurrentPitch        = 0;          
 
 
                if ( MST_I  == 0 && iRenderEnable == 1'b1)
                if ( MST_I  == 0 && iRenderEnable == 1'b1)
                        NextState = `CU_CLEAR_REGISTERS;//`CU_WAIT_FOR_CONFIG_DATA_READ;
                        NextState = `CU_CLEAR_REGISTERS;//`CU_WAIT_FOR_CONFIG_DATA_READ;
                else
                else
                        NextState = `CU_PERFORM_INTIAL_CONFIGURATION;
                        NextState = `CU_PERFORM_INTIAL_CONFIGURATION;
 
 
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_CLEAR_REGISTERS:
        `CU_CLEAR_REGISTERS:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CU_CLEAR_REGISTERS\n",$time);
                $display("%d CU_CLEAR_REGISTERS\n",$time);
        `endif
        `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_INITIAL;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_INITIAL;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 1;    //*
                oUCodeEnable                            = 1;    //*
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
 
 
                ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState                                       = `CU_WAIT_CLEAR_REGISTERS;
                NextState                                       = `CU_WAIT_CLEAR_REGISTERS;
        end
        end
//-----------------------------------------     
//-----------------------------------------     
        `CU_WAIT_CLEAR_REGISTERS:
        `CU_WAIT_CLEAR_REGISTERS:
        begin
        begin
//      `ifdef DEBUG_CU
//      `ifdef DEBUG_CU
//              $display("%d CU_WAIT_CLEAR_REGISTERS\n",$time);
//              $display("%d CU_WAIT_CLEAR_REGISTERS\n",$time);
//      `endif  
//      `endif  
                //$display("CORE: %d CU_WAIT_CLEAR_REGISTERS", iDebug_CoreID);
                //$display("CORE: %d CU_WAIT_CLEAR_REGISTERS", iDebug_CoreID);
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_INITIAL;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_INITIAL;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_CLEAR_REGISTERS;
                        NextState = `CU_ACK_CLEAR_REGISTERS;
                else
                else
                        NextState = `CU_WAIT_CLEAR_REGISTERS;
                        NextState = `CU_WAIT_CLEAR_REGISTERS;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_ACK_CLEAR_REGISTERS:
        `CU_ACK_CLEAR_REGISTERS:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CU_ACK_CLEAR_REGISTERS\n", $time);
                $display("%d CU_ACK_CLEAR_REGISTERS\n", $time);
        `endif
        `endif
 
 
        //$display("CORE: %d CU_ACK_CLEAR_REGISTERS", iDebug_CoreID);
        //$display("CORE: %d CU_ACK_CLEAR_REGISTERS", iDebug_CoreID);
 
 
                //oRamBusOwner                          = 0;
                //oRamBusOwner                          = 0;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0; //*         
                oUCodeEnable                            = 0; //*         
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_WAIT_FOR_CONFIG_DATA_READ;
                NextState = `CU_WAIT_FOR_CONFIG_DATA_READ;
        end
        end
 
 
 
 
 
 
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_FOR_CONFIG_DATA_READ:
        `CU_WAIT_FOR_CONFIG_DATA_READ:
        begin
        begin
 
 
//              `ifdef DEBUG_CU
//              `ifdef DEBUG_CU
//                      $display("%d Control: CU_WAIT_FOR_CONFIG_DATA_READ\n",$time);
//                      $display("%d Control: CU_WAIT_FOR_CONFIG_DATA_READ\n",$time);
//              `endif
//              `endif
 
 
 
 
//$display("CORE: %d CU_WAIT_FOR_CONFIG_DATA_READ", iDebug_CoreID);
//$display("CORE: %d CU_WAIT_FOR_CONFIG_DATA_READ", iDebug_CoreID);
 
 
                //oRamBusOwner                          = 0;//`REG_BUS_OWNED_BY_BCU;
                //oRamBusOwner                          = 0;//`REG_BUS_OWNED_BY_BCU;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( MST_I == 0  )
                if ( MST_I == 0  )
                        NextState = `CU_PRECALCULATE_CONSTANTS;
                        NextState = `CU_PRECALCULATE_CONSTANTS;
                else
                else
                        NextState = `CU_WAIT_FOR_CONFIG_DATA_READ;
                        NextState = `CU_WAIT_FOR_CONFIG_DATA_READ;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_PRECALCULATE_CONSTANTS:
        `CU_PRECALCULATE_CONSTANTS:
        begin
        begin
//$display("CORE: %d CU_PRECALCULATE_CONSTANTS", iDebug_CoreID);
//$display("CORE: %d CU_PRECALCULATE_CONSTANTS", iDebug_CoreID);
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_PRECALCULATE_CONSTANTS\n", $time);
                $display("%d Control: CU_PRECALCULATE_CONSTANTS\n", $time);
        `endif
        `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_CPPU;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_CPPU;
                oGFUEnable                              = 0;
                oGFUEnable                              = 0;
                oUCodeEnable                            = 1; //*        
                oUCodeEnable                            = 1; //*        
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_WAIT_FOR_CONSTANT;
                NextState = `CU_WAIT_FOR_CONSTANT;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_FOR_CONSTANT:
        `CU_WAIT_FOR_CONSTANT:
        begin
        begin
//      `ifdef DEBUG_CU
//      `ifdef DEBUG_CU
//              $display("%d Control: CU_WAIT_FOR_CONSTANT\n", $time);
//              $display("%d Control: CU_WAIT_FOR_CONSTANT\n", $time);
//      `endif
//      `endif
 
 
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_CPPU;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_CPPU;
                oGFUEnable                                 = 0;
                oGFUEnable                                 = 0;
                oUCodeEnable                            = 0; //*         
                oUCodeEnable                            = 0; //*         
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_PRECALCULATE_CONSTANTS;
                        NextState = `CU_ACK_PRECALCULATE_CONSTANTS;
                else
                else
                        NextState = `CU_WAIT_FOR_CONSTANT;
                        NextState = `CU_WAIT_FOR_CONSTANT;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_ACK_PRECALCULATE_CONSTANTS:
        `CU_ACK_PRECALCULATE_CONSTANTS:
        begin
        begin
        //$display("CORE: %d CU_ACK_PRECALCULATE_CONSTANTS", iDebug_CoreID);
        //$display("CORE: %d CU_ACK_PRECALCULATE_CONSTANTS", iDebug_CoreID);
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_ACK_PRECALCULATE_CONSTANTS\n", $time);
                $display("%d Control: CU_ACK_PRECALCULATE_CONSTANTS\n", $time);
        `endif
        `endif
 
 
 
 
                //oRamBusOwner                          = 0;//`REG_BUS_OWNED_BY_BCU;
                //oRamBusOwner                          = 0;//`REG_BUS_OWNED_BY_BCU;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                 = 0;
                oGFUEnable                                 = 0;
                oUCodeEnable                            = 0; //*         
                oUCodeEnable                            = 0; //*         
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_TRIGGER_USERCONSTANTS;//CU_WAIT_FOR_TASK;
                NextState = `CU_TRIGGER_USERCONSTANTS;//CU_WAIT_FOR_TASK;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
 
 
        `CU_TRIGGER_USERCONSTANTS:
        `CU_TRIGGER_USERCONSTANTS:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_TRIGGER_USERCONSTANTS\n",$time);
                $display("%d Control: CU_TRIGGER_USERCONSTANTS\n",$time);
        `endif
        `endif
 
 
                //$display("CORE: %d CU_TRIGGER_USERCONSTANTS", iDebug_CoreID);
                //$display("CORE: %d CU_TRIGGER_USERCONSTANTS", iDebug_CoreID);
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_USERCONSTANTS;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_USERCONSTANTS;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 1;    //*
                oUCodeEnable                            = 1;    //*
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_WAIT_USERCONSTANTS;
                NextState = `CU_WAIT_USERCONSTANTS;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_USERCONSTANTS:
        `CU_WAIT_USERCONSTANTS:
        begin
        begin
 
 
//      `ifdef DEBUG_CU
//      `ifdef DEBUG_CU
//              $display("%d Control: CU_WAIT_FOR_RGU\n",$time);
//              $display("%d Control: CU_WAIT_FOR_RGU\n",$time);
//      `endif
//      `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_USERCONSTANTS;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_USERCONSTANTS;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_USERCONSTANTS;
                        NextState = `CU_ACK_USERCONSTANTS;
                else
                else
                        NextState = `CU_WAIT_USERCONSTANTS;
                        NextState = `CU_WAIT_USERCONSTANTS;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_ACK_USERCONSTANTS:
        `CU_ACK_USERCONSTANTS:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_ACK_RGU\n",$time);
                $display("%d Control: CU_ACK_RGU\n",$time);
        `endif
        `endif
 
 
        //$display("CORE: %d CU_ACK_USERCONSTANTS", iDebug_CoreID);
        //$display("CORE: %d CU_ACK_USERCONSTANTS", iDebug_CoreID);
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0; //* 
                oUCodeEnable                            = 0; //* 
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone  == 0)
                if ( iUCodeDone  == 0)
                        NextState = `CU_WAIT_FOR_RENDER_ENABLE;
                        NextState = `CU_WAIT_FOR_RENDER_ENABLE;
                else
                else
                        NextState = `CU_ACK_USERCONSTANTS;
                        NextState = `CU_ACK_USERCONSTANTS;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_FOR_RENDER_ENABLE:
        `CU_WAIT_FOR_RENDER_ENABLE:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
        $display("CORE: %d CU_WAIT_FOR_RENDER_ENABLE", iDebug_CoreID);
        $display("CORE: %d CU_WAIT_FOR_RENDER_ENABLE", iDebug_CoreID);
        `endif
        `endif
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oUCodeEnable                            = 0; //* 
                oUCodeEnable                            = 0; //* 
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iRenderEnable)
                if ( iRenderEnable)
                        NextState = `CU_TRIGGER_RGU;
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;//`CU_TRIGGER_RGU;
                else
                else
                        NextState = `CU_WAIT_FOR_RENDER_ENABLE;
                        NextState = `CU_WAIT_FOR_RENDER_ENABLE;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_TRIGGER_RGU:
        /*
        begin
        `CU_TRIGGER_RGU:
 
        begin
        `ifdef DEBUG_CU
 
                $display("CORE: %d CU_TRIGGER_RGU", iDebug_CoreID);
 
        `endif
 
 
 
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
 
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_RGU;
 
                oGFUEnable                                      = 0;
 
                oUCodeEnable                            = 1;    //*
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
      oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 0;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 0;
 
                //oIncCurrentPitch        = 0;
 
 
 
                NextState = `CU_WAIT_FOR_RGU;
 
        end
 
        //-----------------------------------------
 
        `CU_WAIT_FOR_RGU:
 
        begin
 
 
 
//      `ifdef DEBUG_CU
 
//              $display("%d Control: CU_WAIT_FOR_RGU\n",$time);
 
//      `endif
 
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
 
                oCodeInstructioPointer  = 0;
 
                oGFUEnable                                      = 0;
 
                oUCodeEnable                            = 0;
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
      oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 0;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 0;
 
                //oIncCurrentPitch        = 0;
 
 
 
                if ( iUCodeDone )
 
                        NextState = `CU_ACK_RGU;
 
                else
 
                        NextState = `CU_WAIT_FOR_RGU;
 
        end
 
        //-----------------------------------------
 
        `CU_ACK_RGU:
 
        begin
 
 
 
        `ifdef DEBUG_CU
 
                $display("CORE: %d CU_ACK_RGU", iDebug_CoreID);
 
        `endif
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
 
                oCodeInstructioPointer  = 0;
 
                oGFUEnable                                      = 0;
 
                oUCodeEnable                            = 0; //* 
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
      oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 1;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 0;
 
                //oIncCurrentPitch        = 0;
 
 
 
                if ( iUCodeDone  == 0 & iRenderEnable == 1)
        `ifdef DEBUG_CU
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;//`CU_TRIGGER_GEO;///////////// GET RID OF GEO!!!
                $display("CORE: %d CU_TRIGGER_RGU", iDebug_CoreID);
                else
        `endif
                        NextState = `CU_ACK_RGU;
 
 
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
 
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_RGU;
 
                oGFUEnable                                      = 0;
 
                oUCodeEnable                            = 1;
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
      oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 0;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 0;
 
                //oIncCurrentPitch        = 0;
 
 
 
                NextState = `CU_WAIT_FOR_RGU;
 
        end
 
        //-----------------------------------------
 
        `CU_WAIT_FOR_RGU:
 
        begin
 
 
 
//      `ifdef DEBUG_CU
 
//              $display("%d Control: CU_WAIT_FOR_RGU\n",$time);
 
//      `endif
 
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
 
                oCodeInstructioPointer  = 0;
 
                oGFUEnable                                      = 0;
 
                oUCodeEnable                            = 0;
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
      oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 0;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 0;
 
                //oIncCurrentPitch        = 0;
 
 
 
                if ( iUCodeDone )
 
                        NextState = `CU_ACK_RGU;
 
                else
 
                        NextState = `CU_WAIT_FOR_RGU;
 
        end
 
        //-----------------------------------------
 
        `CU_ACK_RGU:
 
        begin
 
 
 
        `ifdef DEBUG_CU
 
                $display("CORE: %d CU_ACK_RGU", iDebug_CoreID);
 
        `endif
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
 
                oCodeInstructioPointer  = 0;
 
                oGFUEnable                                      = 0;
 
                oUCodeEnable                            = 0;
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
      oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 1;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 0;
 
                //oIncCurrentPitch        = 0;
 
 
 
                if ( iUCodeDone  == 0 & iRenderEnable == 1)
 
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;//`CU_TRIGGER_GEO;///////////// GET RID OF GEO!!!
 
                else
 
                        NextState = `CU_ACK_RGU;
 
 
        end
        end
 
        */
        //-----------------------------------------
        //-----------------------------------------
        `CU_TRIGGER_TCC:
        `CU_TRIGGER_TCC:
        begin
        begin
        ////$display("CU_TRIGGER_TCC");
        ////$display("CU_TRIGGER_TCC");
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE %d Control: CU_TRIGGER_TCC\n",$time,iDebug_CoreID);
                $display("%d CORE %d Control: CU_TRIGGER_TCC\n",$time,iDebug_CoreID);
        `endif
        `endif
 
 
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_TCC;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_TCC;
                oUCodeEnable                            = 1;    //*
                oUCodeEnable                            = 1;    //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0; //We need u,v from last IO read cycle
                oFlipMem                                                = 0; //We need u,v from last IO read cycle
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
                oDone                   = 0;
                oDone                   = 0;
 
 
          NextState  = `WAIT_FOR_TCC;
          NextState  = `WAIT_FOR_TCC;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `WAIT_FOR_TCC:
        `WAIT_FOR_TCC:
        begin
        begin
 
 
        ////$display("WAIT_FOR_TCC");
        ////$display("WAIT_FOR_TCC");
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_TCC;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_TCC;
                oUCodeEnable                            = 0;     //*
                oUCodeEnable                            = 0;     //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
           if ( iUCodeDone )
           if ( iUCodeDone )
                        NextState = `CU_ACK_TCC;
                        NextState = `CU_ACK_TCC;
                else
                else
                        NextState = `WAIT_FOR_TCC;
                        NextState = `WAIT_FOR_TCC;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_ACK_TCC:
        `CU_ACK_TCC:
        begin
        begin
 
 
        ////$display("WAIT_FOR_TCC");
        ////$display("WAIT_FOR_TCC");
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_TCC;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_TCC;
                oUCodeEnable                            = 0;     //*
                oUCodeEnable                            = 0;     //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
           if ( iUCodeDone == 0 && iSceneTraverseComplete == 1'b1)  //DDDD
           if ( iUCodeDone == 0 && iSceneTraverseComplete == 1'b1)  //DDDD
                        NextState = `CU_TRIGGER_PSU_WITH_TEXTURE;
                        NextState = `CU_TRIGGER_PSU_WITH_TEXTURE;
                else if (iUCodeDone == 0 && iSceneTraverseComplete == 1'b0)
                else if (iUCodeDone == 0 && iSceneTraverseComplete == 1'b0)
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
                else
                else
                        NextState = `CU_ACK_TCC;
                        NextState = `CU_ACK_TCC;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        /*
        /*
        Was there any hit at all?
        Was there any hit at all?
        At this point, all the triangles in the list
        At this point, all the triangles in the list
        have been traversed looking for a hit with our ray.
        have been traversed looking for a hit with our ray.
        There are 3 possibilities:
        There are 3 possibilities:
        1) The was not a single hit, then just paint a black
        1) The was not a single hit, then just paint a black
        pixel on the screen and send it via PCU.
        pixel on the screen and send it via PCU.
        2)There was a hit and Texturing is not enabled, then trigger the PSU with
        2)There was a hit and Texturing is not enabled, then trigger the PSU with
        no texturing
        no texturing
        2) There was a hit and Texturing is enabled, then fetch the texture
        2) There was a hit and Texturing is enabled, then fetch the texture
        values corresponding to the triangle that we hitted.
        values corresponding to the triangle that we hitted.
        */
        */
        `CU_CHECK_HIT:
        `CU_CHECK_HIT:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE %d Control: CU_CHECK_HIT\n",$time,iDebug_CoreID);
                $display("%d CORE %d Control: CU_CHECK_HIT\n",$time,iDebug_CoreID);
        `endif
        `endif
 
 
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_GFU;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_GFU;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;     ///CHANGED Aug 15
                oGFUEnable                                      = 0;     ///CHANGED Aug 15
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
           oTriggerTFF             = 0;
           oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
 
 
 
 
 
 
                if (wHit)
                if (wHit)
                begin
                begin
                        //$display("HIT");
                        //$display("HIT");
                        NextState = `CU_TRIGGER_PSU_WITH_TEXTURE;
                        NextState = `CU_TRIGGER_PSU_WITH_TEXTURE;
                end
                end
                else
                else
                        NextState = `CU_TRIGGER_USERPIXELSHADER;//666
                        NextState = `CU_TRIGGER_USERPIXELSHADER;//666
 
 
        end
        end
 
 
        //-----------------------------------------
        //-----------------------------------------
        `CU_TRIGGER_PSU_WITH_TEXTURE:
        `CU_TRIGGER_PSU_WITH_TEXTURE:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_TRIGGER_PSU_WITH_TEXTURE\n",$time);
                $display("%d Control: CU_TRIGGER_PSU_WITH_TEXTURE\n",$time);
        `endif
        `endif
 
 
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
           //oRamBusOwner                               = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PSU2;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PSU2;
                oUCodeEnable                            = 1;
                oUCodeEnable                            = 1;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 1;
                rResetHitFlop                           = 1;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;//////NEW NEW NEW NEW  
                oFlipMemEnabled         = 0;//////NEW NEW NEW NEW  
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
           //oIncCurrentPitch        = 0;
           //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_WAIT_FOR_PSU;
                NextState = `CU_WAIT_FOR_PSU;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_FOR_HOST_DATA_ACK:
        `CU_WAIT_FOR_HOST_DATA_ACK:
        begin
        begin
           oCodeInstructioPointer       = 0;
           oCodeInstructioPointer       = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
 
 
                if ( iHostAckDataRead )
                if ( iHostAckDataRead )
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
                else
                else
                        NextState = `CU_WAIT_FOR_HOST_DATA_ACK;
                        NextState = `CU_WAIT_FOR_HOST_DATA_ACK;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        //Wait until data from Host becomes available
        //Wait until data from Host becomes available
        `CU_WAIT_FOR_HOST_DATA_AVAILABLE:
        `CU_WAIT_FOR_HOST_DATA_AVAILABLE:
        begin
        begin
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
 
 
                if ( iHostDataAvailable )
                if ( iHostDataAvailable )
                        NextState = `CU_TRIGGER_MAIN;
                        NextState = `CU_TRIGGER_MAIN;
                else
                else
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
 
 
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_TRIGGER_MAIN:
        `CU_TRIGGER_MAIN:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE: %d Control: CU_TRIGGER_MAIN\n",$time,iDebug_CoreID);
                $display("%d CORE: %d Control: CU_TRIGGER_MAIN\n",$time,iDebug_CoreID);
        `endif
        `endif
 
 
                        //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                        //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                        oCodeInstructioPointer  = `ENTRYPOINT_INDEX_MAIN;
                        oCodeInstructioPointer  = `ENTRYPOINT_INDEX_MAIN;
                        oUCodeEnable                            = 1;
                        oUCodeEnable                            = 1;
                        oGFUEnable                                      = 1;
                        oGFUEnable                                      = 1;
                        oIOWritePixel                           = 0;
                        oIOWritePixel                           = 0;
                        rResetHitFlop                           = 0;
                        rResetHitFlop                           = 0;
                        rHitFlopEnable                          = 0;
                        rHitFlopEnable                          = 0;
         oTriggerTFF             = 0;
         oTriggerTFF             = 0;
                        oSetCurrentPitch        = 0;
                        oSetCurrentPitch        = 0;
                        oFlipMemEnabled         = 1;
                        oFlipMemEnabled         = 1;
                        oFlipMem                                                = 1;
                        oFlipMem                                                = 1;
                        oDone                   = 0;
                        oDone                   = 0;
                        oResultCommited                 = 0;
                        oResultCommited                 = 0;
                        ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                        ////$display("\n\n %d XOXOXOXOX FLIP XOXOXOXOXOX\n\n",$time);
                        //oIncCurrentPitch        = 0;
                        //oIncCurrentPitch        = 0;
                //      $stop();
                //      $stop();
 
 
                        NextState = `CU_WAIT_FOR_MAIN;
                        NextState = `CU_WAIT_FOR_MAIN;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_FOR_MAIN:
        `CU_WAIT_FOR_MAIN:
        begin
        begin
//      `ifdef DEBUG_CU
//      `ifdef DEBUG_CU
//              $display("%d Control: CU_WAIT_FOR_MAIN\n",$time);
//              $display("%d Control: CU_WAIT_FOR_MAIN\n",$time);
//      `endif
//      `endif
 
 
                        //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                        //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                        oCodeInstructioPointer  = `ENTRYPOINT_INDEX_MAIN;
                        oCodeInstructioPointer  = `ENTRYPOINT_INDEX_MAIN;
                        oUCodeEnable                            = 0;
                        oUCodeEnable                            = 0;
                        oGFUEnable                                      = 1;
                        oGFUEnable                                      = 1;
                        oIOWritePixel                           = 0;
                        oIOWritePixel                           = 0;
                        rResetHitFlop                           = 0;
                        rResetHitFlop                           = 0;
                        rHitFlopEnable                          = 1;
                        rHitFlopEnable                          = 1;
         oTriggerTFF             = 0;
         oTriggerTFF             = 0;
                        oSetCurrentPitch        = 0;
                        oSetCurrentPitch        = 0;
                        oFlipMemEnabled         = 1;
                        oFlipMemEnabled         = 1;
                        oFlipMem                                                = 0;
                        oFlipMem                                                = 0;
                        oDone                   = 0;
                        oDone                   = 0;
                        oResultCommited                 = 0;
                        oResultCommited                 = 0;
                        //oIncCurrentPitch        = 0;
                        //oIncCurrentPitch        = 0;
 
 
                        //NextState = `CU_WAIT_FOR_MAIN;
                        //NextState = `CU_WAIT_FOR_MAIN;
 
 
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_MAIN;
                        NextState = `CU_ACK_MAIN;
                else
                else
                        NextState = `CU_WAIT_FOR_MAIN;
                        NextState = `CU_WAIT_FOR_MAIN;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        /*
        /*
                ACK UCODE by setting oUCodeEnable = 0
                ACK UCODE by setting oUCodeEnable = 0
        */
        */
        `CU_ACK_MAIN:
        `CU_ACK_MAIN:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE: %d Control: CU_ACK_MAIN\n",$time, iDebug_CoreID);
                $display("%d CORE: %d Control: CU_ACK_MAIN\n",$time, iDebug_CoreID);
        `endif
        `endif
 
 
                        //oRamBusOwner                          = `REG_BUS_OWNED_BY_GFU;
                        //oRamBusOwner                          = `REG_BUS_OWNED_BY_GFU;
                        oCodeInstructioPointer  = 0; //*
                        oCodeInstructioPointer  = 0; //*
                        oUCodeEnable                            = 0;     //*
                        oUCodeEnable                            = 0;     //*
                        oGFUEnable                                      = 0; //Changed Aug 15
                        oGFUEnable                                      = 0; //Changed Aug 15
                        oIOWritePixel                           = 0;
                        oIOWritePixel                           = 0;
                        rResetHitFlop                           = 0;
                        rResetHitFlop                           = 0;
                        rHitFlopEnable                          = 1;
                        rHitFlopEnable                          = 1;
         oTriggerTFF             = 0;
         oTriggerTFF             = 0;
                        oSetCurrentPitch        = 0;
                        oSetCurrentPitch        = 0;
                        oFlipMemEnabled         = 0;
                        oFlipMemEnabled         = 0;
                        oFlipMem                                                = 0;
                        oFlipMem                                                = 0;
                        oDone                   = 0;
                        oDone                   = 0;
                        oResultCommited                 = 0;
                        oResultCommited                 = 0;
                        //oIncCurrentPitch        = 0;
                        //oIncCurrentPitch        = 0;
 
 
        //              $stop();
        //              $stop();
 
        /*
                        if ( iUCodeDone == 1'b0 & iSceneTraverseComplete == 1'b1)
                        if ( iUCodeDone == 1'b0 & iSceneTraverseComplete == 1'b1)
                                NextState =  `CU_CHECK_HIT;
                                NextState =  `CU_CHECK_HIT;
                        else if ( iUCodeDone == 1'b0 & iSceneTraverseComplete == 1'b0) //ERROR!!! What if iSceneTraverseComplete will become 1 a cycle after this??
                        else if ( iUCodeDone == 1'b0 & iSceneTraverseComplete == 1'b0) //ERROR!!! What if iSceneTraverseComplete will become 1 a cycle after this??
                                NextState = `CU_WAIT_FOR_HOST_DATA_ACK;//`CU_WAIT_FOR_HOST_DATA_AVAILABLE;
                                NextState = `CU_WAIT_FOR_HOST_DATA_ACK;//`CU_WAIT_FOR_HOST_DATA_AVAILABLE;
 
                        else
 
                                NextState = `CU_ACK_MAIN;
 
                */
 
                if (iUCodeDone == 1'b0 && iUCodeReturnValue == 0)
 
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
 
                else if (iUCodeDone == 1'b0 && iUCodeReturnValue == 1)
 
         NextState = `CU_COMMIT_PIXEL_RESULT;
                        else
                        else
                                NextState = `CU_ACK_MAIN;
                        NextState = `CU_ACK_MAIN;
 
 
 
        end
 
        //-----------------------------------------
 
        `CU_COMMIT_PIXEL_RESULT:
 
        begin
 
                oCodeInstructioPointer  = 0;
 
                oUCodeEnable                            = 0;
 
                oGFUEnable                                      = 0;
 
                oIOWritePixel                           = 0;
 
                rResetHitFlop                           = 0;
 
                rHitFlopEnable                          = 0;
 
                oTriggerTFF             = 0;
 
                oSetCurrentPitch        = 0;
 
                oFlipMemEnabled         = 0;
 
                oFlipMem                                                = 0;
 
                oDone                   = 0;
 
                oResultCommited                 = 1;
 
 
 
 
 
                NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
 
 
        `CU_WAIT_FOR_PSU:
        `CU_WAIT_FOR_PSU:
        begin
        begin
 
 
//      `ifdef DEBUG_CU
//      `ifdef DEBUG_CU
//              $display("%d Control: CU_TRIGGER_PSU\n",$time);
//              $display("%d Control: CU_TRIGGER_PSU\n",$time);
//      `endif
//      `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PSU;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PSU;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_PSU;
                        NextState = `CU_ACK_PSU;
                else
                else
                        NextState = `CU_WAIT_FOR_PSU;
                        NextState = `CU_WAIT_FOR_PSU;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_ACK_PSU:
        `CU_ACK_PSU:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE: %d Control: CU_ACK_PSU\n",$time, iDebug_CoreID);
                $display("%d CORE: %d Control: CU_ACK_PSU\n",$time, iDebug_CoreID);
        `endif
        `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;     //*
                oCodeInstructioPointer  = 0;     //*
                oUCodeEnable                            = 0;     //*
                oUCodeEnable                            = 0;     //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone  == 0)
                if ( iUCodeDone  == 0)
                        NextState = `CU_TRIGGER_USERPIXELSHADER;
                        NextState = `CU_TRIGGER_USERPIXELSHADER;
                else
                else
                        NextState = `CU_ACK_PSU;
                        NextState = `CU_ACK_PSU;
 
 
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
 
 
        //-----------------------------------------
        //-----------------------------------------
        `CU_TRIGGER_NPU: //Next Pixel Unit
        `CU_TRIGGER_NPU: //Next Pixel Unit
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE: %d Control: CU_TRIGGER_NPU\n",$time, iDebug_CoreID);
                $display("%d CORE: %d Control: CU_TRIGGER_NPU\n",$time, iDebug_CoreID);
        `endif
        `endif
                //$write("*");
                //$write("*");
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_NPG;        //*
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_NPG;        //*
                oUCodeEnable                            = 1;    //*
                oUCodeEnable                            = 1;    //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_WAIT_NPU;
                NextState = `CU_WAIT_NPU;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_NPU:
        `CU_WAIT_NPU:
        begin
        begin
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_NPG;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_NPG;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_NPU;
                        NextState = `CU_ACK_NPU;
                else
                else
                        NextState = `CU_WAIT_NPU;
                        NextState = `CU_WAIT_NPU;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        /*
        /*
        Next Pixel generation: here we either goto
        Next Pixel generation: here we either goto
        to RGU for the next pixel, or we have no
        to RGU for the next pixel, or we have no
        more pixels so we are done we our picture!
        more pixels so we are done we our picture!
        */
        */
        `CU_ACK_NPU:
        `CU_ACK_NPU:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d CORE: %d Control: CU_ACK_NPU\n",$time, iDebug_CoreID);
                $display("%d CORE: %d Control: CU_ACK_NPU\n",$time, iDebug_CoreID);
        `endif
        `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;     //*
                oCodeInstructioPointer  = 0;     //*
                oUCodeEnable                            = 0;     //*
                oUCodeEnable                            = 0;     //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone  == 0 && iUCodeReturnValue == 1)
                if ( iUCodeDone  == 0 && iUCodeReturnValue == 1)
                        NextState = `CU_TRIGGER_RGU;
                        NextState = `CU_WAIT_FOR_HOST_DATA_AVAILABLE;//`CU_TRIGGER_RGU;
                else if (iUCodeDone == 0 && iUCodeReturnValue == 0)
                else if (iUCodeDone == 0 && iUCodeReturnValue == 0)
                        NextState = `CU_DONE;
                        NextState = `CU_DONE;
                else
                else
                        NextState = `CU_ACK_NPU;
                        NextState = `CU_ACK_NPU;
 
 
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_DONE:
        `CU_DONE:
        begin
        begin
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 1;
                oFlipMem                                                = 1;
                oDone                   = 1;
                oDone                   = 1;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
 
 
                NextState = `CU_DONE;
                NextState = `CU_DONE;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        /*
        /*
        Here we no longer use GFU so set Enable to zero
        Here we no longer use GFU so set Enable to zero
        */
        */
        `CU_TRIGGER_USERPIXELSHADER:
        `CU_TRIGGER_USERPIXELSHADER:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_TRIGGER_PSU\n",$time);
                $display("%d Control: CU_TRIGGER_PSU\n",$time);
        `endif
        `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PIXELSHADER;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PIXELSHADER;
                oUCodeEnable                            = 1;
                oUCodeEnable                            = 1;
                oGFUEnable                                      = 0;//*
                oGFUEnable                                      = 0;//*
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
 
 
                NextState = `CU_WAIT_FOR_USERPIXELSHADER;
                NextState = `CU_WAIT_FOR_USERPIXELSHADER;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_WAIT_FOR_USERPIXELSHADER:
        `CU_WAIT_FOR_USERPIXELSHADER:
        begin
        begin
 
 
//      `ifdef DEBUG_CU
//      `ifdef DEBUG_CU
//              $display("%d Control: CU_TRIGGER_PSU\n",$time);
//              $display("%d Control: CU_TRIGGER_PSU\n",$time);
//      `endif
//      `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PIXELSHADER;
                oCodeInstructioPointer  = `ENTRYPOINT_INDEX_PIXELSHADER;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
                oTriggerTFF             = 0;
                oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
 
 
                if ( iUCodeDone )
                if ( iUCodeDone )
                        NextState = `CU_ACK_USERPIXELSHADER;
                        NextState = `CU_ACK_USERPIXELSHADER;
                else
                else
                        NextState = `CU_WAIT_FOR_USERPIXELSHADER;
                        NextState = `CU_WAIT_FOR_USERPIXELSHADER;
 
 
        end
        end
        //-----------------------------------------
        //-----------------------------------------
        `CU_ACK_USERPIXELSHADER:
        `CU_ACK_USERPIXELSHADER:
        begin
        begin
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: CU_ACK_PSU\n",$time);
                $display("%d Control: CU_ACK_PSU\n",$time);
        `endif
        `endif
 
 
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                //oRamBusOwner                          = `REG_BUS_OWNED_BY_UCODE;
                oCodeInstructioPointer  = 0;     //*
                oCodeInstructioPointer  = 0;     //*
                oUCodeEnable                            = 0;     //*
                oUCodeEnable                            = 0;     //*
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 1;
                oFlipMemEnabled         = 1;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 1;
                oResultCommited                 = 1;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                if ( iUCodeDone  == 0)
                if ( iUCodeDone  == 0)
                        NextState = `CU_TRIGGER_NPU;//`CU_TRIGGER_PCU;
                        NextState = `CU_TRIGGER_NPU;//`CU_TRIGGER_PCU;
                else
                else
                        NextState = `CU_ACK_USERPIXELSHADER;
                        NextState = `CU_ACK_USERPIXELSHADER;
 
 
 
 
        end
        end
        //---------------------------------------------------
        //---------------------------------------------------
        default:
        default:
        begin
        begin
 
 
        `ifdef DEBUG_CU
        `ifdef DEBUG_CU
                $display("%d Control: ERROR Undefined State\n",$time);
                $display("%d Control: ERROR Undefined State\n",$time);
        `endif
        `endif
 
 
                //oRamBusOwner                          = 0;
                //oRamBusOwner                          = 0;
                oCodeInstructioPointer  = 0;
                oCodeInstructioPointer  = 0;
                oUCodeEnable                            = 0;
                oUCodeEnable                            = 0;
                oGFUEnable                                      = 0;
                oGFUEnable                                      = 0;
                oIOWritePixel                           = 0;
                oIOWritePixel                           = 0;
                rResetHitFlop                           = 0;
                rResetHitFlop                           = 0;
                rHitFlopEnable                          = 0;
                rHitFlopEnable                          = 0;
      oTriggerTFF             = 0;
      oTriggerTFF             = 0;
                oSetCurrentPitch        = 0;
                oSetCurrentPitch        = 0;
                oFlipMemEnabled         = 0;
                oFlipMemEnabled         = 0;
                oFlipMem                                                = 0;
                oFlipMem                                                = 0;
                oDone                   = 0;
                oDone                   = 0;
                oResultCommited                 = 0;
                oResultCommited                 = 0;
                //oIncCurrentPitch        = 0;
                //oIncCurrentPitch        = 0;
 
 
                NextState = `CU_AFTER_RESET_STATE;
                NextState = `CU_AFTER_RESET_STATE;
        end
        end
        //-----------------------------------------
        //-----------------------------------------
 
 
        endcase
        endcase
 
 
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.