mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Added spill support back into the IROM IFU.
This commit is contained in:
parent
4ecc2d029a
commit
4d4d9ac8cf
@ -107,7 +107,7 @@ module ifu (
|
|||||||
logic [`XLEN+1:0] PCFExt;
|
logic [`XLEN+1:0] PCFExt;
|
||||||
|
|
||||||
logic CacheableF;
|
logic CacheableF;
|
||||||
logic [11:0] PCNextFMux;
|
logic [`XLEN-1:0] PCNextFMux;
|
||||||
logic [`XLEN-1:0] PCFMux;
|
logic [`XLEN-1:0] PCFMux;
|
||||||
logic SelNextSpill;
|
logic SelNextSpill;
|
||||||
logic ICacheFetchLine;
|
logic ICacheFetchLine;
|
||||||
@ -128,7 +128,7 @@ module ifu (
|
|||||||
// this exists only if there are compressed instructions.
|
// this exists only if there are compressed instructions.
|
||||||
assign PCFp2 = PCF + `XLEN'b10;
|
assign PCFp2 = PCF + `XLEN'b10;
|
||||||
|
|
||||||
assign PCNextFMux = SelNextSpill ? PCFp2[11:0] : PCNextF[11:0];
|
assign PCNextFMux = SelNextSpill ? PCFp2 : PCNextF;
|
||||||
assign PCFMux = SelSpill ? PCFp2 : PCF;
|
assign PCFMux = SelSpill ? PCFp2 : PCF;
|
||||||
|
|
||||||
assign Spill = &PCF[$clog2(SPILLTHRESHOLD)+1:1];
|
assign Spill = &PCF[$clog2(SPILLTHRESHOLD)+1:1];
|
||||||
@ -168,7 +168,7 @@ module ifu (
|
|||||||
|
|
||||||
// end of spill support
|
// end of spill support
|
||||||
end else begin : NoSpillSupport // line: SpillSupport
|
end else begin : NoSpillSupport // line: SpillSupport
|
||||||
assign PCNextFMux = PCNextF[11:0];
|
assign PCNextFMux = PCNextF;
|
||||||
assign PCFMux = PCF;
|
assign PCFMux = PCF;
|
||||||
assign SelNextSpill = 0;
|
assign SelNextSpill = 0;
|
||||||
assign PostSpillInstrRawF = InstrRawF;
|
assign PostSpillInstrRawF = InstrRawF;
|
||||||
@ -236,7 +236,7 @@ module ifu (
|
|||||||
simpleram #(
|
simpleram #(
|
||||||
.BASE(`RAM_BASE), .RANGE(`RAM_RANGE)) ram (
|
.BASE(`RAM_BASE), .RANGE(`RAM_RANGE)) ram (
|
||||||
.HCLK(clk), .HRESETn(~reset),
|
.HCLK(clk), .HRESETn(~reset),
|
||||||
.HSELRam(1'b1), .HADDR(CPUBusy ? PCPF[31:0] : PCNextF[31:0]), // mux is also inside $, have to replay address if CPU is stalled.
|
.HSELRam(1'b1), .HADDR(CPUBusy ? PCPF[31:0] : PCNextFMux[31:0]), // mux is also inside $, have to replay address if CPU is stalled.
|
||||||
.HWRITE(1'b0), .HREADY(1'b1),
|
.HWRITE(1'b0), .HREADY(1'b1),
|
||||||
.HTRANS(2'b10), .HWDATA(0), .HREADRam(FinalInstrRawF_FIXME),
|
.HTRANS(2'b10), .HWDATA(0), .HREADRam(FinalInstrRawF_FIXME),
|
||||||
.HRESPRam(), .HREADYRam());
|
.HRESPRam(), .HREADYRam());
|
||||||
@ -300,7 +300,7 @@ module ifu (
|
|||||||
.RW(IFURWF),
|
.RW(IFURWF),
|
||||||
.Atomic(2'b00),
|
.Atomic(2'b00),
|
||||||
.FlushCache(1'b0),
|
.FlushCache(1'b0),
|
||||||
.NextAdr(PCNextFMux),
|
.NextAdr(PCNextFMux[11:0]),
|
||||||
.PAdr(PCPF),
|
.PAdr(PCPF),
|
||||||
.CacheCommitted(),
|
.CacheCommitted(),
|
||||||
.InvalidateCacheM(InvalidateICacheM));
|
.InvalidateCacheM(InvalidateICacheM));
|
||||||
|
Loading…
Reference in New Issue
Block a user