Есть ли какое-либо особое значение скобок в Verilog при использовании для переноса параметра? - PullRequest
3 голосов
/ 10 октября 2011

У меня есть фрагмент кода Verilog, над которым работает программист, который больше не работает в компании, в которой я работаю.Ниже приводится выдержка:

parameter mstrobe = 10;
.
.
.
assign #(mstrobe) sclk=iclk;

(sclk - провод, iclk назначено значение системных часов)

У меня также есть отдельный Perl-скрипт для выполнениянекоторые манипуляции с существующими файлами Verilog.Этот скрипт задыхается при разборе #(mstrobe), потому что mstrobe заключен в круглые скобки.Хотя я могу это легко исправить, я хочу знать, есть ли принципиальная разница между приведенным выше оператором assign и

assign #mstrobe sclk=iclk;

Я хочу быть уверен, что эти два оператора эквивалентны или, возможно, существуют лиСуществуют ли различия в синтаксисе в этом отношении между версиями Verilog (Verilog-2001, Verilog-2005, SystemVerilog).

Ответы [ 2 ]

3 голосов
/ 10 октября 2011

В вашем простом случае скобки не обязательны; в обоих случаях допустимый синтаксис, независимо от версии Verilog.

Скобки потребуются, если у вас есть более сложное выражение, например:

assign #(mstrobe/2) sclk=iclk;

На заметку, поскольку вы анализируете Verilog с помощью Perl, знаете ли вы Verilog-Perl ?

1 голос
/ 28 февраля 2012

В другой раз, когда скобки используются в этом контексте, это когда задержка указывает временной шаг. Ваш пример задержит 10 (или любой другой mstrobe) единиц времени, определенных вашей шкалой времени. Однако вы могли бы сделать # (10ps), где mstrobe = 10ps, это гарантировало бы, что вы задержите 10ps независимо от вашей шкалы времени. Я не уверен, если они необходимы при указании шкалы времени, но это хорошая практика кодирования.

...