mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-01 17:34:27 +00:00
Modified IROM to return the correct offset when unaligned.
This commit is contained in:
parent
5d844801d2
commit
6ac7adbfc4
@ -41,12 +41,19 @@ module irom(
|
|||||||
logic [`XLEN-1:0] ReadDataFull;
|
logic [`XLEN-1:0] ReadDataFull;
|
||||||
|
|
||||||
rom1p1r #(ADDR_WDITH, `XLEN) rom(.clk, .ce, .addr(Adr[ADDR_WDITH+OFFSET-1:OFFSET]), .dout(ReadDataFull));
|
rom1p1r #(ADDR_WDITH, `XLEN) rom(.clk, .ce, .addr(Adr[ADDR_WDITH+OFFSET-1:OFFSET]), .dout(ReadDataFull));
|
||||||
if (`XLEN == 32) assign ReadData = ReadDataFull;
|
if (`XLEN == 32) begin
|
||||||
|
logic AdrD;
|
||||||
|
flopen #(1) AdrReg(clk, ce, Adr[1], AdrD);
|
||||||
|
assign ReadData = AdrD ? {16'b0, ReadDataFull[31:16]} : ReadDataFull;
|
||||||
|
end
|
||||||
// have to delay Ardr[OFFSET-1] by 1 cycle
|
// have to delay Ardr[OFFSET-1] by 1 cycle
|
||||||
else begin
|
else begin
|
||||||
logic AdrD;
|
logic [OFFSET-2:0] AdrD;
|
||||||
flopen #(1) AdrReg(clk, ce, Adr[OFFSET-1], AdrD);
|
flopen #(OFFSET-1) AdrReg(clk, ce, Adr[OFFSET-1:1], AdrD);
|
||||||
assign ReadData = AdrD ? ReadDataFull[63:32] : ReadDataFull[31:0];
|
assign ReadData = AdrD == 2'b11 ? {16'b0, ReadDataFull[63:48]} :
|
||||||
|
AdrD == 2'b10 ? ReadDataFull[63:32] :
|
||||||
|
AdrD == 2'b01 ? ReadDataFull[47:16] :
|
||||||
|
ReadDataFull[31:0];
|
||||||
end
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ module spillsupport #(parameter CACHE_ENABLED)
|
|||||||
flopenr #(16) SpillInstrReg(.clk(clk),
|
flopenr #(16) SpillInstrReg(.clk(clk),
|
||||||
.en(SpillSaveF & ~Flush),
|
.en(SpillSaveF & ~Flush),
|
||||||
.reset(reset),
|
.reset(reset),
|
||||||
.d(SavedInstr),
|
.d(InstrRawF[15:0]),
|
||||||
.q(SpillDataLine0));
|
.q(SpillDataLine0));
|
||||||
|
|
||||||
mux2 #(32) postspillmux(.d0(InstrRawF), .d1({InstrRawF[15:0], SpillDataLine0}), .s(SpillF),
|
mux2 #(32) postspillmux(.d0(InstrRawF), .d1({InstrRawF[15:0], SpillDataLine0}), .s(SpillF),
|
||||||
|
Loading…
Reference in New Issue
Block a user