Далее подразумевается, что эта директива влияет на «разработку» (возможно, задерживает ее? С какой целью?), Что мое текущее понимание в значительной степени аналогично шагу выдачи кода традиционной компиляции, когда verilog конвертируется в«фактическое» аппаратное представление?
Не совсем.Разработка является частью спецификации языка и является обязательным шагом для обработки проекта.Обработка Verilog обычно требует двух отдельных шагов, которые спецификация описывает как разбор и уточнение .SystemVerilog более точно определяет их и называет их компиляция и разработка .
1364-2005: Разработка - это процесс, который происходит между анализом и моделированием.Он связывает модули с экземплярами модулей, строит иерархию модели, вычисляет значения параметров, разрешает иерархические имена, устанавливает сетевое соединение и подготавливает все это для моделирования.С добавлением генерирующих конструкций порядок выполнения этих задач становится существенным.
В Verilog есть некоторые конструкции, которые делают невозможным полное построение модуля, а затем «связывание» его с более крупным проектом позже.Рассмотрим следующий код:
module mod1 #(parameter WIDTH = 0) (output [WIDTH:0] port1);
generate
if(WIDTH > 3)
assign port1 = {WIDTH{1'b1}};
else
assign port1 = {WIDTH{1'b0}};
endgenerate
endmodule
Когда читается вышеупомянутый модуль, синтаксический анализатор не знает, каким будет WIDTH, потому что данное значение может быть переопределено при создании экземпляра.Это предотвращает разрешение кода внутри блока генерации, пока не будет прочитан весь исходный текст Verilog.Ситуация усложняется с помощью defparams, предварительных объявлений функций и иерархических ссылок.
Команда // synopsys template
и термин «шаблоны» не являются частью verilog.Учитывая ответ инструмента и документ, который вы связали, он говорит инструменту, что любой модуль, читаемый после команды, будет нуждаться в определении параметра, поэтому его не следует разрабатывать при чтении.Например, список соединений не будет иметь никаких переопределений параметров в экземплярах, поэтому, если вы хотите поместить экземпляр RTL в список соединений, вам нужно будет напрямую сообщить инструменту синтеза, какими должны быть параметры.