Open MikeOpenHWGroup opened 1 year ago
As Dave said, in UVM the run_phase
starts in parallel with other run time phases like reset_phase
and configure_phase
. One of the base testcase here uses run_phase
which only contains watchdog_timer()
, which is essentially used to stop simulation if timeout is reached. So, according to this testcase it works fine even the other run time phases are used along with run_phase
. But if some functional sequence needs to be started in run_phase
, then as Dave said main_phase
must be used to run after configure_phase
. Correct me if I am wrong.
You are not wrong @subbu009. This is an outstanding issue in CORE-V-VERIF. Resolving this issue would allow the testbench to support "on-the-fly" reset. Would you be interesting in submitting a fix for this?
Yes, I am interested. Help me get started
Hi @MikeOpenHWGroup ,
If we replace the run_phase
with main_phase
, then all the three phases reset_phase
, configure_phase
and main_phase
will run one after the other as expected. I guess this will fix the issue explained by Dave.
About the "on-the-fly" reset, could you please elaborate more on the task as what is expected?
If we replace the run_phase with main_phase, then all the three phases reset_phase, configure_phase and main_phase will run one after the other as expected.
Yes, that is my understanding as well.
About the "on-the-fly" reset, could you please elaborate more on the task as what is expected?
Essentially this means randomly asserting reset at some time after the initial reset is de-asserted. This implies that the RTL will be executing a test-program and then jump back to the initial boot-address and re-start executing the same test-program. These on-the-fly resets are handy for detecting un-initialized conditions in the RTL. Typically, the testbench will have a large amount of state and trying to figure out which should be discarded and which should be kept (if any) when an on-the-fly reset occurs is a difficult problem.
Email from dave.rich@siemens.com: