используя всегда @ * | смысл и недостатки - PullRequest
3 голосов
/ 07 мая 2011

Вы можете сказать, в чем смысл этого

  • всегда @ *

Есть ли какие-либо возможные побочные эффекты после использования этого утверждения?

Ответы [ 3 ]

4 голосов
/ 07 мая 2011

Это просто ярлык для перечисления всех проводов, от которых зависит блок always. Эти провода являются «списком чувствительности». Одним из преимуществ его использования является то, что синтезированный код вряд ли будет заботиться о том, что вы поместите в список чувствительности (кроме posedge и negedge), поскольку провода будут "физически" соединены вместе. Симулятор может полагаться на список, чтобы выбрать, какие события должны вызвать выполнение блока. Если вы измените блок и забудете обновить список, ваша симуляция может отличаться от фактического синтезированного поведения.

3 голосов
/ 04 октября 2013

В SystemVerilog мы бы предпочли, чтобы вы всегда использовали Always_comb begin ... end вместо Always @ *.

Большой недостаток всегда @ * состоит в том, что когда некоторая ваша комбинаторная логика включает в себя константы, всегда@ * может не сработать в момент времени 0, ему нужно увидеть изменение сигнала для запуска.Always_comb гарантирует запуск по крайней мере один раз в момент времени 0.

Еще одним преимуществом Always_comb является то, что он выполняет встроенные вызовы функций.Если вы вызываете функцию, а тело функции ссылается на сигнал, не переданный в качестве аргумента, всегда @ * не будет чувствительным к этому сигналу.

2 голосов
/ 07 мая 2011

@ Бен Джексон ответил правильно.Ответ на вторую часть: нет никаких возможных побочных эффектов;Я считаю это рекомендуемой практикой комбинаторной логики.

...