From 99a15e7897e46fffdbc6f3bfd1a28f1c9c5dd229 Mon Sep 17 00:00:00 2001 From: Skylar Litz Date: Thu, 11 Nov 2021 09:35:51 -0800 Subject: [PATCH] fix timing of delayed interrupt --- wally-pipelined/testbench/testbench-linux.sv | 24 ++++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/wally-pipelined/testbench/testbench-linux.sv b/wally-pipelined/testbench/testbench-linux.sv index 249cf3902..2ca31e582 100644 --- a/wally-pipelined/testbench/testbench-linux.sv +++ b/wally-pipelined/testbench/testbench-linux.sv @@ -470,8 +470,12 @@ module testbench(); if(CheckMIPFutureE) CheckMIPFutureE <= 0; CheckMIPFutureM <= CheckMIPFutureE; if(CheckMIPFutureM) begin - if((ExpectedPCM != MepcExpected) & ((MepcExpected - ExpectedPCM) * (MepcExpected - ExpectedPCM) <= 16)) begin - RequestDelayedMIP = 1; + $display("%tns: ExpectedPCM %x",$time,ExpectedPCM); + $display("%tns: ExpectedPCE %x",$time,ExpectedPCE); + $display("%tns: ExpectedPCW %x",$time,ExpectedPCW); + if((ExpectedPCE != MepcExpected) & ((MepcExpected - ExpectedPCE) * (MepcExpected - ExpectedPCE) <= 16)) begin + // if((ExpectedPCM != MepcExpected) & ((MepcExpected - ExpectedPCM) * (MepcExpected - ExpectedPCM) <= 16)) begin + RequestDelayedMIP <= 1; $display("%tns: Requesting Delayed MIP. Current MEPC value is %x",$time,MepcExpected); end else begin // update MIP immediately $display("%tns: Updating MIP to %x",$time,NextMIPexpected); @@ -488,14 +492,14 @@ module testbench(); $display("%tn: ExpectedCSRArrayM[NumCSRM] %x",$time,ExpectedCSRArrayM[NumCSRM]); $display("%tn: ExpectedCSRArrayValueM[NumCSRM] %x",$time,ExpectedCSRArrayValueM[NumCSRM]); - if((ExpectedPCM != MepcExpected) & ((MepcExpected - ExpectedPCM) * (MepcExpected - ExpectedPCM) <= 16)) begin - RequestDelayedMIP = 1; - $display("%tns: Requesting Delayed MIP. Current MEPC value is %x",$time,MepcExpected); - end else begin - $display("%tns: Updating MIP to %x",$time,NextMIPexpected); - MIPexpected = NextMIPexpected; - force dut.hart.priv.csr.genblk1.csri.MIP_REGW = MIPexpected; - end + // if((ExpectedPCM != MepcExpected) & ((MepcExpected - ExpectedPCM) * (MepcExpected - ExpectedPCM) <= 16)) begin + // RequestDelayedMIP = 1; + // $display("%tns: Requesting Delayed MIP. Current MEPC value is %x",$time,MepcExpected); + // end else begin + // $display("%tns: Updating MIP to %x",$time,NextMIPexpected); + // MIPexpected = NextMIPexpected; + // force dut.hart.priv.csr.genblk1.csri.MIP_REGW = MIPexpected; + // end end if(RequestDelayedMIP) begin $display("%tns: Executing Delayed MIP. Current MEPC value is %x",$time,dut.hart.priv.csr.genblk1.csrm.MEPC_REGW);