forked from Github_Repos/cvw
		
	Eliminated store after store stall when no cache; simplified divshiftcalc logic.
This commit is contained in:
		
							parent
							
								
									f83d640068
								
							
						
					
					
						commit
						f08d5b23d5
					
				@ -91,7 +91,7 @@ for test in tests32ic:
 | 
				
			|||||||
        grepstr="All tests ran without failures")
 | 
					        grepstr="All tests ran without failures")
 | 
				
			||||||
  configs.append(tc)
 | 
					  configs.append(tc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tests32i = ["wally32periph"] 
 | 
					tests32i = ["arch32i", "wally32periph"] 
 | 
				
			||||||
for test in tests32i:
 | 
					for test in tests32i:
 | 
				
			||||||
  tc = TestCase(
 | 
					  tc = TestCase(
 | 
				
			||||||
        name=test,
 | 
					        name=test,
 | 
				
			||||||
 | 
				
			|||||||
@ -77,5 +77,5 @@ module divshiftcalc(
 | 
				
			|||||||
    // *** explain why radix 4 division needs a left shift by 1
 | 
					    // *** explain why radix 4 division needs a left shift by 1
 | 
				
			||||||
    // *** can this shift be moved into the shiftcorrection logic?
 | 
					    // *** can this shift be moved into the shiftcorrection logic?
 | 
				
			||||||
    assign PreDivShiftIn = {{`NF{1'b0}}, DivQm, {`NORMSHIFTSZ-`DIVb+1-`NF{1'b0}}};
 | 
					    assign PreDivShiftIn = {{`NF{1'b0}}, DivQm, {`NORMSHIFTSZ-`DIVb+1-`NF{1'b0}}};
 | 
				
			||||||
    assign DivShiftIn = PreDivShiftIn << (`RADIX==4 & ~Sqrt); // {{`NF{1'b0}}, DivQm[`DIVb-1:0], {`NORMSHIFTSZ-`DIVb+2-`NF{1'b0}}};
 | 
					    assign DivShiftIn = PreDivShiftIn << (`RADIX==4 & ~Sqrt); 
 | 
				
			||||||
endmodule
 | 
					endmodule
 | 
				
			||||||
 | 
				
			|||||||
@ -236,5 +236,7 @@ module controller(
 | 
				
			|||||||
  // Stall pipeline at Fetch if a CSR Write or Fence is pending in the subsequent stages
 | 
					  // Stall pipeline at Fetch if a CSR Write or Fence is pending in the subsequent stages
 | 
				
			||||||
  assign CSRWriteFencePendingDEM = CSRWriteD | CSRWriteE | CSRWriteM | FencePendingD | FencePendingE | FencePendingM;
 | 
					  assign CSRWriteFencePendingDEM = CSRWriteD | CSRWriteE | CSRWriteM | FencePendingD | FencePendingE | FencePendingM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  assign StoreStallD = MemRWE[0] & ((|MemRWD) | (|AtomicD));
 | 
					  // the synchronous DTIM cannot read immediately after write
 | 
				
			||||||
 | 
					  // a cache cannot read or write immediately after a write
 | 
				
			||||||
 | 
					  assign StoreStallD = MemRWE[0] & ((MemRWD[1] | (MemRWD[0] & `DCACHE)) | (|AtomicD));
 | 
				
			||||||
endmodule
 | 
					endmodule
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user