forked from Github_Repos/cvw
		
	Fixed the timing issue in the cache replacement polcy.
This commit is contained in:
		
							parent
							
								
									576383c74b
								
							
						
					
					
						commit
						1228dbbebc
					
				@ -42,21 +42,34 @@ module cachereplacementpolicy
 | 
				
			|||||||
  logic [NUMWAYS-2:0] 				ReplacementBits [NUMLINES-1:0];
 | 
					  logic [NUMWAYS-2:0] 				ReplacementBits [NUMLINES-1:0];
 | 
				
			||||||
  logic [NUMWAYS-2:0] 				BlockReplacementBits;
 | 
					  logic [NUMWAYS-2:0] 				BlockReplacementBits;
 | 
				
			||||||
  logic [NUMWAYS-2:0] 				NewReplacement;
 | 
					  logic [NUMWAYS-2:0] 				NewReplacement;
 | 
				
			||||||
 | 
					  logic [NUMWAYS-2:0] 				NewReplacementD;  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  logic [INDEXLEN+OFFSETLEN-1:OFFSETLEN] 	MemPAdrMD;
 | 
				
			||||||
 | 
					  logic [INDEXLEN-1:0] 				RAdrD;
 | 
				
			||||||
 | 
					  logic 					LRUWriteEnD;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  /* verilator lint_off BLKLOOPINIT */
 | 
					  /* verilator lint_off BLKLOOPINIT */
 | 
				
			||||||
  always_ff @(posedge clk, posedge reset) begin
 | 
					  always_ff @(posedge clk, posedge reset) begin
 | 
				
			||||||
    if (reset) begin
 | 
					    if (reset) begin
 | 
				
			||||||
 | 
					      RAdrD <= '0;
 | 
				
			||||||
 | 
					      MemPAdrMD <= '0;
 | 
				
			||||||
 | 
					      LRUWriteEnD <= 0;
 | 
				
			||||||
 | 
					      NewReplacementD <= '0;
 | 
				
			||||||
      for(int index = 0; index < NUMLINES; index++)
 | 
					      for(int index = 0; index < NUMLINES; index++)
 | 
				
			||||||
	      ReplacementBits[index] <= '0;
 | 
						ReplacementBits[index] <= '0;
 | 
				
			||||||
    end else begin
 | 
					    end else begin
 | 
				
			||||||
      BlockReplacementBits <= ReplacementBits[RAdr];
 | 
					      RAdrD <= RAdr;
 | 
				
			||||||
      if (LRUWriteEn) begin
 | 
					      MemPAdrMD <= MemPAdrMD;
 | 
				
			||||||
	      ReplacementBits[MemPAdrM[INDEXLEN+OFFSETLEN-1:OFFSETLEN]] <= NewReplacement;
 | 
					      LRUWriteEnD <= LRUWriteEn;
 | 
				
			||||||
 | 
					      NewReplacementD <= NewReplacement;
 | 
				
			||||||
 | 
					      if (LRUWriteEnD) begin
 | 
				
			||||||
 | 
						ReplacementBits[MemPAdrMD[INDEXLEN+OFFSETLEN-1:OFFSETLEN]] <= NewReplacementD;
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  /* verilator lint_on BLKLOOPINIT */
 | 
					  /* verilator lint_on BLKLOOPINIT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  assign BlockReplacementBits = ReplacementBits[RAdrD];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  genvar 		      index;
 | 
					  genvar 		      index;
 | 
				
			||||||
  generate
 | 
					  generate
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user