I dont think an assert final is going to work here since SDF timing delays the signal edge by actual time.
You can use a clock delay range operator to check for this.
@(posedge clk) a |-> ##[0:1] b;
Checks for b to go high starting from 0 all the way to 1 clock cycle.
assuming your delay isnt greater than 1 clock cycle.