In reply to naveen-y:
If you connected bus monitor to predictor then you don’t need to set_auto_predict(1).
Basically,
- Write operation will update desired/mirrored value as follow:
- Update desired mirror with written value using set(value) function
- Perform write operation
- Update both desired and mirrored value using do_predict function (if auto_predict is enable, and write operation is successfull)
- Write transaction on the monitor bus will be captured to predictor (in your case), then desired and mirrored value will be updated one more time using do_predict function in predictor.
- Read operation will update desired/mirrored value as follow:
- Perform read operation
- Read transaction on the monitor bus will be captured to predictor, then desired and mirrored value will be updated using do_predict function in predictor.
- Update both desired and mirrored value using do_predict function (if auto_predict is enable, and read operation is successful)
Please follow the flow above to apply your case. From my experience, maybe you get mirrored/desired value too fast then you see the mismatched. To avoid a conflict when updating desired/mirrored value in predictor and in get/set function, you should add some waited times after write/read function to make sure the operation in predictor is successful first before you can get these values.