Hi Anna,
Two thoughts on this.
First, there is no need for an expected SLVERR to be an actual test case error. The following is from p37 of the Axi4_VC_user_guide.pdf that is in the documentation repository:
By default, the expected value for BRESP and RRESP are OKAY. When testing a subordinates response to an incorrect address, a SLVERR is expected. AXI4 models support the enumeration values OKAY, EXOKAY, SLVERR, and DECERR of type Axi4RespEnumType. The code below shows how to set BRESP and RRESP to expect a SLVERR for a single transfer.
-- Write transfer that expects a SLVERR
SetAxi4Options(ManagerRec, BRESP, SLVERR) ;
Write(ManagerRec, X"0002_0000", X"0002_0101" ) ;
SetAxi4Options(ManagerRec, BRESP, OKAY) ;
-- Read transfer that expects a SLVERR
SetAxi4Options(ManagerRec, RRESP, SLVERR) ;
Read(ManagerRec, X"0004_000C", Data) ;
AffirmIfEqual(Data, X"0004_0404", "Manager Read Data: ") ;
SetAxi4Options(ManagerRec, RRESP, OKAY) ;
If there is an error that you cannot catch, you can also tell EndOfTestReports that the test is expected to generate an error by using a negative value with the ExternalErrors field. The following code tells EndOfTestReports that to pass, the test must generate exactly 5 Errors.
EndOfTestReports(ExternalErrors => (FAILURE => 0, ERROR => -5, WARNING => 0)) ;
When summing up errors from FAILURE, ERROR, and WARNING, the absolute value is used on each set of values before the addition, so that if there is 1 FAILURE and 4 ERRORS, the test will signal that a total of two errors occurred: 1 FAILURE and 1 ERROR (because it was 1 less than the 5 expected errors).