2

a test I've wrote does not finishes after the MAIN sequence is finished. I did not raise TEST_DONE objection.. and the objections I did raised were all dropped. Actually the test finished long after all sequence's flow is done, on TEST BENCH timeout.. Do you have any idea what may prevent a test from ending? I really appreciate any help you can provide.

Halona
  • 1,475
  • 1
  • 15
  • 26
  • 1
    If that's caused by a pending objection you could try "show objections" on the Specman command line. Is the simulation time still progressing in the end? – Thorsten Mar 04 '16 at 09:10
  • 1
    on 2nd thought, the problem may be that you did NOT use TEST_DONE. In that case the test can only be stopped by a stop_run(). – Thorsten Mar 04 '16 at 09:23

1 Answers1

2

The problem was that I've overridden the vr_ad_sequence's post_body() method and it turns out that it drops TEST_DONE (Specman UVM vr_ad package). The problem code:

To prevent the test from ending before all MY objections were dropped, the next code was added:

extend MAIN vr_ad_sequence {
    post_body()@sys.any is only {
        // Wait till all (my) objections are dropped
        sync true ( my_env.get_objection_counter(MY_OBJECTIONS) == 0 );
    };
};

The solution was: Change "is only" to "is first".

Halona
  • 1,475
  • 1
  • 15
  • 26