mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Fixed bug with instruction classification. The class decoder was incorretly labeling jalr acting as both jalr and jr (no link).
This commit is contained in:
		
							parent
							
								
									daf344f1ba
								
							
						
					
					
						commit
						b06fda88ff
					
				| @ -210,9 +210,10 @@ module ifu ( | ||||
|   // the branch predictor needs a compact decoding of the instruction class.
 | ||||
|   // *** consider adding in the alternate return address x5 for returns.
 | ||||
|   assign InstrClassD[4] = (InstrD[6:0] & 7'h77) == 7'h67 && (InstrD[11:07] & 5'h1B) == 5'h01; // jal(r) must link to ra or r5
 | ||||
|   assign InstrClassD[3] = InstrD[6:0] == 7'h67 && (InstrD[19:15] & 5'h1B) == 5'h01; // return must link to ra or r5
 | ||||
|   assign InstrClassD[2] = InstrD[6:0] == 7'h67 && (InstrD[19:15] & 5'h1B) != 5'h01; // jump register, but not return
 | ||||
|   assign InstrClassD[1] = InstrD[6:0] == 7'h6F; // jump
 | ||||
| 
 | ||||
|   assign InstrClassD[3] = InstrD[6:0] == 7'h67 && (InstrD[19:15] & 5'h1B) != 5'h01; // return must return to ra or r5
 | ||||
|   assign InstrClassD[2] = InstrD[6:0] == 7'h67 && (InstrD[19:15] & 5'h1B) != 4'h01 && (InstrD[11:7] & 5'h1B) != 5'h01; // jump register, but not return
 | ||||
|   assign InstrClassD[1] = InstrD[6:0] == 7'h6F && (InstrD[11:7] & 5'h1B) != 5'h01; // jump, RD != x1 or x5
 | ||||
|   assign InstrClassD[0] = InstrD[6:0] == 7'h63; // branch
 | ||||
| 
 | ||||
|   // Misaligned PC logic
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user