Почему произошла петля нулевой задержки?
Из-за состояние гонки или неоднозначного стиль кодирования нулевого цикла задержки может получить генерируемое что приводит к имитации завис или бесконечного моделирование времени
Каковы причины нулевого цикла задержки?
Одним из примеров общего поведения петли следующим образом:
always @ (x)
begin
y = 1'b0;
...
case (x)
...
1'b1: y = 1'b1;
...
endcase
end
always @ (y)
begin
x = 1'b0;
...
case (y)
...
1'b1: x = 1'b1;
...
endcase
end
Здесь, в этом есть возможность цикла, когда оба x
и y
устанавливается в 1, что вызывает новое событие и триггер операторы case называются нулевым циклом задержки из-за запуска события в одно и то же время, чтобы избежать использования задержки # 0, которая заставляет событие произойти в конце временного шага, но этот тип стиля кодирования не рекомендуется
- Для отладки этой проблемы
Из моего понимания VCS имеет переключатель под названием + VCS + loopreport, который будет генерировать подробный отчет о нулевом цикле задержки и genrerate текстового файла, из который вы можете устранить или отладки эти петли эффективно