mirror of
https://github.com/openhwgroup/cvw.git
synced 2025-04-25 06:17:10 -04:00
Finished removing generate statements
This commit is contained in:
parent
6d4714651c
commit
d17a305538
9 changed files with 151 additions and 220 deletions
|
@ -71,14 +71,13 @@ module fcmp (
|
||||||
// - return 0 if comparison with NaN (unordered)
|
// - return 0 if comparison with NaN (unordered)
|
||||||
|
|
||||||
logic [`FLEN-1:0] QNaNX, QNaNY;
|
logic [`FLEN-1:0] QNaNX, QNaNY;
|
||||||
generate if(`IEEE754) begin
|
if(`IEEE754) begin
|
||||||
assign QNaNX = FmtE ? {XSgnE, XExpE, 1'b1, XManE[`NF-2:0]} : {{32{1'b1}}, XSgnE, XExpE[7:0], 1'b1, XManE[50:29]};
|
assign QNaNX = FmtE ? {XSgnE, XExpE, 1'b1, XManE[`NF-2:0]} : {{32{1'b1}}, XSgnE, XExpE[7:0], 1'b1, XManE[50:29]};
|
||||||
assign QNaNY = FmtE ? {YSgnE, YExpE, 1'b1, YManE[`NF-2:0]} : {{32{1'b1}}, YSgnE, YExpE[7:0], 1'b1, YManE[50:29]};
|
assign QNaNY = FmtE ? {YSgnE, YExpE, 1'b1, YManE[`NF-2:0]} : {{32{1'b1}}, YSgnE, YExpE[7:0], 1'b1, YManE[50:29]};
|
||||||
end else begin
|
end else begin
|
||||||
assign QNaNX = FmtE ? {1'b0, XExpE, 1'b1, 51'b0} : {{32{1'b1}}, 1'b0, XExpE[7:0], 1'b1, 22'b0};
|
assign QNaNX = FmtE ? {1'b0, XExpE, 1'b1, 51'b0} : {{32{1'b1}}, 1'b0, XExpE[7:0], 1'b1, 22'b0};
|
||||||
assign QNaNY = FmtE ? {1'b0, YExpE, 1'b1, 51'b0} : {{32{1'b1}}, 1'b0, YExpE[7:0], 1'b1, 22'b0};
|
assign QNaNY = FmtE ? {1'b0, YExpE, 1'b1, 51'b0} : {{32{1'b1}}, 1'b0, YExpE[7:0], 1'b1, 22'b0};
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
|
|
||||||
always_comb begin
|
always_comb begin
|
||||||
case (FOpCtrlE[2:0])
|
case (FOpCtrlE[2:0])
|
||||||
|
|
|
@ -156,7 +156,6 @@ module SDC
|
||||||
flopenl #(3) CommandReg(HCLK, ~HRESETn, (HADDRDelay == 'h8 & RegWrite) | (CommandCompleted),
|
flopenl #(3) CommandReg(HCLK, ~HRESETn, (HADDRDelay == 'h8 & RegWrite) | (CommandCompleted),
|
||||||
CommandCompleted ? '0 : HWDATA[2:0], '0, Command);
|
CommandCompleted ? '0 : HWDATA[2:0], '0, Command);
|
||||||
|
|
||||||
generate
|
|
||||||
if (`XLEN == 64) begin
|
if (`XLEN == 64) begin
|
||||||
flopenr #(64-9) AddressReg(HCLK, ~HRESETn, (HADDRDelay == 'h10 & RegWrite),
|
flopenr #(64-9) AddressReg(HCLK, ~HRESETn, (HADDRDelay == 'h10 & RegWrite),
|
||||||
HWDATA[`XLEN-1:9], Address);
|
HWDATA[`XLEN-1:9], Address);
|
||||||
|
@ -166,7 +165,6 @@ module SDC
|
||||||
flopenr #(32) AddressHighReg(HCLK, ~HRESETn, (HADDRDelay == 'h14 & RegWrite),
|
flopenr #(32) AddressHighReg(HCLK, ~HRESETn, (HADDRDelay == 'h14 & RegWrite),
|
||||||
HWDATA, Address[63:32]);
|
HWDATA, Address[63:32]);
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
|
|
||||||
flopen #(`XLEN) DataReg(HCLK, (HADDRDelay == 'h18 & RegWrite),
|
flopen #(`XLEN) DataReg(HCLK, (HADDRDelay == 'h18 & RegWrite),
|
||||||
HWDATA, SDCWriteData);
|
HWDATA, SDCWriteData);
|
||||||
|
@ -175,7 +173,6 @@ module SDC
|
||||||
|
|
||||||
assign Status = {ErrorCode, InvalidCommand, SDCBusy, SDCInitialized};
|
assign Status = {ErrorCode, InvalidCommand, SDCBusy, SDCInitialized};
|
||||||
|
|
||||||
generate
|
|
||||||
if(`XLEN == 64) begin
|
if(`XLEN == 64) begin
|
||||||
always_comb
|
always_comb
|
||||||
case(HADDRDelay[4:0])
|
case(HADDRDelay[4:0])
|
||||||
|
@ -200,7 +197,6 @@ module SDC
|
||||||
default: HREADSDC = {24'b0, CLKDiv};
|
default: HREADSDC = {24'b0, CLKDiv};
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
|
|
||||||
|
|
||||||
for(index = 0; index < 4096/`XLEN; index++) begin
|
for(index = 0; index < 4096/`XLEN; index++) begin
|
||||||
|
@ -208,7 +204,6 @@ module SDC
|
||||||
end
|
end
|
||||||
|
|
||||||
assign SDCReadDataPreNibbleSwap = ReadData512ByteWords[WordCount];
|
assign SDCReadDataPreNibbleSwap = ReadData512ByteWords[WordCount];
|
||||||
generate
|
|
||||||
if(`XLEN == 64) begin
|
if(`XLEN == 64) begin
|
||||||
assign SDCReadData = {SDCReadDataPreNibbleSwap[59:56], SDCReadDataPreNibbleSwap[63:60],
|
assign SDCReadData = {SDCReadDataPreNibbleSwap[59:56], SDCReadDataPreNibbleSwap[63:60],
|
||||||
SDCReadDataPreNibbleSwap[51:48], SDCReadDataPreNibbleSwap[55:52],
|
SDCReadDataPreNibbleSwap[51:48], SDCReadDataPreNibbleSwap[55:52],
|
||||||
|
@ -224,7 +219,6 @@ module SDC
|
||||||
SDCReadDataPreNibbleSwap[11:8], SDCReadDataPreNibbleSwap[15:12],
|
SDCReadDataPreNibbleSwap[11:8], SDCReadDataPreNibbleSwap[15:12],
|
||||||
SDCReadDataPreNibbleSwap[3:0], SDCReadDataPreNibbleSwap[7:4]};
|
SDCReadDataPreNibbleSwap[3:0], SDCReadDataPreNibbleSwap[7:4]};
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
|
|
||||||
flopenr #($clog2(4096/`XLEN)) WordCountReg
|
flopenr #($clog2(4096/`XLEN)) WordCountReg
|
||||||
(.clk(HCLK),
|
(.clk(HCLK),
|
||||||
|
|
|
@ -88,17 +88,6 @@ module clkdivider #(parameter integer g_COUNT_WIDTH)
|
||||||
|
|
||||||
assign w_fd_D = ~ r_fd_Q;
|
assign w_fd_D = ~ r_fd_Q;
|
||||||
|
|
||||||
|
if(`FPGA) BUFGMUX clkMux(.I1(r_fd_Q), .I0(i_CLK), .S(i_EN), .O(o_CLK));
|
||||||
generate
|
else assign o_CLK = i_EN ? r_fd_Q : i_CLK;
|
||||||
if(`FPGA) begin
|
|
||||||
BUFGMUX
|
|
||||||
clkMux(.I1(r_fd_Q),
|
|
||||||
.I0(i_CLK),
|
|
||||||
.S(i_EN),
|
|
||||||
.O(o_CLK));
|
|
||||||
|
|
||||||
end else begin
|
|
||||||
assign o_CLK = i_EN ? r_fd_Q : i_CLK;
|
|
||||||
end
|
|
||||||
endgenerate
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
@ -257,12 +257,9 @@ module uartPC16550D(
|
||||||
else if (fifoenabled & ~rxfifoempty & rxbaudpulse & ~rxfifotimeout) rxtimeoutcnt <= #1 rxtimeoutcnt+1; // *** not right
|
else if (fifoenabled & ~rxfifoempty & rxbaudpulse & ~rxfifotimeout) rxtimeoutcnt <= #1 rxtimeoutcnt+1; // *** not right
|
||||||
end
|
end
|
||||||
|
|
||||||
generate
|
// ***explain why
|
||||||
if(`QEMU)
|
if(`QEMU) assign rxcentered = rxbaudpulse & (rxoversampledcnt[1:0] == 2'b10); // implies rxstate = UART_ACTIVE
|
||||||
assign rxcentered = rxbaudpulse & (rxoversampledcnt[1:0] == 2'b10); // implies rxstate = UART_ACTIVE
|
else assign rxcentered = rxbaudpulse & (rxoversampledcnt == 4'b1000); // implies rxstate = UART_ACTIVE
|
||||||
else
|
|
||||||
assign rxcentered = rxbaudpulse & (rxoversampledcnt == 4'b1000); // implies rxstate = UART_ACTIVE
|
|
||||||
endgenerate
|
|
||||||
|
|
||||||
assign rxbitsexpected = 4'd1 + (4'd5 + {2'b00, LCR[1:0]}) + {3'b000, LCR[3]} + 4'd1; // start bit + data bits + (parity bit) + stop bit
|
assign rxbitsexpected = 4'd1 + (4'd5 + {2'b00, LCR[1:0]}) + {3'b000, LCR[3]} + 4'd1; // start bit + data bits + (parity bit) + stop bit
|
||||||
|
|
||||||
|
@ -325,7 +322,6 @@ module uartPC16550D(
|
||||||
// detect any errors in rx fifo
|
// detect any errors in rx fifo
|
||||||
// although rxfullbit looks like a combinational loop, in one bit rxfifotail == i and breaks the loop
|
// although rxfullbit looks like a combinational loop, in one bit rxfifotail == i and breaks the loop
|
||||||
// tail is normally higher than head, but might wrap around. unwrapped variable adds 16 to eliminate wrapping
|
// tail is normally higher than head, but might wrap around. unwrapped variable adds 16 to eliminate wrapping
|
||||||
generate
|
|
||||||
assign rxfifotailunwrapped = rxfifotail < rxfifohead ? {1'b1, rxfifotail} : {1'b0, rxfifotail};
|
assign rxfifotailunwrapped = rxfifotail < rxfifohead ? {1'b1, rxfifotail} : {1'b0, rxfifotail};
|
||||||
genvar i;
|
genvar i;
|
||||||
for (i=0; i<32; i++) begin:rxfull
|
for (i=0; i<32; i++) begin:rxfull
|
||||||
|
@ -340,7 +336,6 @@ module uartPC16550D(
|
||||||
else
|
else
|
||||||
assign rxfullbit[0] = ((rxfifohead==i) | rxfullbit[15]) & (rxfifotail != i);*/
|
assign rxfullbit[0] = ((rxfifohead==i) | rxfullbit[15]) & (rxfifotail != i);*/
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
assign rxfifohaserr = |(RXerrbit & rxfullbit);
|
assign rxfifohaserr = |(RXerrbit & rxfullbit);
|
||||||
|
|
||||||
// receive buffer register and ready bit
|
// receive buffer register and ready bit
|
||||||
|
@ -383,13 +378,9 @@ module uartPC16550D(
|
||||||
end
|
end
|
||||||
|
|
||||||
assign txbitsexpected = 4'd1 + (4'd5 + {2'b00, LCR[1:0]}) + {3'b000, LCR[3]} + 4'd1 + {3'b000, LCR[2]} - 4'd1; // start bit + data bits + (parity bit) + stop bit(s)
|
assign txbitsexpected = 4'd1 + (4'd5 + {2'b00, LCR[1:0]}) + {3'b000, LCR[3]} + 4'd1 + {3'b000, LCR[2]} - 4'd1; // start bit + data bits + (parity bit) + stop bit(s)
|
||||||
generate
|
// *** explain; is this necessary?
|
||||||
if (`QEMU)
|
if (`QEMU) assign txnextbit = txbaudpulse & (txoversampledcnt[1:0] == 2'b00); // implies txstate = UART_ACTIVE
|
||||||
assign txnextbit = txbaudpulse & (txoversampledcnt[1:0] == 2'b00); // implies txstate = UART_ACTIVE
|
else assign txnextbit = txbaudpulse & (txoversampledcnt == 4'b0000); // implies txstate = UART_ACTIVE
|
||||||
else
|
|
||||||
assign txnextbit = txbaudpulse & (txoversampledcnt == 4'b0000); // implies txstate = UART_ACTIVE
|
|
||||||
endgenerate
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
// transmit holding register, shift register, FIFO
|
// transmit holding register, shift register, FIFO
|
||||||
|
|
|
@ -304,7 +304,6 @@ module wallypipelinedhart (
|
||||||
.FlushF, .FlushD, .FlushE, .FlushM, .FlushW
|
.FlushF, .FlushD, .FlushE, .FlushM, .FlushW
|
||||||
); // global stall and flush control
|
); // global stall and flush control
|
||||||
|
|
||||||
generate
|
|
||||||
if (`ZICSR_SUPPORTED) begin:priv
|
if (`ZICSR_SUPPORTED) begin:priv
|
||||||
privileged priv(
|
privileged priv(
|
||||||
.clk, .reset,
|
.clk, .reset,
|
||||||
|
@ -385,7 +384,4 @@ module wallypipelinedhart (
|
||||||
assign IllegalFPUInstrD = 1;
|
assign IllegalFPUInstrD = 1;
|
||||||
assign SetFflagsM = 0;
|
assign SetFflagsM = 0;
|
||||||
end
|
end
|
||||||
|
|
||||||
endgenerate
|
|
||||||
// Priveleged block operates in M and W stages, handling CSRs and exceptions
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
@ -121,11 +121,9 @@ module sdModel
|
||||||
integer sdModel_file_desc;
|
integer sdModel_file_desc;
|
||||||
|
|
||||||
genvar i;
|
genvar i;
|
||||||
generate
|
|
||||||
for(i=0; i<4; i=i+1) begin:CRC_16_gen
|
for(i=0; i<4; i=i+1) begin:CRC_16_gen
|
||||||
sd_crc_16 CRC_16_i (crcDat_in[i],crcDat_en, sdClk, crcDat_rst, crcDat_out[i]);
|
sd_crc_16 CRC_16_i (crcDat_in[i],crcDat_en, sdClk, crcDat_rst, crcDat_out[i]);
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
|
|
||||||
sd_crc_7 crc_7
|
sd_crc_7 crc_7
|
||||||
(
|
(
|
||||||
|
|
|
@ -763,17 +763,12 @@ string tests32f[] = '{
|
||||||
.done(DCacheFlushDone));
|
.done(DCacheFlushDone));
|
||||||
|
|
||||||
|
|
||||||
generate
|
|
||||||
// initialize the branch predictor
|
// initialize the branch predictor
|
||||||
if (`BPRED_ENABLED == 1) begin : bpred
|
if (`BPRED_ENABLED == 1)
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
$readmemb(`TWO_BIT_PRELOAD, dut.wallypipelinedsoc.hart.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem);
|
$readmemb(`TWO_BIT_PRELOAD, dut.wallypipelinedsoc.hart.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem);
|
||||||
$readmemb(`BTB_PRELOAD, dut.wallypipelinedsoc.hart.ifu.bpred.bpred.TargetPredictor.memory.mem);
|
$readmemb(`BTB_PRELOAD, dut.wallypipelinedsoc.hart.ifu.bpred.bpred.TargetPredictor.memory.mem);
|
||||||
end
|
end
|
||||||
end
|
|
||||||
endgenerate
|
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module riscvassertions();
|
module riscvassertions();
|
||||||
|
@ -830,12 +825,10 @@ module DCacheFlushFSM
|
||||||
|
|
||||||
logic [`XLEN-1:0] ShadowRAM[`RAM_BASE>>(1+`XLEN/32):(`RAM_RANGE+`RAM_BASE)>>1+(`XLEN/32)];
|
logic [`XLEN-1:0] ShadowRAM[`RAM_BASE>>(1+`XLEN/32):(`RAM_RANGE+`RAM_BASE)>>1+(`XLEN/32)];
|
||||||
|
|
||||||
generate
|
|
||||||
for(index = 0; index < numlines; index++) begin
|
for(index = 0; index < numlines; index++) begin
|
||||||
for(way = 0; way < numways; way++) begin
|
for(way = 0; way < numways; way++) begin
|
||||||
for(cacheWord = 0; cacheWord < numwords; cacheWord++) begin
|
for(cacheWord = 0; cacheWord < numwords; cacheWord++) begin
|
||||||
copyShadow #(.tagstart(tagstart),
|
copyShadow #(.tagstart(tagstart), .loglinebytelen(loglinebytelen))
|
||||||
.loglinebytelen(loglinebytelen))
|
|
||||||
copyShadow(.clk,
|
copyShadow(.clk,
|
||||||
.start,
|
.start,
|
||||||
.tag(testbench.dut.wallypipelinedsoc.hart.lsu.dcache.MemWay[way].CacheTagMem.StoredData[index]),
|
.tag(testbench.dut.wallypipelinedsoc.hart.lsu.dcache.MemWay[way].CacheTagMem.StoredData[index]),
|
||||||
|
@ -852,7 +845,6 @@ module DCacheFlushFSM
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
endgenerate
|
|
||||||
|
|
||||||
integer i, j, k;
|
integer i, j, k;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
||||||
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// When letting Wally go for it, let wally generate own interrupts
|
// When letting Wally go for it, let wally make own interrupts
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
|
|
||||||
`include "wally-config.vh"
|
`include "wally-config.vh"
|
||||||
|
@ -280,13 +280,6 @@ module testbench;
|
||||||
|
|
||||||
`INIT_CHECKPOINT_SIMPLE_ARRAY(RF, [`XLEN-1:0],31,1);
|
`INIT_CHECKPOINT_SIMPLE_ARRAY(RF, [`XLEN-1:0],31,1);
|
||||||
`INIT_CHECKPOINT_SIMPLE_ARRAY(HPMCOUNTER, [`XLEN-1:0],`COUNTERS-1,3);
|
`INIT_CHECKPOINT_SIMPLE_ARRAY(HPMCOUNTER, [`XLEN-1:0],`COUNTERS-1,3);
|
||||||
generate
|
|
||||||
genvar i;
|
|
||||||
/* -----\/----- EXCLUDED -----\/-----
|
|
||||||
`INIT_CHECKPOINT_GENBLK_ARRAY(PMP_BASE, PMPCFG, [7:0],`PMP_ENTRIES-1,0);
|
|
||||||
`INIT_CHECKPOINT_GENBLK_ARRAY(PMP_BASE, PMPADDR, [`XLEN-1:0],`PMP_ENTRIES-1,0);
|
|
||||||
-----/\----- EXCLUDED -----/\----- */
|
|
||||||
endgenerate
|
|
||||||
`INIT_CHECKPOINT_VAL(PC, [`XLEN-1:0]);
|
`INIT_CHECKPOINT_VAL(PC, [`XLEN-1:0]);
|
||||||
`INIT_CHECKPOINT_VAL(MEDELEG, [`XLEN-1:0]);
|
`INIT_CHECKPOINT_VAL(MEDELEG, [`XLEN-1:0]);
|
||||||
`INIT_CHECKPOINT_VAL(MIDELEG, [`XLEN-1:0]);
|
`INIT_CHECKPOINT_VAL(MIDELEG, [`XLEN-1:0]);
|
||||||
|
|
|
@ -296,13 +296,8 @@ logic [3:0] dummy;
|
||||||
// or sw gp, -56(t0)
|
// or sw gp, -56(t0)
|
||||||
// or on a jump to self infinite loop (6f) for RISC-V Arch tests
|
// or on a jump to self infinite loop (6f) for RISC-V Arch tests
|
||||||
logic ecf; // remove this once we don't rely on old Imperas tests with Ecalls
|
logic ecf; // remove this once we don't rely on old Imperas tests with Ecalls
|
||||||
generate
|
if (`ZICSR_SUPPORTED) assign ecf = dut.hart.priv.priv.EcallFaultM;
|
||||||
if (`ZICSR_SUPPORTED) begin
|
else assign ecf = 0;
|
||||||
assign ecf = dut.hart.priv.priv.EcallFaultM;
|
|
||||||
end else begin
|
|
||||||
assign ecf = 0;
|
|
||||||
end
|
|
||||||
endgenerate
|
|
||||||
assign DCacheFlushStart = ecf &
|
assign DCacheFlushStart = ecf &
|
||||||
(dut.hart.ieu.dp.regf.rf[3] == 1 |
|
(dut.hart.ieu.dp.regf.rf[3] == 1 |
|
||||||
(dut.hart.ieu.dp.regf.we3 &
|
(dut.hart.ieu.dp.regf.we3 &
|
||||||
|
@ -310,24 +305,17 @@ logic [3:0] dummy;
|
||||||
dut.hart.ieu.dp.regf.wd3 == 1)) |
|
dut.hart.ieu.dp.regf.wd3 == 1)) |
|
||||||
(dut.hart.ifu.InstrM == 32'h6f | dut.hart.ifu.InstrM == 32'hfc32a423 | dut.hart.ifu.InstrM == 32'hfc32a823) & dut.hart.ieu.c.InstrValidM;
|
(dut.hart.ifu.InstrM == 32'h6f | dut.hart.ifu.InstrM == 32'hfc32a423 | dut.hart.ifu.InstrM == 32'hfc32a823) & dut.hart.ieu.c.InstrValidM;
|
||||||
|
|
||||||
// **** Fix when the check in the shadow ram is fixed.
|
|
||||||
DCacheFlushFSM DCacheFlushFSM(.clk(clk),
|
DCacheFlushFSM DCacheFlushFSM(.clk(clk),
|
||||||
.reset(reset),
|
.reset(reset),
|
||||||
.start(DCacheFlushStart),
|
.start(DCacheFlushStart),
|
||||||
.done(DCacheFlushDone));
|
.done(DCacheFlushDone));
|
||||||
|
|
||||||
|
|
||||||
generate
|
|
||||||
// initialize the branch predictor
|
// initialize the branch predictor
|
||||||
if (`BPRED_ENABLED == 1) begin : bpred
|
if (`BPRED_ENABLED == 1)
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
$readmemb(`TWO_BIT_PRELOAD, dut.hart.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem);
|
$readmemb(`TWO_BIT_PRELOAD, dut.hart.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem);
|
||||||
$readmemb(`BTB_PRELOAD, dut.hart.ifu.bpred.bpred.TargetPredictor.memory.mem);
|
$readmemb(`BTB_PRELOAD, dut.hart.ifu.bpred.bpred.TargetPredictor.memory.mem);
|
||||||
end
|
end
|
||||||
end
|
|
||||||
endgenerate
|
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module riscvassertions;
|
module riscvassertions;
|
||||||
|
@ -370,7 +358,6 @@ module DCacheFlushFSM
|
||||||
|
|
||||||
logic [`XLEN-1:0] ShadowRAM[`RAM_BASE>>(1+`XLEN/32):(`RAM_RANGE+`RAM_BASE)>>1+(`XLEN/32)];
|
logic [`XLEN-1:0] ShadowRAM[`RAM_BASE>>(1+`XLEN/32):(`RAM_RANGE+`RAM_BASE)>>1+(`XLEN/32)];
|
||||||
|
|
||||||
generate
|
|
||||||
if(`MEM_DCACHE) begin
|
if(`MEM_DCACHE) begin
|
||||||
localparam integer numlines = testbench.dut.hart.lsu.dcache.dcache.NUMLINES;
|
localparam integer numlines = testbench.dut.hart.lsu.dcache.dcache.NUMLINES;
|
||||||
localparam integer numways = testbench.dut.hart.lsu.dcache.dcache.NUMWAYS;
|
localparam integer numways = testbench.dut.hart.lsu.dcache.dcache.NUMWAYS;
|
||||||
|
@ -430,15 +417,7 @@ module DCacheFlushFSM
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
endgenerate
|
flop #(1) doneReg(.clk, .d(start), .q(done));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
flop #(1) doneReg(.clk(clk),
|
|
||||||
.d(start),
|
|
||||||
.q(done));
|
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module copyShadow
|
module copyShadow
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue