mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Progress towards simplifying the cache's write enables.
This commit is contained in:
		
							parent
							
								
									fcd43ea004
								
							
						
					
					
						commit
						23a60d9875
					
				
							
								
								
									
										13
									
								
								pipelined/src/cache/cache.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								pipelined/src/cache/cache.sv
									
									
									
									
										vendored
									
									
								
							@ -107,6 +107,8 @@ module cache #(parameter LINELEN,  NUMLINES,  NUMWAYS, DCACHE = 1) (
 | 
			
		||||
  logic                                     ResetOrFlushAdr, ResetOrFlushWay;
 | 
			
		||||
  logic [NUMWAYS-1:0]                       WayHitSaved, WayHitRaw;
 | 
			
		||||
  logic [LINELEN-1:0]                       ReadDataLineRaw, ReadDataLineSaved;
 | 
			
		||||
  logic [NUMWAYS-1:0]                       SelectedWay;
 | 
			
		||||
  logic [NUMWAYS-1:0]                       SetValidWay, ClearValidWay, SetDirtyWay, ClearDirtyWay;  
 | 
			
		||||
  
 | 
			
		||||
  /////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
  // Read Path
 | 
			
		||||
@ -126,7 +128,9 @@ module cache #(parameter LINELEN,  NUMLINES,  NUMWAYS, DCACHE = 1) (
 | 
			
		||||
		.WriteWordEnable(SRAMWordEnable),
 | 
			
		||||
		.TagWriteEnable(SRAMLineWayWriteEnable), 
 | 
			
		||||
		.WriteData(SRAMWriteData),
 | 
			
		||||
		.SetValid, .ClearValid, .SetDirty, .ClearDirty, .SelEvict, .Victim(VictimWay), .Flush(FlushWay), 
 | 
			
		||||
		//.SetValid(SetValidWay), .ClearValid(ClearValidWay), .SetDirty(SetDirtyWay), .ClearDirty(ClearDirtyWay),
 | 
			
		||||
        .SetValid(SetValidWay), .ClearValid(ClearValidWay), .SetDirty, .ClearDirty,
 | 
			
		||||
        .SelEvict, .Victim(VictimWay), .Flush(FlushWay), 
 | 
			
		||||
        .SelFlush,
 | 
			
		||||
		.SelectedReadDataLine(ReadDataLineWay), .WayHit(WayHitRaw), .VictimDirty(VictimDirtyWay), .VictimTag(VictimTagWay),
 | 
			
		||||
		.InvalidateAll(InvalidateCacheM));
 | 
			
		||||
@ -190,6 +194,13 @@ module cache #(parameter LINELEN,  NUMLINES,  NUMWAYS, DCACHE = 1) (
 | 
			
		||||
  assign VDWriteEnableWay = FlushWay & {NUMWAYS{VDWriteEnable}};
 | 
			
		||||
  assign NextFlushWay = {FlushWay[NUMWAYS-2:0], FlushWay[NUMWAYS-1]};
 | 
			
		||||
 | 
			
		||||
  assign SelectedWay = SelFlush ? FlushWay : VictimWay;
 | 
			
		||||
  assign SetValidWay = SetValid ? SelectedWay : '0;
 | 
			
		||||
  assign ClearValidWay = ClearValid ? SelectedWay : '0;
 | 
			
		||||
  assign SetDirtyWay = SetDirty ? SelectedWay : '0;
 | 
			
		||||
  assign ClearDirtyWay = ClearDirty ? SelectedWay : '0;  
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
  // Cache FSM
 | 
			
		||||
  /////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								pipelined/src/cache/cachefsm.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								pipelined/src/cache/cachefsm.sv
									
									
									
									
										vendored
									
									
								
							@ -97,8 +97,8 @@ module cachefsm
 | 
			
		||||
					   STATE_MISS_READ_WORD_DELAY,
 | 
			
		||||
					   STATE_MISS_WRITE_WORD,
 | 
			
		||||
 | 
			
		||||
					   STATE_CPU_BUSY, // *** Ross will change
 | 
			
		||||
					   STATE_CPU_BUSY_FINISH_AMO, // *** Ross will change
 | 
			
		||||
					   STATE_CPU_BUSY,
 | 
			
		||||
					   STATE_CPU_BUSY_FINISH_AMO,
 | 
			
		||||
  
 | 
			
		||||
					   STATE_FLUSH,
 | 
			
		||||
					   STATE_FLUSH_CHECK,
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								pipelined/src/cache/cacheway.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								pipelined/src/cache/cacheway.sv
									
									
									
									
										vendored
									
									
								
							@ -108,8 +108,8 @@ module cacheway #(parameter NUMLINES=512, parameter LINELEN = 256, TAGLEN = 26,
 | 
			
		||||
  
 | 
			
		||||
  always_ff @(posedge clk) begin // Valid bit array, 
 | 
			
		||||
    if (reset | InvalidateAll)                              ValidBits        <= #1 '0;
 | 
			
		||||
    else if (SetValidD   & (WriteEnableD | VDWriteEnableD)) ValidBits[RAdrD] <= #1 1'b1;
 | 
			
		||||
    else if (ClearValidD & (WriteEnableD | VDWriteEnableD)) ValidBits[RAdrD] <= #1 1'b0;
 | 
			
		||||
    else if (SetValidD)                                     ValidBits[RAdrD] <= #1 1'b1;
 | 
			
		||||
    else if (ClearValidD) ValidBits[RAdrD] <= #1 1'b0;
 | 
			
		||||
	end
 | 
			
		||||
  // *** consider revisiting whether these delays are the best option? 
 | 
			
		||||
  flop #($clog2(NUMLINES)) RAdrDelayReg(clk, RAdr, RAdrD);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user