The full SVA sequence (created by Zazz) is pretty intimidating:
property AW_W_B_completion;
int wcount;
int wid;
@(posedge ACLK)
(AWVALID & AWREADY) |-> (1'b1, wcount=AWLEN+1) ##0 (1'b1, wid=AWID) ##0
(
( ( (WVALID & WREADY & (WID==wid)) [->1] ) ##0 (1'b1, wcount=wcount-1) ) [*1:16]
)
##0 (WLAST & (wcount==0)) ##0
(
(##[0:bresp_timeout] (1'b1)) intersect
( (BVALID & BREADY & (BID==wid)) [->1] )
);
endproperty