Changeset 26 in XOpenSparcT1 for trunk/os2wb/os2wb.v


Ignore:
Timestamp:
04/04/11 11:58:11 (13 years ago)
Author:
pntsvt00
Message:

checkpoint: baco con store consecutivi

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/os2wb/os2wb.v

    r23 r26  
    2424     
    2525    // Core interface  
    26     input      [  4:0] pcx_req, 
     26    input      [  4:0] pcx_req,  
    2727    input              pcx_atom, 
    28     input      [123:0] pcx_data, 
     28    input      [123:0] pcx_data,  
     29     
    2930    output reg [  4:0] pcx_grant, 
    3031    output reg         cpx_ready, 
     
    235236         `TEST_DRAM_1: 
    236237            begin 
    237                $display("INFO: OS2WB: TEST_DRAM_1"); 
     238               //$display("INFO: OS2WB: TEST_DRAM_1"); 
    238239               wb_cycle<=1; 
    239240               wb_strobe<=1; 
     
    245246            if(wb_ack) 
    246247               begin 
    247                $display("INFO: OS2WB: TEST_DRAM_2 at time %d with wb_addr=%x",$time,wb_addr); 
     248               //$display("INFO: OS2WB: TEST_DRAM_2 at time %d with wb_addr=%x",$time,wb_addr); 
    248249                  wb_strobe<=0; 
    249250                  if(wb_addr<`MEM_SIZE-8) 
     
    265266         `TEST_DRAM_3: 
    266267            begin 
    267                $display("INFO: OS2WB: TEST_DRAM_3"); 
     268               //$display("INFO: OS2WB: TEST_DRAM_3"); 
    268269               wb_cycle<=1; 
    269270               wb_strobe<=1; 
     
    274275            if(wb_ack) 
    275276               begin 
    276                   $display("INFO: OS2WB: TEST_DRAM_4 at %t",$time); 
     277                 // $display("INFO: OS2WB: TEST_DRAM_4 at %t",$time); 
    277278                  wb_strobe<=0; 
    278279                  if(wb_addr<`MEM_SIZE-8) 
     
    284285                        //   end 
    285286                        //else  
    286                         //      $display("INFO: OS2WB: TEST_DRAM_4 error in read addres %x at %t",wb_addr,$time); 
    287                               $display("expected %x, obtained  %x",{wb_addr[31:0],wb_addr[31:0]},wb_data_i); 
     287                        //   $display("expected %x, obtained  %x",{wb_addr[31:0],wb_addr[31:0]},wb_data_i); 
    288288                     end 
    289289                  else 
    290290                     begin 
    291                         $display("INFO: OS2WB: INIT_DRAM at %t",$time); 
     291                        //$display("INFO: OS2WB: INIT_DRAM at %t",$time); 
    292292                        state<=`INIT_DRAM_1; 
    293293                        wb_cycle<=0; 
     
    323323                  else 
    324324                     begin 
    325                         $display("INFO: OS2WB: WAKEUP_DRAM at %t",$time); 
     325                        //$display("INFO: OS2WB: WAKEUP_DRAM at %t",$time); 
    326326                        state<=`WAKEUP; 
    327327                        wb_cycle<=0; 
     
    393393         `PCX_REQ_2ND: 
    394394            begin 
     395               $display("INFO: OS2WB: GOT_PCX_REQ_2ND"); 
    395396               pcx_packet_2nd<=pcx_packet; //Latch second packet for atomics 
    396397               if(`DEBUGGING) 
     
    407408               if(pcx_packet_d[111]==1'b1) // Invalidate request 
    408409                  begin 
     410                     $display("INFO: OS2WB: INVALIDATE"); 
    409411                     cpx_packet_1[144]<=1;     // Valid 
    410412                     cpx_packet_1[143:140]<=4'b0100; // Invalidate reply is Store ACK 
     
    423425                  if(pcx_packet_d[122:118]!=5'b01001) // Not INT 
    424426                     begin 
     427                        $display("INFO: OS2WB: PCX_REQ_STEP1"); 
    425428                        wb_cycle<=1'b1; 
    426429                        wb_strobe<=1'b1; 
    427430                        if((pcx_packet_d[122:118]==5'b00000 && !pcx_req_d[4]) || pcx_packet_d[122:118]==5'b00010 || pcx_packet_d[122:118]==5'b00100 || pcx_packet_d[122:118]==5'b00110) 
     431                           begin  
     432                            $display("INFO: OS2WB: load/streadload ecc"); 
    428433                           wb_addr<={pcx_req_d,19'b0,pcx_packet_d[103:64+4],4'b0000}; //DRAM load/streamload, CAS and SWAP always use DRAM and load first  
    429                         else 
     434                           end  
     435                        else 
    430436                           if(pcx_packet_d[122:118]==5'b10000 && !pcx_req_d[4]) 
     437                           begin 
     438                              $display("INFO: OS2WB: ifill"); 
    431439                              wb_addr<={pcx_req_d,19'b0,pcx_packet_d[103:64+5],5'b00000}; //DRAM ifill 
    432                            else 
     440                           end 
     441                           else 
    433442                              if(pcx_packet_d[64+39:64+28]==12'hFFF && pcx_packet_d[64+27:64+24]!=4'b0) // flash remap FFF1->FFF8 
    434443                                 wb_addr<={pcx_req_d,19'b0,pcx_packet_d[103:64+3]+37'h0000E00000,3'b000}; 
     
    446455                  5'b00000://Load 
    447456                     begin 
     457                        $display("INFO: OS2WB: PCX_REQ_STEP1, Load"); 
    448458                        wb_we<=0; 
    449459                        if(!pcx_packet_d[110] && !pcx_packet_d[117]) 
     
    492502                  5'b00001://Store 
    493503                     begin 
     504                        $display("INFO: OS2WB: PCX_REQ_STEP1, Store"); 
    494505                        wb_we<=1; 
    495506                        case({icache_hit,dcache0_hit}) 
     
    538549                  5'b00010://CAS 
    539550                     begin 
     551                        $display("INFO: OS2WB: PCX_REQ_STEP1, CAS"); 
    540552                        wb_we<=0; //Load first 
    541553                        case({icache_hit,dcache0_hit}) 
     
    555567                  5'b00100://STRLOAD 
    556568                     begin 
     569                        $display("INFO: OS2WB: PCX_REQ_STEP1, STRLOAD"); 
    557570                        wb_we<=0; 
    558571                        wb_sel<=8'b11111111; // Stream loads are always 128 bit 
     
    560573                  5'b00101://STRSTORE 
    561574                     begin 
     575                        $display("INFO: OS2WB: PCX_REQ_STEP1, STRSTORE"); 
    562576                        wb_we<=1; 
    563577                        case({icache_hit,dcache0_hit}) 
     
    606620                  5'b00110://SWAP/LDSTUB 
    607621                     begin 
     622                        $display("INFO: OS2WB: PCX_REQ_STEP1, SWAP/LDSTUB"); 
    608623                        case({icache_hit,dcache0_hit}) 
    609624                           8'b00000000:; 
     
    622637                     end 
    623638                  5'b01001://INT 
    624                      if(pcx_packet_d[117]) // Flush 
     639                     begin 
     640                        $display("INFO: OS2WB: PCX_REQ_STEP1, INT"); 
     641                        if(pcx_packet_d[117]) // Flush 
    625642                        cpx_packet_1<={9'h171,pcx_packet_d[113:112],11'h0,pcx_packet_d[64+5:64+4],3'b0,pcx_packet_d[64+11:64+6],30'h0,pcx_packet_d[17:0],46'b0,pcx_packet_d[17:0]}; //FLUSH instruction answer 
    626                      else // Tread-to-thread interrupt 
     643                        else // Tread-to-thread interrupt 
    627644                        cpx_packet_1<={9'h170,pcx_packet_d[113:112],52'h0,pcx_packet_d[17:0],46'h0,pcx_packet_d[17:0]};  
    628                   //5'b01010: FP1 - processed by separate state 
    629                   //5'b01011: FP2 - processed by separate state 
    630                   //5'b01101: FWDREQ - not implemented 
    631                   //5'b01110: FWDREPL - not implemented 
    632                   5'b10000://IFILL 
    633                      begin 
     645                                //5'b01010: FP1 - processed by separate state 
     646                                //5'b01011: FP2 - processed by separate state 
     647                                //5'b01101: FWDREQ - not implemented 
     648                                //5'b01110: FWDREPL - not implemented 
     649                     end 
     650                  5'b10000://IFILL 
     651                     begin 
     652                        $display("INFO: OS2WB: PCX_REQ_STEP1, IFILL"); 
    634653                        wb_we<=0; 
    635654                        if(!pcx_req_d[4]) // not I/O access 
     
    668687               if(wb_ack) 
    669688                  begin 
     689                     $display("INFO: OS2WB: PCX_REQ_STEP1_1 wb_addr = %x",wb_addr); 
    670690                     cpx_packet_1[144]<=1;     // Valid 
    671                      cpx_packet_1[139]<=(pcx_packet_d[122:118]==5'b00000) || (pcx_packet_d[122:118]==5'b10000) ? 1:0;     // L2 always miss on load and ifill 
     691                     cpx_packet_1[139]<=(pcx_packet_d[122:118]==5'b00000) || (pcx_packet_d[122:118]==5'b10000) ? 1:0; // L2 always miss on load and ifill 
    672692                     cpx_packet_1[138:137]<=0; // Error 
    673693                     cpx_packet_1[136]<=pcx_packet_d[117] || (pcx_packet_d[122:118]==5'b00001) ? 1:0; // Non-cacheble is set on store too 
     
    821841                        5'b10000://IFILL 
    822842                           begin 
     843                              $display("INFO: OS2WB: PCX_REQ_STEP1_1, IFILL, wb_addr = %x wb_data_i= %x",wb_addr, wb_data_i); 
     844                              $display("INFO: OS2WB: PCX_REQ_STEP1_1, IFILL, cpx_packet_1 = %x %x",wb_data_i,wb_data_i); 
    823845                              cpx_packet_1[143:140]<=4'b0001; // Type 
    824846                              cpx_packet_2[143:140]<=4'b0001; // Type 
     
    10731095         `CPX_READY_1: 
    10741096            begin 
     1097               $display("INFO: OS2WB: CPX_READY_1"); 
    10751098               cpx_ready<=1; 
    10761099               cpx_packet<=cpx_packet_1; 
     
    10871110         `CPX_READY_2: 
    10881111            begin 
     1112               $display("INFO: OS2WB: CPX_READY_2"); 
    10891113               cpx_ready<=1; 
    10901114               cpx_packet<=cpx_packet_2; 
     
    10931117         `PCX_UNKNOWN: 
    10941118            begin 
     1119               $display("INFO: OS2WB: PCX_UNKNOWN"); 
    10951120               wb_sel<=8'b10100101; // Illegal eye-catching value for debugging 
    10961121               state<=`PCX_IDLE; 
     
    12501275   .enable(dir_en), 
    12511276   .wren_a(icache0_alloc || icache0_dealloc || icache_inval_all || cache_init), 
    1252    .address_a({2'b0,icache_index}), 
     1277   .address_a({2'b00,icache_index}), 
    12531278   .data_a(icache_data), 
    12541279   .q_a(icache0_do), 
    12551280    
    12561281   .wren_b(icache1_alloc || icache1_dealloc || icache_inval_all || cache_init), 
    1257    .address_b({2'b0,icache_index}), 
     1282   .address_b({2'b01,icache_index}), 
    12581283   .data_b(icache_data), 
    12591284   .q_b(icache1_do)  
     
    12641289   .enable(dir_en), 
    12651290   .wren_a(icache2_alloc || icache2_dealloc || icache_inval_all || cache_init), 
    1266    .address_a({2'b0,icache_index}), 
     1291   .address_a({2'b00,icache_index}), 
    12671292   .data_a(icache_data), 
    12681293   .q_a(icache2_do), 
    12691294    
    12701295   .wren_b(icache3_alloc || icache3_dealloc || icache_inval_all || cache_init), 
    1271    .address_b({2'b0,icache_index}), 
     1296   .address_b({2'b01,icache_index}), 
    12721297   .data_b(icache_data), 
    12731298   .q_b(icache3_do)  
Note: See TracChangeset for help on using the changeset viewer.