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")
|
||||
configs.append(tc)
|
||||
|
||||
tests32i = ["wally32periph"]
|
||||
tests32i = ["arch32i", "wally32periph"]
|
||||
for test in tests32i:
|
||||
tc = TestCase(
|
||||
name=test,
|
||||
|
@ -77,5 +77,5 @@ module divshiftcalc(
|
||||
// *** explain why radix 4 division needs a left shift by 1
|
||||
// *** can this shift be moved into the shiftcorrection logic?
|
||||
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
|
||||
|
@ -236,5 +236,7 @@ module controller(
|
||||
// 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 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
|
||||
|
Loading…
Reference in New Issue
Block a user