UVVM / UVVM

UVVM (Universal VHDL Verification Methodology) is a free and Open Source Methodology and Library for very efficient VHDL verification of FPGA and ASIC – resulting also in significant quality improvement. Community forum: https://forum.uvvm.org/ UVVM.org: https://uvvm.org/
https://uvvm.github.io/
Apache License 2.0
372 stars 94 forks source link

(New) await_completion and executor_is_busy #127

Closed roynil closed 3 years ago

roynil commented 3 years ago

I have been using executor_is_busy to determine wether a vvc is busy or not. With the new implementation of await_completion this no longer work. It seems that executor_is_busy is still true when await_completion is done.

UVVM commented 3 years ago

Hi,

The new await_completion mechanism uses information from a central register shared_vvc_activity_register to check if the VVC is busy or not instead of the executor_is_busy signal. This central register is updated one delta cycle before the executor_is_busy signal, which is only used in the old await_completion mechanism, because they are updated in different procedures.

Depending on how you are using the signal you could account for that delta cycle or you could use the shared_vvc_activity_register to determine if a VVC is busy. You would need to first get the index of the VVC and then check the activity status:

shared_vvc_activity_register.priv_get_vvc_idx()
shared_vvc_activity_register.priv_get_vvc_activity()

Note that the new mechanism is used in all UVVM's VVCs and whichever new VVCs you create with the vvc_generator script, however if you have old custom VVCs they will still use the old mechanism.

Best Regards, Erick