Какая разница между $stop и $finish в Verilog?

Я использую симулятор графического интерфейса, и оба они, похоже, делают то же самое.

Ответы

Ответ 1

$finish завершает симуляцию и возвращает управление операционной системе.

$stop приостанавливает симуляцию и помещает симулятор в интерактивный режим.

Ответ 2

В соответствии со стандартом IEEE для Verilog (1364-2005, раздел 17.4 "Задачи системы управления симуляцией" ), $stop должен приостановить симуляцию, а $finish должен сделать выход симулятора и передать управление хосту операционная система. Конечно, разные тренажеры могут реализовывать спецификацию по-разному, а не все симуляторы на 100% совместимы со спецификацией.

Документация для вашего симулятора может предоставить более подробное описание его поведения, особенно в отношении режимов графического интерфейса и командной строки.

Ответ 5

$stop - приостанавливает симуляцию, поэтому вы можете возобновить ее, используя команду fg в linux. В этом случае линза не будет выпущена, и процесс также не будет убит, потребляя память.

$finish - Моделирование завершено, поэтому освобождение лицензии и убийство процесса будут выполнены.

Ответ 6

$stop: Нежелательное завершение моделирования. Все действия системы приостановлены. $ finish: используется для освобождения компилятора.

Хорошая аналогия будет $finish - это как выключение компьютера, а $stop - это то, как внезапно вытащить вилку.

Ответ 7

Я использую графический интерфейс Modelsim. Когда у меня есть оператор $stop в симуляции, это как если бы я нажал кнопку остановки в верхней части графического интерфейса во время симуляции. Однако, если у меня есть инструкция $finish, GUI отобразит приглашение на выход, спрашивающее меня, хочу ли я полностью отказаться от modelsim.