В чем разница между $assertoff;
и $assertkill;
с утверждениями SystemVerilog?
Они оба, кажется, останавливают выполнение утверждений.
В чем разница между $assertoff;
и $assertkill;
с утверждениями SystemVerilog?
Они оба, кажется, останавливают выполнение утверждений.
$assertoff
остановит утверждения, кроме тех, которые уже находятся в активном состоянии.
Утверждения активны после срабатывания и ожидают перехода в состояние «сбой» или «завершено». $assertoff
не остановит и не уничтожит утверждения в активном состоянии.
$assertkill
остановит все утверждения, переведя все в состояние off.
Из справки Cadence:
$ assertoff
Приостанавливает проверку всех указанных утверждений до тех пор, пока не встретится $ asserton. Утверждение, которое уже выполняется, включая блоки действий утверждения, продолжит выполнение.$ assertkill
Прекращает проверку всех указанных утверждений, которые выполняются в данный момент, затем приостанавливает проверку всех указанных утверждений до тех пор, пока не будет обнаружен $ asserton.
NB: В соответствии со стандартом IEEE 1800 SystemVerilog задача $ assertkill не влияет на немедленные и вневременные параллельные утверждения из-за проблем с планированием.
$ assertoff - это ничто, но он перестает проверять все указанные утверждения, пока не будет включена следующая последовательность $ assert.
Пока вы обрабатываете утверждение, это не влияет на то, пройдено ли мое утверждение или нет.