SVA (утверждения SystemVerilog): разница между $ assertoff и $ assertkill?

В чем разница между $assertoff; и $assertkill; с утверждениями SystemVerilog?

Они оба, кажется, останавливают выполнение утверждений.


person Morgan    schedule 01.03.2013    source источник


Ответы (2)


$assertoff остановит утверждения, кроме тех, которые уже находятся в активном состоянии.

Утверждения активны после срабатывания и ожидают перехода в состояние «сбой» или «завершено». $assertoff не остановит и не уничтожит утверждения в активном состоянии.

$assertkill остановит все утверждения, переведя все в состояние off.

Из справки Cadence:

$ assertoff
Приостанавливает проверку всех указанных утверждений до тех пор, пока не встретится $ asserton. Утверждение, которое уже выполняется, включая блоки действий утверждения, продолжит выполнение.

$ assertkill
Прекращает проверку всех указанных утверждений, которые выполняются в данный момент, затем приостанавливает проверку всех указанных утверждений до тех пор, пока не будет обнаружен $ asserton.
NB: В соответствии со стандартом IEEE 1800 SystemVerilog задача $ assertkill не влияет на немедленные и вневременные параллельные утверждения из-за проблем с планированием.

person Morgan    schedule 01.03.2013

$ assertoff - это ничто, но он перестает проверять все указанные утверждения, пока не будет включена следующая последовательность $ assert.

Пока вы обрабатываете утверждение, это не влияет на то, пройдено ли мое утверждение или нет.

person CHINTAN SHAH    schedule 30.04.2015