forked from Github_Repos/cvw
		
	make Cache Flush Logic dependent on !READ_ONLY_CACHE
read-only caches do not have flush logic since they do not have to deal with dirty bits.
This commit is contained in:
		
							parent
							
								
									247af17b6b
								
							
						
					
					
						commit
						d3a988c96c
					
				
							
								
								
									
										30
									
								
								src/cache/cache.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								src/cache/cache.sv
									
									
									
									
										vendored
									
									
								
							@ -188,19 +188,25 @@ module cache #(parameter LINELEN,  NUMLINES,  NUMWAYS, LOGBWPL, WORDLEN, MUXINTE
 | 
			
		||||
  // Flush logic
 | 
			
		||||
  /////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
  // Flush address (line number)
 | 
			
		||||
  assign ResetOrFlushCntRst = reset | FlushCntRst;
 | 
			
		||||
  flopenr #(SETLEN) FlushAdrReg(clk, ResetOrFlushCntRst, FlushAdrCntEn, FlushAdrP1, NextFlushAdr);
 | 
			
		||||
  mux2    #(SETLEN) FlushAdrMux(NextFlushAdr, FlushAdrP1, FlushAdrCntEn, FlushAdr);
 | 
			
		||||
  assign FlushAdrP1 = NextFlushAdr + 1'b1;
 | 
			
		||||
  assign FlushAdrFlag = (NextFlushAdr == FLUSHADRTHRESHOLD[SETLEN-1:0]);
 | 
			
		||||
 | 
			
		||||
  // Flush way
 | 
			
		||||
  flopenl #(NUMWAYS) FlushWayReg(clk, FlushWayCntEn, ResetOrFlushCntRst, {{NUMWAYS-1{1'b0}}, 1'b1}, NextFlushWay, FlushWay);
 | 
			
		||||
  if(NUMWAYS > 1) assign NextFlushWay = {FlushWay[NUMWAYS-2:0], FlushWay[NUMWAYS-1]};
 | 
			
		||||
  else            assign NextFlushWay = FlushWay[NUMWAYS-1];
 | 
			
		||||
  assign FlushWayFlag = FlushWay[NUMWAYS-1];
 | 
			
		||||
  if (!READ_ONLY_CACHE) begin:flushlogic
 | 
			
		||||
    // Flush address (line number)
 | 
			
		||||
    assign ResetOrFlushCntRst = reset | FlushCntRst;
 | 
			
		||||
    flopenr #(SETLEN) FlushAdrReg(clk, ResetOrFlushCntRst, FlushAdrCntEn, FlushAdrP1, NextFlushAdr);
 | 
			
		||||
    mux2    #(SETLEN) FlushAdrMux(NextFlushAdr, FlushAdrP1, FlushAdrCntEn, FlushAdr);
 | 
			
		||||
    assign FlushAdrP1 = NextFlushAdr + 1'b1;
 | 
			
		||||
    assign FlushAdrFlag = (NextFlushAdr == FLUSHADRTHRESHOLD[SETLEN-1:0]);
 | 
			
		||||
 | 
			
		||||
    // Flush way
 | 
			
		||||
    flopenl #(NUMWAYS) FlushWayReg(clk, FlushWayCntEn, ResetOrFlushCntRst, {{NUMWAYS-1{1'b0}}, 1'b1}, NextFlushWay, FlushWay);
 | 
			
		||||
    if(NUMWAYS > 1) assign NextFlushWay = {FlushWay[NUMWAYS-2:0], FlushWay[NUMWAYS-1]};
 | 
			
		||||
    else            assign NextFlushWay = FlushWay[NUMWAYS-1];
 | 
			
		||||
    assign FlushWayFlag = FlushWay[NUMWAYS-1];
 | 
			
		||||
  end // block: flushlogic
 | 
			
		||||
  else begin:flushlogic
 | 
			
		||||
     assign FlushWayFlag = 0;
 | 
			
		||||
     assign FlushAdrFlag = 0;
 | 
			
		||||
  end
 | 
			
		||||
   
 | 
			
		||||
  /////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
  // Cache FSM
 | 
			
		||||
  /////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user