mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Partially working byte write enables. Works for cache, but not dtim or bus only.
This commit is contained in:
parent
7a129c75cd
commit
67ef46ea92
4
pipelined/src/cache/cacheway.sv
vendored
4
pipelined/src/cache/cacheway.sv
vendored
@ -78,8 +78,8 @@ module cacheway #(parameter NUMLINES=512, parameter LINELEN = 256, TAGLEN = 26,
|
|||||||
.bin(PAdr[LOGWPL+LOGXLENBYTES-1:LOGXLENBYTES]), .decoded(MemPAdrDecoded));
|
.bin(PAdr[LOGWPL+LOGXLENBYTES-1:LOGXLENBYTES]), .decoded(MemPAdrDecoded));
|
||||||
// If writing the whole line set all write enables to 1, else only set the correct word.
|
// If writing the whole line set all write enables to 1, else only set the correct word.
|
||||||
assign SelectedWriteWordEn = SetValidWay ? '1 : SetDirtyWay ? MemPAdrDecoded : '0; // OR-AND
|
assign SelectedWriteWordEn = SetValidWay ? '1 : SetDirtyWay ? MemPAdrDecoded : '0; // OR-AND
|
||||||
//assign FinalByteWEN = SetValidWay ? '1 : ByteWEN; // OR
|
assign FinalByteWEN = SetValidWay ? '1 : ByteWEN; // OR
|
||||||
assign FinalByteWEN = '1;//SetValidWay ? '1 : ByteWEN; // OR
|
//assign FinalByteWEN = '1;//SetValidWay ? '1 : ByteWEN; // OR
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Tag Array
|
// Tag Array
|
||||||
|
@ -253,10 +253,11 @@ module lsu (
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if(`DMEM != `MEM_BUS) begin // *** always, not just with no MEM_BUS. Only produces byte write enable
|
if(1) begin // *** always, not just with no MEM_BUS. Only produces byte write enable
|
||||||
logic [`XLEN-1:0] ReadDataWordMaskedM;
|
logic [`XLEN-1:0] ReadDataWordMaskedM;
|
||||||
// ** there is definitely a sww bug with memory mapped i/o. check wally64priv.
|
// ** there is definitely a sww bug with memory mapped i/o. check wally64priv.
|
||||||
assign ReadDataWordMaskedM = SelUncachedAdr ? '0 : ReadDataWordM; // AND-gate
|
//assign ReadDataWordMaskedM = SelUncachedAdr ? '0 : ReadDataWordM; // AND-gate
|
||||||
|
assign ReadDataWordMaskedM = '0; // AND-gate
|
||||||
// *** consider moving this AND gate into the sww.
|
// *** consider moving this AND gate into the sww.
|
||||||
//assign ReadDataWordMaskedM = ReadDataWordM; // *** this change only works because the i/o devices dont' write bytes other than the ones specific to their address.
|
//assign ReadDataWordMaskedM = ReadDataWordM; // *** this change only works because the i/o devices dont' write bytes other than the ones specific to their address.
|
||||||
subwordwrite subwordwrite(.HRDATA(ReadDataWordMaskedM), .HADDRD(LSUPAdrM[2:0]),
|
subwordwrite subwordwrite(.HRDATA(ReadDataWordMaskedM), .HADDRD(LSUPAdrM[2:0]),
|
||||||
|
@ -91,7 +91,7 @@ module uncore (
|
|||||||
assign {HSELEXT, HSELBootRom, HSELRam, HSELCLINT, HSELGPIO, HSELUART, HSELPLIC, HSELSDC} = HSELRegions[7:0];
|
assign {HSELEXT, HSELBootRom, HSELRam, HSELCLINT, HSELGPIO, HSELUART, HSELPLIC, HSELSDC} = HSELRegions[7:0];
|
||||||
|
|
||||||
// subword accesses: converts HWDATAIN to HWDATA only if no dtim or cache.
|
// subword accesses: converts HWDATAIN to HWDATA only if no dtim or cache.
|
||||||
if(`DMEM == `MEM_BUS)
|
if(0)
|
||||||
subwordwrite sww(
|
subwordwrite sww(
|
||||||
.HRDATA,
|
.HRDATA,
|
||||||
.HADDRD, .HSIZED,
|
.HADDRD, .HSIZED,
|
||||||
|
Loading…
Reference in New Issue
Block a user